RSSAmplifier

Blog

Technical Itch

epickrram.blogspot.comRSS feed ↗25 posts

Latest posts

Multi-Topic Broadcast in Babl WebSocket Server

As of version 0.10.0, Babl applications gained the ability to broadcast messages to multiple topics simultaneously. This new functionality makes publishing of market data even more efficient. Using multi-topic broadcast, an application can send a single message to multiple topics, and transform that message for each receiving topic. The message is broadcast to all session containers via IPC, and…

Babl High-Performance WebSocket Server

A lockdown project A couple of years ago, after evaluating the available open-source solutions, I became interested in the idea of writing a low-latency websocket server for the JVM. The project I was working on required a high-throughput, low-latency server to provide connectivity to a clustered backend service. We started by writing some benchmarks to see whether the most popular servers would…

Performance Tuning E-Book

Hi there, and welcome. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! I've condensed many of the posts on this blog into a series of e-books, available for free download. The first, on performance tuning for low-latency applications, is…

Recall Design

This article discusses the design of Recall , an efficient, low-latency off-heap object store for the JVM. Recall is designed for use by single-threaded applications, making it simple and performant. In the multi-core era, it may seem odd that high-performance software is designed for use by a single thread, but there is a good reason for this. Developers of low-latency systems will be aware of…

Heap Allocation Flamegraphs

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! The most recent addition to the grav collection of performance visualisation tools is a utility for tracking heap…

Performance visualisation tools

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! Update Amir has very kindly contributed a Vagrant box configuration to enable non-Linux users to work with the tools…

Named thread flamegraphs

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! Update The utility described in this post has been moved to the grav repository, see "Performance visualisation tools" for…

Lightweight tracing with BCC

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! Ever since I read some initial blogs posts about the upcoming eBPF tracing functionality in the 4.x Linux kernel, I have…

Angler

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! In my last couple of posts , I've been looking at how UDP network packets are received by the Linux kernel. While diving…

Navigating the Linux kernel network stack: into user land

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! This is a continuation of my previous post , in which we follow the path of an inbound multicast packet to the user…

Navigating the Linux kernel network stack: receive path

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! Background At work we practice continuous integration in terms of performance testing alongside different stages of…

Further notes on Hotspot compiler flags

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! Continuing on from my last post , here we'll be looking at flags used to control the C2 or server compiler of the Hotspot…

Observing JVM warm-up effects

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! In this post, we will explore some of the various flags that can affect the operation of the JVM's JIT compiler. Anything…

Qcon London Talks

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! LMAX Exchange developers are giving two talks at QCon London this year. Sam Adams, our Head of Software, will be…

Timing is everything

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! Monitoring of various metrics is a large part of ensuring that our systems are behaving in the way that we expect. For…

Journalling Revisited

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! A few months ago, I wrote about how we had improved our journalling write latency at LMAX by upgrading our kernel and…

Reducing system jitter - part 2

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! In my last post, I demonstrated some techniques for reducing system jitter in low-latency systems. Those techniques…

Reducing system jitter

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! For the next instalment of this series on low-latency tuning at LMAX Exchange , I'm going to talk about reducing jitter…

Runtime Jitter - Zing vs Hotspot

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! This is an update to my last post exploring behaviour in the Oracle/OpenJDK JVM that forces a periodic safepoint under…

JVM guaranteed safepoints

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! I have been working on a small tool to measure the effects of system jitter within a JVM; it is a very simple app that…

seek() + write() vs pwrite()

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! In my last post , I described the benefits of upgrading hardware, operating system and file-system in order to improve the…

Improving journalling latency

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! For the last few months at LMAX Exchange, we've been working on building out our next generation platform. Every few years…

JAX Finance talks

My colleague Sam & I will be talking at JAX Finance next week (28th/29th April). I'll be doing a talk with Vijay from Azul on our experiences at LMAX with deploying Zing to production. In the talk, we'll discuss how to go about making such a change in a safe manner, some of the internals of Zing, and lessons learned along the way. Sam's talk describes how we achieve high-throughput and low-latency…

Performance Testing at LMAX (Part Three)

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! In my last post, I focussed on how to go about analysing your application's inbound traffic in order to create a…

Performance Testing at LMAX (Part Two)

Hi there, and welcome. This content is still relevant, but fairly old. If you are interested in keeping up-to-date with similar articles on profiling, performance testing, and writing performant code, consider signing up to the Four Steps to Faster Software newsletter. Thanks! In this post, I'm going to talk about traffic analysis and load modelling for performance tests. I will describe in some…