Масштабирование частоты процессора работает не так, как задумано в Ubuntu 16.04
Масштабирование частоты процессора на моем ноутбуке (Intel® Core ™ TM i7-4810MQ с тактовой частотой 2,80 ГГц) не работает должным образом. После первоначальной установки Ubuntu 16.04 я не внес никаких изменений в отношении управления питанием или масштабирования частоты процессора. Обычно я привык к губернатору по требованию. Тем не менее, кажется, что этот регулятор был заменен некоторой pstate штукой и регулятором powersave в более новых ядрах.
Даже без нагрузки частоты процессора колеблются в диапазоне 2х, что приводит к шуму вентиляторов и нагреву устройства:
$ cat /proc/cpuinfo |grep -i mh
cpu MHz : 3435.468
cpu MHz : 2245.468
cpu MHz : 2800.218
cpu MHz : 2338.765
cpu MHz : 2800.546
cpu MHz : 2801.203
cpu MHz : 2800.875
cpu MHz : 2000.140
$ uptime
14:57:49 up 5:15, 1 user, load average: 0,01, 0,08, 0,16
$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 1:
driver: intel_pstate
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 2:
driver: intel_pstate
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.79 GHz.
analyzing CPU 3:
driver: intel_pstate
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 4:
driver: intel_pstate
CPUs which run at the same hardware frequency: 4
CPUs which need to have their frequency coordinated by software: 4
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 5:
driver: intel_pstate
CPUs which run at the same hardware frequency: 5
CPUs which need to have their frequency coordinated by software: 5
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.78 GHz.
analyzing CPU 6:
driver: intel_pstate
CPUs which run at the same hardware frequency: 6
CPUs which need to have their frequency coordinated by software: 6
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.90 GHz.
analyzing CPU 7:
driver: intel_pstate
CPUs which run at the same hardware frequency: 7
CPUs which need to have their frequency coordinated by software: 7
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.79 GHz.
Как ни странно, я также наблюдал обратное поведение: машина находилась под большой нагрузкой, но частоты снижались до примерно ок. 20-30сек все ядра достигли ~ 800МГц. Я проверил с помощью cpufreq-info, и конфигурация выглядела нормально (регулятор энергосбережения, минимальная / максимальная частота на соответствующих уровнях). К сожалению, я не могу воспроизвести ошибку...
Любая идея, что вызывает эти проблемы масштабирования или что можно сделать, чтобы исправить их?
1 ответ
Резюме
Да, при определенных условиях текущая версия драйвера intel_pstate может увеличивать частоту процессора при довольно небольших нагрузках. Однако, как правило, это НЕ приведет к "шуму вентиляторов и нагреву устройства", поскольку соответствующие процессоры выполняют свою работу быстрее и, следовательно, проводят больше времени в состояниях глубокого сна, противодействуя более высокой активной мощности. Мне только когда-либо удавалось приписать этой проблеме примерно дополнительные 1/2 ватта мощности пакета.
Что касается второй части вашего вопроса, о снижении частоты процессора при высокой нагрузке. Я могу только предположить, что происходит какое-то тепловое регулирование.
подробности
Очень важно определить "без нагрузки" или "холостой ход". Зачем? Потому что в системе с графическим интерфейсом "простоя" на самом деле много работы. В системе без сервера графического интерфейса "незанятость" обычно означает, что работы очень мало.
В системах с графическим интерфейсом проявление этой проблемы зависит от: частоты Гц ядра (100, 250, 300 или 1000 Гц); Частота кадров видеодрайвера; Как много фонового материала происходит; Способ, которым планировщик вращается между процессорами; Некоторые другие вещи, которые я забыл на данный момент.
Хотя временное исправление было добавлено, оно покрывает фактические нагрузки только на 1% или менее, но условие также может возникать для нагрузок, превышающих 1%. Также я не знаю, было ли это исправление в текущем ядре 16.04 или было перенесено в него.
Лучшее исправление находится в процессе, но это будет некоторое время, прежде чем оно будет выпущено.
А пока и при желании вы можете вернуться к драйверу acpi-cpufreq. Смотрите здесь или здесь, как.
Рекомендации
https://bugzilla.kernel.org/attachment.cgi?id=187781
https://bugzilla.kernel.org/show_bug.cgi?id=93521
https://bugzilla.kernel.org/show_bug.cgi?id=115771
http://marc.info/?l=linux-pm&m=147000845531378&w=2
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ffb810563c0c049872a504978e06c8892104fb6c