我试图在特定的时间间隔内测量启用了DVFS的CPU的平均CPU频率,定期采样/ proc / cpuinfo的明显方式有很大的变化。 cpufreq-stats驱动给了我一些希望,例如
cat / sys / devices / system / cpu / cpu0 / cpufreq / stats / time_in_state 2600000 118148 2000000 8562 1600000 11041 1200000 3428602#很多蜱是空闲的蜱虫
但不幸的是,它与闲置的滴答声混合在一起(见补丁“跟踪time_in_state时不占空闲时间” )。 在空闲时间内,cpu可能会回落到最低频率,从而显着扭曲频率分布。
上面的补丁使用account_idle_tick函数从静态中删除空闲的tick,但似乎只适用于xen内核。 有没有其他的方法来衡量平均CPU频率?
新的开发版本Sysstat 9.1.6包含一个新的选项(-m FREQ)来报告平均CPU频率,例如
$ sar -m FREQ -P ALL 0 Linux 2.6.30.10-105.2.23.fc11.i686.PAE (palmer.localdomain) 10/23/2010 _i686_ (2 CPU) 02:36:09 PM CPU wghMHz 02:36:09 PM all 1042.23 02:36:09 PM 0 1039.43 02:36:09 PM 1 1166.65
平均重量是在该频率上花费的时间,例如在10秒的报告间隔中,前8秒频率在1GHz,最后2秒在2GHz,然后平均频率1.2GHz
也许sar是你在找什么。 从sysstat版本9.0.0开始, sar可以收集CPU频率。 从man sar :
-m Report power management statistics. Note that these statistics depend on sadc option "-S POWER" to be collected. The following value is displayed: MHz CPU clock frequency in MHz.