merlimat opened a new pull request, #3384:
URL: https://github.com/apache/bookkeeper/pull/3384
### Motivation
In #3108, we have switched to use GrowableArrayBlockingQueue for the
OrderedExecutor.
I've been doing some testing recently, with respect with throughput and
latencies when there are many small requests being passed on. This was on newer
machines and using Java 17, so my conclusion is that many things have changed
since when I did add that class back in the day :).
I've tested with `LinkedBlockingQueue`, `GrowableArrayBlockingQueue`,
JCTools based queue and Cognizant disruptor based queue, in the context of the
OrderedExecutor, running in a Pulsar broker and BK bookie.
I've actually lost the document with all the results :/, though the summary
was that:
1. `LinkedBlockingQueue` had the best throughput and latency. Behavior was
very stable
2. `GrowableArrayBlockingQueue` had decent throughput (slightly lower than
LBQ) and worse latency, a bit jumpy.
3. JCTools and Cognizant disruptor based blocking MP-SC queues all had much
worse performance overall, and causing lot of variance in the throughput and
latency.
4. I tried to perform some improvements on `GrowableArrayBlockingQueue`
aimed at reducing contention and avoid locking in few cases to assume a single
consumer, though I wasn't able to achieve any better result there.
Result: I think we should stick the default LBQ.
cc/ @lhotari
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]