-
Notifications
You must be signed in to change notification settings - Fork 272
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
Bimodal behavior with GC Workstation 2GB Pinning Benchmark #1992
Comments
@cshung I believe this is yours |
Thank you @danmoseley. |
Thanks @danmoseley and @cshung Yes, the main concern is the usability of the gc benchmark results if this type of fluctuation is inherently present. It introduces a lot of noise and makes it difficult to produce valid comparisons. For this example in particular, it looks like the gc gets stuck in some state where it always needs to do gen1 and gen2 collects after the initial 15k pinned object event, so I'm also curious as to why this happens intermittently between separate benchmark runs using the exact same config. On your end, are these gc benchmarks the main tool used to validate perf when making changes to the gc? In general do you experience any significant noise in the gc benchmark results and if so what would be the best way to reduce this noise (specifically on windows x64)? Thanks |
@cshung Any luck getting this to reproduce on your end? Thanks |
@L2, my apologies for not responding promptly. I was focusing on investigating a stress crash bug for the last few weeks. I have not nailed it down yet. Since that might crash users' applications and therefore I gave that bug a higher priority. I will get back to this issue as soon as I can. |
I ran the benchmark 100 times and here is a histogram of total seconds taken to run the benchmark: x-axis is total seconds taken, y-axis is the number of runs. So I conclude I cannot reproduce this locally. That being said, GC performance is likely to be correlated with the machine-specific parameters (e.g. processor speed, amount of memory, amount of cache available).
Without knowing exactly what happened, it is difficult for us to investigate. At a very high level, we are suspecting that you are hitting right at the level of some performance tuning heuristic in the GC, so depending on luck, this falls into one of the two possible branches, and then it stuck there. |
a good way to go about this is if @L2 doesn't mind, they could send us the GCCollectOnly traces for when it demonstrates the bimodal behavior. the GCCollectOnly traces contain no PII so hopefully that's not a problem. |
When running the following benchmark, it will either complete in 25 seconds or 60 seconds. From about 30 iterations of the benchmark, ~40% of the time it'll take 60 seconds to finish.
(note that the values for
sohsr
,lohsr
, andpohsr
are set to a single value, but kept as a range to make the script work)From Perfview's gc stats, it looks like at around gc collection # 3470, we pin about 15k objects.
Thanks
The text was updated successfully, but these errors were encountered: