Я пытаюсь измерить среднюю частоту ЦП в ЦП с поддержкой DVFS для определенного интервала, очевидный способ периодической выборки / proc / cpuinfo имеет очень большие варианты. Драйвер cpufreq-stats дал мне надежду, например.
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
но, к сожалению, он смешан с неработающими тиками (см. патч "Не учитывать время простоя при отслеживании time_in_state"). Во время простоя вполне вероятно, что процессор вернется к самой низкой частоте, что приведет к значительному искажению частотного распределения.
Вышеупомянутый патч использует функцию account_idle_tick для удаления неактивных тиков из статики, но, похоже, работает только для ядра xen. Есть ли альтернативный способ измерить среднюю частоту процессора?
Новая версия для разработки Sysstat 9.1.6 включает новую опцию (-m FREQ) для сообщения средней частоты процессора, например.
$ 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 секунд частота составляет 1 ГГц, последние 2 секунды - 2 ГГц, затем средняя частота 1,2 ГГц.
возможно sar
это то, что вы ищете. Начиная с версии 9.0.0 sysstat
, sar
может собирать частоту процессора. Из 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.