mratsim / weave

A state-of-the-art multithreading runtime: message-passing based, fast, scalable, ultra-low overhead
Other
532 stars 22 forks source link

42% overhead increase following padding changes #112

Closed mratsim closed 4 years ago

mratsim commented 4 years ago

image

The following commit 61aad0acc76e93e0d8c4769137c0379d620a2e7e change padding and increased overhead on Fibonacci by 42%

61aad0acc76e93e0d8c4769137c0379d620a2e7e is the first bad commit
commit 61aad0acc76e93e0d8c4769137c0379d620a2e7e
Author: Mamy Ratsimbazafy <mamy_github@numforge.co>
Date:   Sat Jan 18 20:35:27 2020 +0100

    Update mpsc padding (#100)

    * solve memory pool size issue

    * Update padding following https://github.com/nim-lang/Nim/issues/13122

 weave/channels/channels_mpsc_unbounded_batch.nim | 12 +++++++++---
 weave/channels/pledges.nim                       | 11 ++++++-----
 weave/memory/memory_pools.nim                    | 10 +++++-----
 3 files changed, 20 insertions(+), 13 deletions(-)

The impact should be minimal on workloads that are not pure overhead and in that case the issue can be solved. The overhead is still significantly under Intel TBB (~650ms) and the overhead for the lazy flowvars is around ~200ms

Testing this is quite complex as no stable version of Nim can be used on both.

Nim v1.2.0 works with the commit 61aad0acc76e93e0d8c4769137c0379d620a2e7e but the preceding commit 4cf72aee255e4df7f89f48ac137a2c016d0b2cfc does not.

Nim ff5ef95414e48714efd0ce2b3b694de1017032dc from December 9 can compile both.