我们的团队正在使用hdrhistograms监控应用程序的延迟。当我把async profiler附加到它时,所有的百分位数都会急剧增加。
操作系统:red hat enterprise linux 8.1版(ootpa)
jvm:11.0.8-zing\u 20.08.2.0-b2-product-linux-x86\u 64
如果我用标志-i 1000-t连接探查器,就会发生这种情况:
如果我用标志-i 100000-t连接探查器,就会发生这种情况:
降低采样频率明显减少了开销,但仍然很大。我有两个问题:
除了降低采样频率之外,还有其他方法可以减少分析开销吗?也许有一些神奇的内核/jvm标志?
这种开销会严重扭曲配置文件本身吗?
谢谢您
1条答案
按热度按时间gkn4icbw1#
分析间隔以纳秒为单位。可以显式指定单位,例如。
-i 10ms
. 就你而言,-i 1000
意味着1000纳秒,这不是一个合理的采样间隔:该过程将只进行连续采样,而不是有用的工作-当然,结果配置文件将不会反映真实的图片。从默认间隔(10ms)开始,仅在绝对需要时才减小间隔。我已经解释了这个答案的合理范围:
至于评测间隔,10ns大约是20-50cpu指令。以这样的速度取样简直是不可能的。这个过程除了在探查器中花费所有的时间之外什么也不做。
cpu模式下的默认采样间隔为10ms。此选项对于在生产中进行分析足够好:对于一个平均应用程序,分析开销可以忽略不计,而采样数足以收集有意义的分析。
对于基准测试和在短时间内分析实际应用程序,1ms间隔通常是很好的。较低的间隔很少有用-也许,只用于捕获一段运行时间较短的代码的概要文件。