Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance! #20

Open
ghost opened this issue May 9, 2015 · 0 comments
Open

Performance! #20

ghost opened this issue May 9, 2015 · 0 comments

Comments

@ghost
Copy link

ghost commented May 9, 2015

Currently the work stealing scheduler has very odd scaling characteristics. I will place a * that these numbers are not realistic for a real application, since a real application would probably have more then a nop as a task. But still, the scheduler does not scale as well as I would have hoped.

1 thread

test bench_fibb_steal     ... bench:    291708 ns/iter (+/- 18080)
test chain_10_use_die     ... bench:     53808 ns/iter (+/- 5997)
test chain_10_wait        ... bench:     84236 ns/iter (+/- 5503)
test chain_1_000_use_die  ... bench:    421437 ns/iter (+/- 195312)
test chain_1_000_wait     ... bench:    418457 ns/iter (+/- 6165)
test fanout_1_000         ... bench:    596724 ns/iter (+/- 7209)
test repeat_100_x_100     ... bench:   7239210 ns/iter (+/- 5359287)
test repeat_1_000         ... bench:   1008281 ns/iter (+/- 330520)
test repeat_1_000_x_1_000 ... bench: 362229939 ns/iter (+/- 18925219)
test start_die            ... bench:     51569 ns/iter (+/- 6169)

4 threads

test bench_fibb_steal     ... bench:   2318548 ns/iter (+/- 516592)
test chain_10_use_die     ... bench:    148295 ns/iter (+/- 12029)
test chain_10_wait        ... bench:    119859 ns/iter (+/- 39196)
test chain_1_000_use_die  ... bench:    474476 ns/iter (+/- 89795)
test chain_1_000_wait     ... bench:    591176 ns/iter (+/- 164828)
test fanout_1_000         ... bench:  10284883 ns/iter (+/- 1993024)
test repeat_100_x_100     ... bench:   2194172 ns/iter (+/- 2243956)
test repeat_1_000         ... bench:   1203489 ns/iter (+/- 186731)
test repeat_1_000_x_1_000 ... bench: 180651629 ns/iter (+/- 31147220)
test start_die            ... bench:    141690 ns/iter (+/- 10331)

12 threads

test bench_fibb_steal     ... bench:   4266370 ns/iter (+/- 1680482)
test chain_10_use_die     ... bench:    782393 ns/iter (+/- 2540535)
test chain_10_wait        ... bench:    178198 ns/iter (+/- 32233)
test chain_1_000_use_die  ... bench:    774855 ns/iter (+/- 1612068)
test chain_1_000_wait     ... bench:    704695 ns/iter (+/- 196897)
test fanout_1_000         ... bench:  18206514 ns/iter (+/- 4213723)
test repeat_100_x_100     ... bench:   1432300 ns/iter (+/- 99255)
test repeat_1_000         ... bench:   1127044 ns/iter (+/- 462414)
test repeat_1_000_x_1_000 ... bench: 111746427 ns/iter (+/- 8963304)
test start_die            ... bench:   1875302 ns/iter (+/- 2491521)

A few of the tests are basically benchmarks of spawning threads start_die, chain_10_use_die for example.

It worries me that bench_fibb_steal gets worse as threads are added (it should be very parallel). And repeat_1_000_x_1_000 is at best a 3 times increase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants