Currently using the YieldingWaitStrategy & MultiThreadedClaimStrategy
w/ a buffer size of 8192. Setting up the disruptor using the DSL, ala
handleEventsWith(foo).then(bar).then(baz).
> - What is the platform that you are testing on?
OSX 10.6.6, Java 1.6.0_22
> - Can you produce the source code for a cut down performance test to
> illustrates your problem?
Not easily, this is embedded in a fairly large system at the moment
trying to replace a sequential pipeline with something that will take
more advantage of CPU resources. I started patterning the code off of
ThreePublisherToOneProcessorSequencedThroughputTest, though the number
of publishers varies in my current tests from 2 to 57. The single
processor is the one that just pulled off the ringBuffer and put it
into a BlockingQueue for further processing, 4 more stages performed
sequentially as each thing comes off the queue, after that, these are
then pushed to the user.
While that worked, it seemed that was not an optimal use of disruptor,
so I then tried moving those four stages into the workflow disruptor
is using so that events passed through them before getting put into
the BlockingQueue -- at this point, they're ready to send to the user.
There was very little difference in performance between these two
setups; small enough that it was with the expected JVM wiggle, which I
found quite surprising. My guess is that the bottleneck is either
getting stuff onto the ring buffer or getting stuff off.
> - Have you profiled the test to see where the time is being sent?
>
I am attempting to get the netbeans profiler going with my latest code
to try and discern what could be going on. If i can pin point
something that looks like its in disruptor, I can try and distill my
prototype down into a relevant sample. In the meantime, i was hoping
for some suggestions on setup in case I was doing something obviously
dumb.
Is there a way to take something off the end of the ringbuffer so I
can treat it like a queue, that way i could reduce one of the
bottlenecks of having to transfer results from the buffer to a
BlockingQueue.
Cheers,
Michael
OSX 10.6.6, Java 1.6.0_22