<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jerry Shea on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/jerry-shea/</link><description>Articles written by Jerry Shea on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 15 May 2023 16:42:18 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/jerry-shea/index.xml" rel="self" type="application/rss+xml"/><item><title>Monitoring Event Loops for Blockages</title><link>https://foojayio.github.io/website/today/monitoring-event-loops-for-blockages/</link><pubDate>Mon, 15 May 2023 16:42:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/monitoring-event-loops-for-blockages/</guid><description>&lt;p&gt;Chronicle&amp;rsquo;s open source &lt;a href="https://github.com/OpenHFT/Chronicle-Threads" title="Chronicle Threads " target="_blank" rel="noopener noreferrer"&gt;Chronicle Threads&lt;/a&gt;
library has a little known feature which is one of the first tools I get from my bag if a client reports that they are seeing latency outliers.&lt;/p&gt;
&lt;p&gt;The usual way that a developer will measure their system for latency hotspots is to use a profiler, and modern profilers are amazing; there are numerous commercially available, but I generally find myself using Java Flight Recorder, async-profiler, or honest-profiler. These three are engineered to avoid the &lt;a href="https://stackoverflow.com/questions/17839933/what-are-safe-points-and-safe-point-polling-in-context-of-profiling" title="safepoint bias" target="_blank" rel="noopener noreferrer"&gt;safepoint bias&lt;/a&gt;
, and thus give very accurate results.&lt;/p&gt;</description></item><item><title>The Unix Philosophy for Low Latency</title><link>https://foojayio.github.io/website/today/the-unix-philosophy-for-low-latency/</link><pubDate>Thu, 04 May 2023 08:03:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-unix-philosophy-for-low-latency/</guid><description>&lt;p&gt;Unix has been around for more than 50 years, and the original design principles must be good enough for it (and its derivative, Linux) to be the most widely used Operating System on the planet &amp;ndash; &lt;a href="https://en.wikipedia.org/wiki/Usage_share_of_operating_systems" target="_blank" rel="noopener noreferrer"&gt;80% of servers&lt;/a&gt;
, &lt;a href="https://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Supercomputers" target="_blank" rel="noopener noreferrer"&gt;most supercomputers&lt;/a&gt;
, and the most &lt;a href="https://en.wikipedia.org/wiki/Usage_share_of_operating_systems" target="_blank" rel="noopener noreferrer"&gt;deployed OS (Android&lt;/a&gt;
). It is also the most popular OS on Mars!&lt;/p&gt;
&lt;p&gt;Much of Unix&amp;rsquo;s success can be attributed to the &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Unix_philosophy" target="_blank" rel="noopener noreferrer"&gt;Unix Philosophy&lt;/a&gt;
&amp;rdquo; which can be very briefly summarised as:&lt;/p&gt;</description></item><item><title>Chronicle FIX: Much More Than a Quick Fix</title><link>https://foojayio.github.io/website/today/chronicle-fix-much-more-than-a-quick-fix/</link><pubDate>Wed, 12 Apr 2023 13:55:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/chronicle-fix-much-more-than-a-quick-fix/</guid><description>&lt;p&gt;Many of our customers have upgraded from QuickFIX/J to &lt;a href="https://chronicle.software/fix-engine/" target="_blank" rel="noopener noreferrer"&gt;Chronicle FIX&lt;/a&gt;
 and this article provides some background as to why.&lt;/p&gt;
&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.quickfixj.org/" target="_blank" rel="noopener noreferrer"&gt;QuickFIX/J&lt;/a&gt;
 is free, accessible, supports the FIX standard and is therefore often chosen by the IT team for a first FIX engine.&lt;/p&gt;
&lt;p&gt;However, when the business grows, its limitations become clear. The reasons most commonly given to us are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Throughput and latency&lt;/li&gt;
&lt;li&gt;HA/DR functionality&lt;/li&gt;
&lt;li&gt;Advanced features e.g. routing and message translation&lt;/li&gt;
&lt;li&gt;Global commercial support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, some customers engage with us because they already use our open source products e.g. Chronicle Queue, or our enterprise products e.g., Chronicle Queue Enterprise replication, or Chronicle Services EDA/Microservices accelerator.&lt;/p&gt;</description></item><item><title>Reducing Tail Latencies with Chronicle Queue Enterprise</title><link>https://foojayio.github.io/website/today/reducing-tail-latencies-with-chronicle-queue-enterprise/</link><pubDate>Wed, 09 Nov 2022 15:07:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/reducing-tail-latencies-with-chronicle-queue-enterprise/</guid><description>&lt;p&gt;Persistent queue solutions are frequently used when designing low-latency applications.&lt;/p&gt;
&lt;p&gt;The problem is that high sustained message rates, or bursty workloads, can lead to delays caused by the OS or hardware which are challenging to mitigate.&lt;/p&gt;
&lt;p&gt;In this article, we will describe how &lt;a href="https://chronicle.software/queue-enterprise/" title="Chronicle Queue Enterprise" target="_blank" rel="noopener noreferrer"&gt;Chronicle Queue Enterprise&lt;/a&gt;
 solves this.&lt;/p&gt;
&lt;h3 id="h3-0-background"&gt;Background&lt;/h3&gt;
&lt;p&gt;When benchmarking Java low-latency persistent queue solutions, latencies tend to be excellent up to high percentiles until sustained throughput limits are reached; these sustained throughput limits are determined by disk performance, OS version, and configuration.&lt;/p&gt;</description></item></channel></rss>