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 Sun, 05 Aug 2018 18:02:37 GMT

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

(Updated Aug. 5, 2018, 6:02 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 (updated)
-----

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


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

Changes: https://reviews.apache.org/r/68149/diff/2-3/


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
----------------

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