-
Notifications
You must be signed in to change notification settings - Fork 60
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
Philosophers: Inverse scalability "problem" #440
Comments
Thanks for bringing it up! I don't have a good solution either, partly because we may be using Renaissance differently — we compare data from systems with identical hardware configurations (including CPU count), and we are not looking at how repetition times change with the number of available processors, but how repetition times change due to changes in JVM. We have previously limited parallelism in most Spark benchmarks because we observed serious trashing when run on 64-core machines and we don't have a common workload scaling strategy for the suite (yet). While we consider that to be a drawback that we would like to fix (many workloads won't scale beyond certain number of cores and need more work to keep the extra cores busy doing sensible things), it might go against your expectation that the amount of work should stay the same regardless of the amount of available resources. For us the purpose of workload scaling is to reduce contention when more hardware resources are available, but I'm not sure if that's how the scaling in the
The time for completing a work unit keeps decreasing until the number of threads hits 64, where the increased workload probably increases contention (on average). There is probably enough wobble in the timing that this case may still be considered to scale (not great, but still). Would you agree with that interpretation or did I make some gross oversimplification? That said, it may be a good idea to fix or bound the number of philosophers, but it may take us some time until we come up with an actual number to put in a release. Normally, I would suggest to override the Alternatively, we could fix the number of threads in the |
We have been studying the performance of
philosophers
on large machines, and realized that the number of CPUs on the machine selects the number of philosophers in the benchmark.This means that machines that run different number of CPUs run different workloads, misleading the cross-hardware comparisons. AFAICS, this is not what usual benchmarks do: in most benchmarks, higher available hardware parallelism performs globally same amount of work, either showing improvement due to parallelism, or degradation due to contention. In
philosophers
, adding hardware parallelism just makes benchmark slower, because the global amount of work is larger, on top of usual contention effects.The easy way to demonstrate this is overriding
-XX:ActiveProcessorCount=#
on a large 64-core machine:(The benchmark also trashes hard when all CPUs are busy, but I think that is just a way it works.)
I don't have a good solution for this, except maybe setting the number of philosophers at some fixed value.
The text was updated successfully, but these errors were encountered: