java上的异步探查器开销

pdkcd3nj  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(339)

我们的团队正在使用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标志?
这种开销会严重扭曲配置文件本身吗?
谢谢您

gkn4icbw

gkn4icbw1#

分析间隔以纳秒为单位。可以显式指定单位,例如。 -i 10ms . 就你而言, -i 1000 意味着1000纳秒,这不是一个合理的采样间隔:该过程将只进行连续采样,而不是有用的工作-当然,结果配置文件将不会反映真实的图片。从默认间隔(10ms)开始,仅在绝对需要时才减小间隔。
我已经解释了这个答案的合理范围:
至于评测间隔,10ns大约是20-50cpu指令。以这样的速度取样简直是不可能的。这个过程除了在探查器中花费所有的时间之外什么也不做。
cpu模式下的默认采样间隔为10ms。此选项对于在生产中进行分析足够好:对于一个平均应用程序,分析开销可以忽略不计,而采样数足以收集有意义的分析。
对于基准测试和在短时间内分析实际应用程序,1ms间隔通常是很好的。较低的间隔很少有用-也许,只用于捕获一段运行时间较短的代码的概要文件。

相关问题