Странные проблемы масштабирования cpufreq: независимо от регулятора, максимальный cpufreq постепенно уменьшается при пробуждении

Я использую Ubuntu Mate 15.10 64bit (ядро 4.2.0) на Lenovo y5070 с процессором i7-4710HQ. Недавно я заметил (возможно, после недавнего dist-upgrade), что некоторые программы работают очень медленно. После небольшого исследования выясняется, что intel_pstate по умолчанию переключается на регулятор powersave, который корректно уменьшает мой процессор до 600 МГц, когда я ничего не делаю интенсивно. Тем не менее, он больше не увеличивает масштаб процессора, когда я делаю что-то интенсивное.

Чтобы это исправить, я установил GOVERNOR = "performance" в:

/etc/init.d/cpufrequtils. 

После загрузки cpufreq правильно остается на частоте около 2,5 ГГц, а регулятор правильно настроен на "performance". Однако через минуту регулятор автоматически переключается обратно на «powersave» и cpufreq снова падает. Если я затем вручную установлю регулятор с помощью cpufreq-set, он вернется к 2,5 ГГц.

Вторая проблема, которую я заметил, заключалась в том, что каждый раз, когда я приостанавливаю и просыпаю свой ноутбук, максимальный cpufreq падает постепенно (эти приращения одинаковы каждый раз):

перед приостановкой:

current policy: frequency should be within 800 MHz and 3.50 GHz.
              The governor "performance" may decide which speed to use
              within this range.
current CPU frequency is 2.20 GHz.

после первого пробуждения:

current policy: frequency should be within 800 MHz and 2.10 GHz.
              The governor "performance" may decide which speed to use
              within this range.
current CPU frequency is 1.12 GHz.

после второго пробуждения:

current policy: frequency should be within 800 MHz and 1.40 GHz.
              The governor "performance" may decide which speed to use
              within this range.
current CPU frequency is 1.30 GHz.

и т. Д.

Примечание: регулятор по-прежнему настроен на «производительность».

Попытка установить cpufreq max с помощью cpufreq-set:

for ((i=0;i<$(nproc);i++)); do sudo cpufreq-set -c $i -u 3.50GHz; done

не имеет никакого эффекта.

Наконец, я также попытался отключить intel_pstate в grub и установить для конфигурации acpi значение «performance»; это страдает от той же проблемы приостановки / пробуждения.

Любое понимание будет оценено!

Редактировать 1: я пробовал это , что предполагает, что проблема может заключаться в том, что часовая модуляция автоматически включается при пробуждении, что конфликтует с intel_pstate. Действительно, похоже, что тактовая модуляция включена, но ее отключение с помощью:

sudo wrmsr -a 0x19a 0x0

не приводит к заметному изменению частот, и я все еще не могу изменить максимальное значение cpufreq.

Редактировать 2: @DougSmythies на моем компьютере, эти файлы в другом месте, это соответствующие распечатки (я исключил частоты для остальных 7 ядер, они идентичны). Также обратите внимание, что в настоящее время я использую драйвер acpi:

cat /sys/devices/system/cpu/cpu*/cpufreq/cpu_min_freq
800000 

cat /sys/devices/system/cpu/cpu*/cpufreq/cpu_max_freq
2501000

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq                                                 
2501000 

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq                                                 
800000

Я не могу найти файл intel_pstate нигде в /sys/devices.

Редактировать 3: @DougSmythies Я перезагрузил с драйвером intel_pstate и приостановил и разбудил машину. Ядра работают примерно на 2000 в режиме производительности. Максимальная частота составляет 2,1 ГГц согласно cpufreq-info; это было 3,5 ГГц до приостановки. Вот вывод файлов, которые вы запрашивали (только для cpu0, они все одинаковые):

$cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 
3500000
$cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq                                                 
800000
$cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 
2100000
$cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 
800000

$grep . /sys/devices/system/cpu/intel_pstate/*                                                                                                                                                                                                      
/sys/devices/system/cpu/intel_pstate/max_perf_pct:60
/sys/devices/system/cpu/intel_pstate/min_perf_pct:22
/sys/devices/system/cpu/intel_pstate/no_turbo:0
/sys/devices/system/cpu/intel_pstate/num_pstates:28
/sys/devices/system/cpu/intel_pstate/turbo_pct:36
2
задан 13 April 2017 в 15:25

1 ответ

Вы - possbily, затронутый этой ошибкой:

https://bugzilla.kernel.org/show_bug.cgi? id=114551

патч, только посаженный в ядре v 4.6 магистрали. В свое время возможно, это будет бэкпортировано к 16.04LTS, или в феврале 2017, это должно прибыть в следующую Стопку Реализации возможностей LTS:

https://wiki.ubuntu.com/Kernel/LTSEnablementStack#Kernel.2FSupport. A16.04.x_Ubuntu_Kernel_Support

0
ответ дан 14 April 2017 в 01:25

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

Похожие вопросы: