Links of Interest
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. 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 LMAX - How to Do 100K TPS at Less than 1ms Latency
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. 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
Java 2 Platform SE 5.0
Fifteen years ago, multiprocessor systems were highly specialized systems costing hundreds of thousands of dollars (and most of them had two to four processors). 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. Java theory and practice: Going atomic
Vivek Haldar : Flash Crisis Robert X. 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
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. 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. Solaris ZFS Performance Tuning: Synchronous Writes and the ZIL
To mitigate the risk of data corruption during power loss, some storage devices use battery-backed write caches. 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. 19.2. Enabling/Disabling Write Barriers
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. 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()? 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.
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. As promised in my last post, here is some information about the new event series that we are putting together. PRODUCTISE.IN: The Successor to FOSS.IN… | Atul Chitnis
Productise date change Sometimes, things don't go quite as planned. And this is one of those cases. The short TL;DR version: PRODUCTISE.IN dates have been moved from December 5-7 to January 12-14. Here's the longer explanation: ...
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. E (programming language)
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