jvm Java守护进程性能测试未获得一致的结果

nzkunb0c  于 2023-01-30  发布在  Java
关注(0)|答案(1)|浏览(75)

我正在测试一个用Java编写的代理/守护进程的CPU消耗。为了避免垃圾收集造成的偏差,我一直在尝试更长的时间来运行每个分析。一开始我尝试了15分钟,后来达到了2小时。然而我刚刚发现,即使运行2小时,我也会得到非常不一致的结果。-一次运行2小时给了我6%的CPU,另外两个小时给了我12%的cpu。
对于获得一致的结果有何建议?

bis0qfac

bis0qfac1#

你是否在控制CPU频率?如果没有太多的工作要做,操作系统(或CPU本身)可能会降低时钟频率以保存电力。通过积极的电力管理策略,CPU在运行时将始终以最大值运行,因此查看CPU%可能是有意义的。
在Skylake或更高版本CPU上的Linux上,您可以将每个内核的EPP设置为performance,以使其在运行时以最大速度运行。

sudo sh -c 'for i in /sys/devices/system/cpu/cpufreq/policy[0-9]*/energy_performance_preference;do echo performance > "$i";done'

否则,可以用核心时钟周期(如Linux perf stat java ...)而不是CPU %来衡量,或者至少看看它运行时的平均时钟速度。(相对于DRAM而言,较低的时钟速度可能会使事情发生偏差,因为缓存未命中会延迟较少的周期。)

相关问题