<br><br><div class="gmail_quote">On Sun, May 13, 2012 at 1:00 PM, Michael Barker <span dir="ltr"><<a href="mailto:mikeb01@gmail.com" target="_blank">mikeb01@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">>> With most of the experimentation done on the Disruptor, the thing that<br>
>> has the biggest impact on latency is how you notify the consumer<br>
>> thread.<br>
><br>
><br>
> There's no notification needed. If the consumer is currently active, i.e. is<br>
> being executed by a thread, we want handoffs to be as cheap as possible.<br>
<br>
</div>Cool, you get to avoid the hard problem :-).<br>
<br>
One possible thing to try would be to have some sort of batch based<br>
dequeue operation rather than a single element dequeue.  If you<br>
process a mailbox and there is 10 messages in the queue then you could<br>
remove all 10 and update the head pointer only once.  I'm assuming<br>
that the CAS/Volatile operations will be the biggest cost.  It won't<br>
bring much of a single message latency reduction, but will have a<br>
better profile under a heavy load or burst conditions.<br></blockquote><div><br></div><div>The problem with batch dequeues is that if one of the messages fail we need to be at a stable state, and doing that would mean store away the remaining batch, which would bump the processors size by atleast a reference, which can be expensive if you have millions of them.</div>
<div><br></div><div>It's an interesting problem though. I've been thinking about how to handle producer conflicts as cheap as possible, as there are no consumer conflicts.</div><div><br></div><div>Cheers,</div><div>
√ </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Mike.<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Times;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><span style="font-family:arial;font-size:small"><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px">Viktor Klang<br>
<br>Akka Tech Lead</span><div><font face="arial, sans-serif"><span style="border-collapse:collapse"><a href="http://www.typesafe.com/" target="_blank">Typesafe</a><span> </span>- </span></font><span>The software stack for applications that scale</span><br>
<font face="arial, sans-serif"><span style="border-collapse:collapse"><br></span></font><font face="arial, sans-serif"><span style="border-collapse:collapse">Twitter: @viktorklang</span></font></div></span></span><br>