Skip to content

Commit f698774

Browse files
committed
PublisherAsBlockingIterable LinkedBlockingQueue -> SpscBlockingQueue
Motivation: LinkedBlockingQueue allows for multiple producers and multiple consumers. It uses LockSupport park in offer and unpark in take. LockSupport unpark on the EventLoop thread has been shown to impact throughput during benchmarks. SpscBlockingQueue (yield_count == 1) ``` Running 30s test @ http://localhost:8080/medium, using 'ServiceTalkGrpcBlockingClientStrAgg' client 1024 threads and 1024 connections Thread Stats Avg Stdev Max +/- Stdev Latency - - - - Req/Sec 0.01k - 0.01k - 275243 requests in 30s Requests/sec: 9174.77 Transfer/sec: - OK: 275243 KO: 0 ``` SpscBlockingQueue (yield_count == 2) ``` Running 30s test @ http://localhost:8080/medium, using 'ServiceTalkGrpcBlockingClientStrAgg' client 1024 threads and 1024 connections Thread Stats Avg Stdev Max +/- Stdev Latency - - - - Req/Sec 0.01k - 0.01k - 332987 requests in 30s Requests/sec: 11099.57 Transfer/sec: - OK: 332987 KO: 0 ``` LinkedTransferQueue ``` Running 30s test @ http://localhost:8080/medium, using 'ServiceTalkGrpcBlockingClientStrAgg' client 1024 threads and 1024 connections Thread Stats Avg Stdev Max +/- Stdev Latency - - - - Req/Sec 0.01k - 0.01k - 289396 requests in 30s Requests/sec: 9646.53 Transfer/sec: - OK: 289396 KO: 0 ```
1 parent 1c463da commit f698774

File tree

3 files changed

+466
-4
lines changed

3 files changed

+466
-4
lines changed

0 commit comments

Comments
 (0)