Я использую 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
Вы - 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