Links of Interest

Facebook Twitter

RMTrees. LMAX - How to Do 100K TPS at Less than 1ms Latency. Bio Martin Thompson worked at Betfair, one of the largest sports betting exchange, and the co-founded LMAX/Tradefair, leading the building of the world’s highest performance financial exchange.

LMAX - How to Do 100K TPS at Less than 1ms Latency

Michael Barker is currently a lead developer at London Multi-Asset eXchange (LMAX), and a sporadic Open Source contributor to projects like PostgreSQL, JBoss, GNU Classpath and most recently Mono. QCon is a conference that is organized by the community, for the community.The result is a high quality conference experience where a tremendous amount of attention and investment has gone into having the best content on the most important topics presented by the leaders in our community.QCon is designed with the technical depth and enterprise focus of interest to technical team leads, architects, and project managers. A simple disruptor based actor. Import collection.immutable.IndexedSeq import com.lmax.disruptor.dsl.Disruptor import com.lmax.disruptor.

A simple disruptor based actor

. _ What's so special about a ring buffer? Recently we open sourced the LMAX Disruptor, the key to what makes our exchange so fast.

What's so special about a ring buffer?

Why did we open source it? Well, we've realised that conventional wisdom around high performance programming is... a bit wrong. We've come up with a better, faster way to share data between threads, and it would be selfish not to share it with the world. Plus it makes us look dead clever. Disruptor - Concurrent Programming Framework. Haakan-Thesis. Java 2 Platform SE 5.0. Java theory and practice: Going atomic. Fifteen years ago, multiprocessor systems were highly specialized systems costing hundreds of thousands of dollars (and most of them had two to four processors).

Java theory and practice: Going atomic

Today, multiprocessor systems are cheap and plentiful, nearly every major microprocessor has built-in support for multiprocessing, and many support dozens or hundreds of processors. To exploit the power of multiprocessor systems, applications are generally structured using multiple threads. But as anyone who's written a concurrent application can tell you, simply dividing up the work across multiple threads isn't enough to achieve good hardware utilization -- you must ensure that your threads spend most of their time actually doing work, rather than waiting for more work to do, or waiting for locks on shared data structures.

Flash Crisis. Robert X.

Flash Crisis

Cringely absolutely nails it in his recent column about some of the consequences of rapidly reducing IO times on programming languages1. His major point was that slow but expressive2 high-level scripting languages such as Ruby and Python have been getting away with their lack of performance due to slow disks. With super-fast seekless flash expected to replace, or at least complement, spinning disks in the storage hierarchy, the long honeymoon of Python and Ruby will come to an end when profiling reveals that IO is fast, and the runtime or interpreter is the bottleneck.

This impending “flash crisis” is well known in system circles. It’s almost like a mini Y2K. Is 2K ACID TPS fast for a disk based (scala) database? - scala-user. Solaris ZFS Performance Tuning: Synchronous Writes and the ZIL. When talking to customers, partners and colleagues about Oracle Solaris ZFS performance, one topic almost always seems to pop up: Synchronous writes and the ZIL.

Solaris ZFS Performance Tuning: Synchronous Writes and the ZIL

In fact, most ZFS performance problems I see are related to synchronous writes, how they are handled by ZFS through the ZIL and how they impact IOPS load on the pool's disks. Many people blame the ZIL for bad performance, and they even try to turn it off, but that's not good. 19.2. Enabling/Disabling Write Barriers. To mitigate the risk of data corruption during power loss, some storage devices use battery-backed write caches.

19.2. Enabling/Disabling Write Barriers

Generally, high-end arrays and some hardware controllers use battery-backed write caches. However, because the cache's volatility is not visible to the kernel, Red Hat Enterprise Linux 6 enables write barriers by default on all supported journaling file systems. Linux, O_SYNC and Write Barriers. We all love Linux... sometimes it is better not to look under its hood though as you never know what you might find.

Linux, O_SYNC and Write Barriers

I stumbled across a very interesting discussion on a Linux kernel mailing list. It is dated August 2009 so you may have already read it. There is a related RH bug. I'm a little bit surprised by RH attitude in this ticket. Large HDD/SSD Linux 2.6.38 File-System Comparison - Page 2. Write-Cache Enabled? - Jason Brome's Weblog. ... otherwise known as when is a sync() not a sync()?

Write-Cache Enabled? - Jason Brome's Weblog

Recently I ran some performance tests on disk I/O, from both Java and C-based applications. The nature of the applications is such that they require transactional logging for reliability, and therefore need a guarantee that data has been written to disk. After running some simple write tests, I noticed an order of magnitude difference in performance between a couple of machines. PRODUCTISE.IN: The Successor to FOSS.IN… | Atul Chitnis. Update: Please see this post for updated information about this event This is possibly the fastest that Team FOSS.IN has ever put together an event.

PRODUCTISE.IN: The Successor to FOSS.IN… | Atul Chitnis

As promised in my last post, here is some information about the new event series that we are putting together. Productise date change. E (programming language) Here is a recursive function for computing the factorial of a number, written in E. Functions are defined using the def keyword. In the first line, :int is a guard that constrains the argument and result of the function. A guard is not quite the same thing as a type declaration; guards are optional and can specify constraints.

The first :int ensures that the body of the function will only have to handle an integer argument. Without the second :int above, the function would not be able to return a value. The LMAX Architecture. LMAX is a new retail financial trading platform. As a result it has to process many trades with low latency. The system is built on the JVM platform and centers on a Business Logic Processor that can handle 6 million orders per second on a single thread.

The Business Logic Processor runs entirely in-memory using event sourcing. The Business Logic Processor is surrounded by Disruptors - a concurrency component that implements a network of queues that operate without needing locks. Building Scalable Systems: an Asynchronous Approach. Bio Theo Schlossnagle is the author of Scalable Internet Architectures (SAMS) and a frequent speaker at worldwide IT conferences. He was the Principal Architect of the Momentum MTA, a new email system.

Using A Graph Database To Power The “Web of Things” Bio Rick Bullotta is the co-founder and CTO of ThingWorx, a pioneer in the emerging field of real-world aware applications. Mr. Bullotta was previously CTO at Invensys Wonderware, and VP with SAP Research. Emil Eifrem is CEO of Neo Technology and co-founder of the Neo4j project. Before founding Neo, he was the CTO of Windh AB. Neo4j Internals: File Storage. NOTE: This post is quite outdated, stuff has changed since i wrote this.

While you can somewhat safely ignore the alterations for increased address space of entities, the Property store has changed in a fundamental way. Please find the new implementation here.