I'm trying to measure the average cpu frequency in an DVFS enabled cpu for specific interval , the obvious way of periodically sampling /proc/cpuinfo has very large variants. The cpufreq-stats driver gave me some hope ,e.g.
cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state 2600000 118148 2000000 8562 1600000 11041 1200000 3428602 # lots of ticks is idle ticks
but unfortunately it is mixed with idle ticks(see patch "Do not account for idle time when tracking time_in_state"). During idle time it is probable that cpu will fall back to the lowest frequency ,thus skew the frequency distribution significantly .
The patch above utilize the account_idle_tick function to remove the idle ticks from statics, but it seems only works for xen kernel. Is there alternative way to measure average cpu frequency?
The new development version Sysstat 9.1.6 includes a new option (-m FREQ) to report average cpu frequency ,e.g.
The average weight is the time spent in that frequency , for example in a 10 second reporting interval , first 8 seconds the frequency is in 1GHz, the last 2 seconds is in 2GHz, then the average frequency 1.2 GHz
perhaps
sar
is what you are looking for. As of release 9.0.0 ofsysstat
,sar
can collect the cpu frequency. Fromman sar
: