Масштабирование частоты процессора работает не так, как задумано в 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

Другие вопросы по тегам