quarkus
quarkus copied to clipboard
Document tips for OS tuning for performance measurements
Description
I recently read a discussion on Zulip around performance measurements and OS tuning to limit interference.
It was pretty exciting so I went ahead and checked Quarkus documentation to learn a bit more. But I found nothing on that topic in Quarkus guides.
Please document some tips and best practices for OS tuning for more reliable performance measurements.
Implementation ideas
Introduce a dedicated guide or extend the https://quarkus.io/guides/performance-measure guide.
New content could be linked from https://github.com/quarkusio/quarkus/blob/main/TROUBLESHOOTING.md too.
Topics mentioned on Zulip chat:
- using taskset/isolcpu
- HT off, CPU governor disabled
- no turbo boost and CPU frequency set to a concrete value
- drop all OS page caches backed by files
CC @franz1981 @johnaohara
And I would add, copying the @galderz comments in the JIRA: averages probably are not the right tool for the job. @johnaohara any proposal? I was thinking something similar to https://github.com/openjdk/jmh/blob/99e9c19c80a0133c28f6532ef2b5776d5b8bd023/jmh-core/src/main/java/org/openjdk/jmh/util/AbstractStatistics.java#L30 with the idea of reporting score + error at a confidence interval. And JMH can perform single-shot (multi-fork) tests too, that doesn't have many samples: that seems quite similar use case
/cc @MichalMaler, @ebullient, @hmanwani-rh, @inoxx03, @michelle-purcell, @sheilamjones, @sunayna15