<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://pinboard.in">
    <title>Pinboard (jm)</title>
    <link>https://pinboard.in/u:jm/public/</link>
    <description>recent bookmarks from jm</description>
    <items>
      <rdf:Seq>	<rdf:li rdf:resource="https://github.com/conversant/disruptor"/>
	<rdf:li rdf:resource="http://belliottsmith.com/injector/"/>
	<rdf:li rdf:resource="https://spring.io/blog/2013/11/12/it-can-t-just-be-big-data-it-has-to-be-fast-data-reactor-1-0-goes-ga"/>
	<rdf:li rdf:resource="https://issues.apache.org/jira/browse/CASSANDRA-5582"/>
	<rdf:li rdf:resource="http://www.tuicool.com/articles/MBFRRz"/>
	<rdf:li rdf:resource="http://logging.apache.org/log4j/2.x/manual/async.html#Performance"/>
	<rdf:li rdf:resource="http://psy-lob-saw.blogspot.co.uk/2013/03/single-producerconsumer-lock-free-queue.html?m=1"/>
	<rdf:li rdf:resource="http://www.infoq.com/presentations/Lock-free-Algorithms"/>
	<rdf:li rdf:resource="http://stackoverflow.com/questions/6559308/how-does-lmaxs-disruptor-pattern-work"/>
      </rdf:Seq>
    </items>
  </channel><item rdf:about="https://github.com/conversant/disruptor">
    <title>Conversant ConcurrentQueue and Disruptor BlockingQueue</title>
    <dc:date>2016-03-07T11:24:20+00:00</dc:date>
    <link>https://github.com/conversant/disruptor</link>
    <dc:creator>jm</dc:creator><description><![CDATA['Disruptor is the highest performing intra-thread transfer mechanism available in Java. Conversant Disruptor is the highest performing implementation of this type of ring buffer queue because it has almost no overhead and it exploits a particularly simple design.

Conversant has been using this in production since 2012 and the performance is excellent. The BlockingQueue implementation is very stable, although we continue to tune and improve it.  The latest release, 1.2.4, is 100% production ready.

Although we have been working on it for a long time, we decided to open source our BlockingQueue this year to contribute something back to the community. ... its a drop in for BlockingQueue, so its a very easy test.  Conversant Disruptor will crush ArrayBlockingQueue and LinkedTransferQueue for thread to thread transfers.    

In our system, we noticed a 10-20% reduction in overall system load and latency when we introduced it.']]></description>
<dc:subject>disruptor blocking-queues queues queueing data-structures algorithms java conversant concurrency performance</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:502056282b58/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:blocking-queues"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:queues"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:queueing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:data-structures"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:conversant"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://belliottsmith.com/injector/">
    <title>The Injector: A new Executor for Java</title>
    <dc:date>2015-05-08T16:33:16+00:00</dc:date>
    <link>http://belliottsmith.com/injector/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>This honestly fits a narrow niche, but one that is gaining in popularity. If your messages take > 100μs to process, or your worker threads are consistently saturated, the standard ThreadPoolExecutor is likely perfectly adequate for your needs. If, on the other hand, you’re able to engineer your system to operate with one application thread per physical core you are probably better off looking at an approach like the LMAX Disruptor. However, if you fall in the crack in between these two scenarios, or are seeing a significant portion of time spent in futex calls and need a drop in ExecutorService to take the edge off, the injector may well be worth a look.
</blockquote>

]]></description>
<dc:subject>performance java executor concurrency disruptor algorithms coding threads threadpool injector</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b2f16d258d53/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:executor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:threads"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:threadpool"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:injector"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://spring.io/blog/2013/11/12/it-can-t-just-be-big-data-it-has-to-be-fast-data-reactor-1-0-goes-ga">
    <title>Reactor hits GA</title>
    <dc:date>2013-11-12T13:39:16+00:00</dc:date>
    <link>https://spring.io/blog/2013/11/12/it-can-t-just-be-big-data-it-has-to-be-fast-data-reactor-1-0-goes-ga</link>
    <dc:creator>jm</dc:creator><description><![CDATA['It can't just be Big Data, it has to be Fast Data: Reactor 1.0 goes GA': 

<blockquote>
Reactor provides the necessary abstractions to build high-throughput, low-latency--what we now call "fast data"--applications that absolutely must work with thousands, tens of thousands, or even millions of concurrent requests per second.  Modern JVM applications must be built on a solid foundation of asynchronous and reactive components that efficiently manage the execution of a very large number of tasks on a very small number of system threads. Reactor is specifically designed to help you build these kinds of applications without getting in your way or forcing you to work within an opinionated pattern.
</blockquote>

Featuring the LMAX Disruptor ringbuffer, the JavaChronicle fast persistent message-passing queue, Groovy closures, and Netty 4.0.  This looks very handy indeed....]]></description>
<dc:subject>disruptor reactive-programming reactor async libraries java jvm frameworks spring netty fast-data</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:40b56ea65db9/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:reactive-programming"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:reactor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:async"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:libraries"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jvm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:frameworks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:spring"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:netty"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fast-data"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://issues.apache.org/jira/browse/CASSANDRA-5582">
    <title>[#CASSANDRA-5582] Replace CustomHsHaServer with better optimized solution based on LMAX Disruptor</title>
    <dc:date>2013-09-03T22:29:45+00:00</dc:date>
    <link>https://issues.apache.org/jira/browse/CASSANDRA-5582</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Disruptor: decimating P99s since 2011]]></description>
<dc:subject>disruptor cassandra java p99 latency speed performance concurrency via:kellabyte</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:70d101c721e7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cassandra"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:p99"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:latency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:speed"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:kellabyte"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.tuicool.com/articles/MBFRRz">
    <title>Log4j 2: Performance close to insane</title>
    <dc:date>2013-07-20T22:37:07+00:00</dc:date>
    <link>http://www.tuicool.com/articles/MBFRRz</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Nice writeup on Log4j 2's new AsyncAppender implementation, based on the LMAX Disruptor.  sounds pretty excellent:

<blockquote>“One nice little detail I should mention is that both Async Loggers and Async Appenders fix something that has always bothered me in Log4j-1.x, which is that they will flush the buffer after logging the last event in the queue . With Log4j-1.x, if you used buffered I/O, you often could not see the last few log events, as they were still stuck in the memory buffer. Your only option was setting immediateFlush to true, which forces disk I/O on every single log event and has a performance impact. 
With Async Loggers and Appenders in Log4j-2.0 your log statements are all flushed to disk, so they are always visible, but this happens in a very efficient manner.”</blockquote>

]]></description>
<dc:subject>logging java performance async disruptor low-latency</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:414139609e59/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:logging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:async"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:low-latency"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://logging.apache.org/log4j/2.x/manual/async.html#Performance">
    <title>Log4j2 Asynchronous Loggers for Low-Latency Logging - Apache Log4j 2</title>
    <dc:date>2013-04-25T21:49:30+00:00</dc:date>
    <link>http://logging.apache.org/log4j/2.x/manual/async.html#Performance</link>
    <dc:creator>jm</dc:creator><description><![CDATA[implemented using the LMAX Disruptor library -- very impressive performance figures. I presume in real-world usage, these latencies are dwarfed by hardware costs, though]]></description>
<dc:subject>disruptor coding java log4j logging async performance</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:5e34e6502b2e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:log4j"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:logging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:async"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://psy-lob-saw.blogspot.co.uk/2013/03/single-producerconsumer-lock-free-queue.html?m=1">
    <title>Single Producer/Consumer lock free Queue step by step</title>
    <dc:date>2013-03-18T23:34:21+00:00</dc:date>
    <link>http://psy-lob-saw.blogspot.co.uk/2013/03/single-producerconsumer-lock-free-queue.html?m=1</link>
    <dc:creator>jm</dc:creator><description><![CDATA[great dissection of Martin "Disruptor" Thompson's lock-free single-producer/single-consumer queue data structure, with benchmark results showing crazy speedups.  This is particularly useful since it's a data structure that can be used to provide good lock-free speedups without adopting the entire Disruptor design pattern.]]></description>
<dc:subject>disruptor coding java jvm martin-thompson lock-free volatile atomic queue data-structures</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:457c8ffc41a7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jvm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:martin-thompson"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lock-free"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:volatile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:atomic"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:queue"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:data-structures"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.infoq.com/presentations/Lock-free-Algorithms">
    <title>InfoQ: Lock-free Algorithms</title>
    <dc:date>2012-04-30T16:07:47+00:00</dc:date>
    <link>http://www.infoq.com/presentations/Lock-free-Algorithms</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Michael Barker and Martin Thompson's talk at the last QCon on the LMAX Disruptor, and other nifty lock-free techniques and patterns.  'Martin Thompson and Michael Barker explain how Intel x86_64 processors and their memory model work, along with low-level techniques that help creating lock-free software.']]></description>
<dc:subject>lock-free locking mutexes algorithms lmax disruptor infoq slides presentations qcon java</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8b73716da342/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lock-free"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:locking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mutexes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lmax"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infoq"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:slides"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:presentations"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:qcon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://stackoverflow.com/questions/6559308/how-does-lmaxs-disruptor-pattern-work">
    <title>How does LMAX's disruptor pattern work? - Stack Overflow</title>
    <dc:date>2011-11-23T09:52:35+00:00</dc:date>
    <link>http://stackoverflow.com/questions/6559308/how-does-lmaxs-disruptor-pattern-work</link>
    <dc:creator>jm</dc:creator><description><![CDATA[LMAX's "Disruptor" concurrent-server pattern, claiming to be a higher-throughput, lower-latency, and lock-free alternative to the SEDA pattern using a massive ring buffer.  Good discussion here at SO.  (via Filippo)]]></description>
<dc:subject>via:filippo servers seda queueing concurrency disruptor patterns latency trading performance ring-buffers</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:388ee9929e15/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:filippo"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:servers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:seda"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:queueing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:disruptor"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:latency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:trading"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ring-buffers"/>
</rdf:Bag></taxo:topics>
</item>
</rdf:RDF>