Назад | Перейти на главную страницу

Как измерить среднюю частоту процессора в Linux?

Я пытаюсь измерить среднюю частоту ЦП в ЦП с поддержкой 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.