mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dario Rexin <dre...@apple.com>
Subject Re: Review Request 68149: Replace exchange in MpscLinkedQueue::dequeue with load/store.
Date Thu, 02 Aug 2018 21:43:34 GMT

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/68149/
-----------------------------------------------------------

(Updated Aug. 2, 2018, 9:43 p.m.)


Review request for James Peach.


Repository: mesos


Description
-------

There's only a single consumer, so we don't need to exchange
in dequeue. Testing shows that a load/store pair is much
more efficient, as it needs fewer CPU cycles. Especially
in the empty queue case, where the store does not have to
be executed at all.


Diffs
-----

  3rdparty/libprocess/src/mpsc_linked_queue.hpp fc55d4389 
  3rdparty/libprocess/src/tests/benchmarks.cpp 0b94aaf4e 


Diff: https://reviews.apache.org/r/68149/diff/1/


Testing
-------

Make check and benchmarks.

Benchmark results:

Exchange (before):

[=======] Running 3 tests from 1 test case.
[-------] Global test environment set-up.
[-------] 3 tests from ProcessTest
[ RUN   ] ProcessTest.Process_BENCHMARK_MpscLinkedQueue
Estimated producer throughput (7 threads): 38741698.929628 op/s
Estimated consumer throughput: 15783395.811778 op/s
Estimated total throughput: 54525094.741406 op/s
[    OK ] ProcessTest.Process_BENCHMARK_MpscLinkedQueue (4435 ms)
[ RUN   ] ProcessTest.Process_BENCHMARK_MpscLinkedQueueEmpty
Estimated consumer throughput: 182175973.774530 op/s
[    OK ] ProcessTest.Process_BENCHMARK_MpscLinkedQueueEmpty (5489 ms)
[ RUN   ] ProcessTest.Process_BENCHMARK_MpscLinkedQueueNonContendedRead
Estimated producer throughput (7 threads): 41807291.688699 op/s
Estimated consumer throughput: 21925675.985841 op/s
Estimated total throughput: 63732967.674541 op/s


Load/Store (after):

[=======] Running 3 tests from 1 test case.
[-------] Global test environment set-up.
[-------] 3 tests from ProcessTest
[ RUN   ] ProcessTest.Process_BENCHMARK_MpscLinkedQueue
Estimated producer throughput (7 threads): 39972854.982381 op/s
Estimated consumer throughput: 18090177.075559 op/s
Estimated total throughput: 58063032.057939 op/s
[    OK ] ProcessTest.Process_BENCHMARK_MpscLinkedQueue (3870 ms)
[ RUN   ] ProcessTest.Process_BENCHMARK_MpscLinkedQueueEmpty
Estimated consumer throughput: 1457824631.198832 op/s
[    OK ] ProcessTest.Process_BENCHMARK_MpscLinkedQueueEmpty (686 ms)
[ RUN   ] ProcessTest.Process_BENCHMARK_MpscLinkedQueueNonContendedRead
Estimated producer throughput (7 threads): 48031578.693516 op/s
Estimated consumer throughput: 25242881.515617 op/s
Estimated total throughput: 73274460.209133 op/s


File Attachments (updated)
----------------

mpsc-load-store.patch
  https://reviews.apache.org/media/uploaded/files/2018/08/02/b8bd71a1-a1c7-47b1-beae-dc9f522ae192__mpsc-load-store.patch


Thanks,

Dario Rexin


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message