CPU frequency scaling

Материал из poiuty wiki
Перейти к: навигация, поиск

acpi-cpufreq

Процессор работает в ondemand режиме.

grep MHz /proc/cpuinfo
cpu MHz         : 1600.000
cpu MHz         : 1600.000
cpu MHz         : 1600.000
cpu MHz         : 1600.000
cpu MHz         : 1600.000
cpu MHz         : 1600.000
cpu MHz         : 1600.000
cpu MHz         : 1600.000

Дополнительно проверим через turbostat.

 CPU   GHz    TSC
 avg   1.60   3.40
   0   1.60   3.40
   1   1.60   3.40
   2   1.60   3.40
   3   1.60   3.40
   4   1.60   3.40
   5   1.60   3.40
   6   1.60   3.40
   7   1.60   3.40

Включим performance режим.

cpufreq-set -g performance -r

Смотрим частоту процессора. Вроде все ок. Но на самом деле это фейк.

grep MHz /proc/cpuinfo
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000

Смотрим по turbostat.

  CPU   GHz    TSC
 avg   2.14   3.40
   0   1.75   3.40
   1   2.20   3.40
   2   3.73   3.40
   3   3.85   3.40
   4   2.03   3.40
   5   1.78   3.40
   6   1.72   3.40
   7   1.95   3.40

Если нагрузить процессор, то Mhz увеличится, а так же включится turbo boost.

 CPU   GHz    TSC
 avg   3.70   3.40
   0   3.70   3.40
   1   3.70   3.40
   2   3.70   3.40
   3   3.70   3.40
   4   3.70   3.40
   5   3.70   3.40
   6   3.70   3.40
   7   3.70   3.40

Но при этом, по cpuinfo => мы увидим все те же 3.4Ghz.

grep MHz /proc/cpuinfo
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000
cpu MHz         : 3401.000

intel_pstate

Аналогично. Но cpuinfo будет показывать реальные данные.

grep MHz /proc/cpuinfo
cpu MHz         : 1595.742
cpu MHz         : 1705.843
cpu MHz         : 3614.890
cpu MHz         : 3749.562
cpu MHz         : 2176.664
cpu MHz         : 1815.546
cpu MHz         : 1971.070
cpu MHz         : 1605.835

------

grep MHz /proc/cpuinfo
cpu MHz         : 3700.023
cpu MHz         : 3700.023
cpu MHz         : 3700.023
cpu MHz         : 3700.023
cpu MHz         : 3700.023
cpu MHz         : 3700.023
cpu MHz         : 3700.023
cpu MHz         : 3700.023

Кроме этого, можно через драйвер выключить/ включить Turbo Boost.

echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo
CPU   GHz    TSC
 avg   3.70   3.40
   0   3.70   3.40
   1   3.70   3.40
   2   3.70   3.40
   3   3.70   3.40
   4   3.70   3.40
   5   3.70   3.40
   6   3.70   3.40
   7   3.70   3.40

echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
 CPU   GHz    TSC
 avg   3.40   3.40
   0   3.40   3.40
   1   3.40   3.40
   2   3.40   3.40
   3   3.40   3.40
   4   3.40   3.40
   5   3.40   3.40
   6   3.40   3.40
   7   3.40   3.40

Заключение

Чтобы отключить frequency scaling, нужно выключить в BIOS => StepSpeed и C1E.
Но некоторые DC - запрещают это делать. Таким образом они экономят на электричестве.

DONT touch any BIOS Settings. If you do and we must do an Reset it will cost an fee of 21€. All Settings are fine for our Datacenter.

Если не хотим получить вопрос "почему у меня ядро XXXXMhz, а не 3400?" - используем acpi-cpufreq.
Но в любом случае, если клиент будет использовать CPU -> то получит его в полном объеме.

Спасибо LOR и Pavel Odintsov.