Вопрос или проблема
Новый драйвер pstate
от Intel меня ужасно раздражает, потому что они убрали добрый старый губернатор powersave
, который позволял мне устанавливать минимальную доступную частоту процессора и запускать мои численные симуляции на часах или днях на приятно тихом, холодном ноутбуке. Чтобы все стало еще хуже, то, что они теперь называют powersave
, по сути является старым губернатором ondemand
, то есть режимом, в котором частота процессора увеличивается в зависимости от нагрузки, а с ней и шум вентилятора:
Поскольку эти политики реализованы в драйвере, они не совпадают с реализацией губернаторов масштабирования cpufreq, даже если они имеют одинаковое имя в sysfs cpufreq (scaling_governors). Например, политика “performance” похожа на губернатор cpufreq(TM) “performance”, но “powersave” совершенно отличается от губернатора cpufreq “powersave”. Стратегия здесь подобна cpufreq “ondemand”, где запрашиваемое P-State связано с нагрузкой на систему.
(Цитата взята из https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt)
Теперь, пожалуйста, есть ли другой способ держать частоту моего процессора на минимуме? Это действительно важно для меня. Я просто предпочитаю выбросить ноутбук через окно, если я в конечном итоге не смогу установить постоянную, минимальную частоту процессора. Вот как я использую свой ноутбук, и вот для чего он мне нужен, и я уже несколько дней пытаюсь это сделать!
Я пробую это, и это не работает:
echo 42 | sudo dd of=/sys/devices/system/cpu/intel_pstate/max_pref_pct
чтобы установить максимальную скорость на 42%, и это не влияет, процессор продолжает работать на 100% всякий раз, когда я что-то делаю. Что я делаю не так? (нужно ли перезагрузить какой-то сервис или что-то в этом роде?)
Есть ли способ это сделать? Также, позволит ли процессор не от Intel мне это сделать? Я не против купить другой ноутбук, если это решит проблему.
Ну, оказывается, что новый драйвер pstate
от Intel крут, но сначала нужно немного попрактиковаться в древнем, утраченного искусстве чтения документации.
Я оставлю свой вопрос как есть, потому что, судя по всему горю и разочарованию, которые я вижу по всему интернету, я не первый, кто столкнулся с этой проблемой.
Новый драйвер процессора имеет много опций, но я ограничу свое объяснение чем-то простым и, для меня, более чем достаточно и удовлетворительным. Прежде всего:
sudo apt-get install linux-cpupower
(или эквивалент в ваших дистрибутивах, не основанных на Debian)
Теперь есть 2 поведения (губернатора) с названиями powersave
и performance
, но это довольно неудачная схема именования, потому что эти губернаторы не имеют ничего общего с теми, которые носят те же имена в старом драйвере:
-
powersave
теперь означает переменная частота, зависящая от нагрузки, то есть это по сути старый губернаторondemand
. Вы можете установить минимальную и максимальную частоту, и если эта максимальная частота установлена на максимальную частоту, которую может достичь ваш процессор (что, как я полагаю, является значением по умолчанию), то вы не экономите абсолютно ничего. Вы даже можете увеличить минимальную частоту до второго по величине значения, и результатом будет процессор почти на полную мощность 24/7, а губернатор все равно будет называться powersave. Им стоило бы назвать этот губернатор VARIABLE или что-то подобное, чтобы избежать путаницы среди пользователей и избавить разработчиков от множества ложных сообщений о ошибках ядра. -
performance
здесь означает постоянная частота, независимо от нагрузки, и это зависит от того, что пользователь установил как максимум. Когда этот губернатор установлен, минимальная частота игнорируется, и процессор работает на частоте, которую вы установили как максимальную. Если вы установили очень низкую частоту, то вы не увидите никакого особого повышения производительности или чего-либо подобного, просто получите замедленный процессор на постоянной частоте. Им стоило бы назвать этот губернатор CONSTANT или что-то подобное, чтобы избежать разочарования многих людей вроде меня, привыкших к старой схеме.
Итак, вот несколько примеров, которые работают как charm, по крайней мере с ядром 4.14. Я буду использовать в качестве минимальной и максимальной частоты значения для моего процессора: 0.4 и 3.1 ГГц. Смотрите свои с помощью cpupower frequency-info
Постоянная, минимальная частота во всех ядрах
Это ТАК И есть то, что я хотел! Мы получаем это, устанавливая губернатора постоянной частоты и устанавливая минимально доступную частоту в качестве максимальной:
sudo cpupower frequency-set -g performance
sudo cpupower frequency-set -u 400MHz
Постоянная, максимальная частота во всех ядрах
(Вы видите, что это часто запрашивают для настольных компьютеров, где это имеет смысл, хотя есть и люди, готовые сломать вентилятор своего ноутбука)
sudo cpupower frequency-set -g performance
sudo cpupower frequency-set -u 3100MHz
Переменная частота между минимальной и максимальной частотами во всех ядрах
(это называли ondemand со старым драйвером acpi-cpufreq
)
sudo cpupower frequency-set -g powersave
sudo cpupower frequency-set -d 400MHz
sudo cpupower frequency-set -u 3100MHz
Переменная частота между минимальной и умеренной частотой во всех ядрах
(может быть, потому что вы хотите получить немного больше скорости, когда это необходимо, но не хотите достигать максимума и слышать, как вентилятор дует, как сумасшедший)
sudo cpupower frequency-set -g powersave
sudo cpupower frequency-set -d 400MHz
sudo cpupower frequency-set -u 1200MHz
И так далее. Это очень просто и работает действительно хорошо. Вы также можете установить постоянную низкую частоту в одном ядре, где выполняются тяжелые численные задачи, в то время как в другом ядре оставить переменную частоту, где вы запускаете более обычные задачи (электронная почта, веб-браузинг…). Смотрите taskset
для получения дополнительной информации.
У меня это работает с:
echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
это работает только на 50% производительности/скорости, в то время как нагрузка на процессор 100%
После того как я потратил много дней на поиски решения для установки постоянной частоты (для проведения научного эксперимента), я наконец сдался. Я попробовал много разных решений, включая губернатор performance
(как предложил Мефистофель), переключение между active
и passive
режимами драйвера intel_pstate, отключение защиты PPC, переход с intel_pstate на acpi-cpufreq и т. д.
Ни одно из этих решений не оказало влияния на установку постоянной частоты. Затем я нашел этот комментарий в документации ядра:
Для современных процессоров Intel частота контролируется самим процессором, и P-state, выставленные программному обеспечению, связаны с уровнями производительности. Идея о том, что частоту можно установить на одну частоту, является вымыслом для процессоров Intel Core. Даже если драйвер масштабирования выбирает один P-state, фактическая частота, на которой будет работать процессор, выбирается самим процессором.
Таким образом, нет надежного способа это сделать, P-states – это всего лишь рекомендации, аппаратное обеспечение продолжит принимать решения самостоятельно. На моем процессоре (Intel J4105) кажется, что аппаратное обеспечение полностью игнорирует настройки, поступающие от программного обеспечения.
echo "50" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
Если вы хотите сделать это постоянным, то вам нужно создать /etc/tmpfiles.d/max-perf-pct.conf
:
# Путь Режим UID GID Время Аргумент
w /sys/devices/system/cpu/intel_pstate/max_perf_pct - - - - 50
Вы можете сделать то же самое с min_perf_pct
, no_turbo
и т. д.
Ответ или решение
Вопрос: Возможно ли установить постоянную минимальную частоту процессора в рамках современного драйвера PSTATE?
Введение
С введением нового драйвера PSTATE от Intel, многие пользователи столкнулись с изменениями, касающимися управления частотой процессора. Это вызвало вопросы о возможности установки постоянной минимальной частоты. В данной статье мы рассмотрим особенности работы драйвера PSTATE, а также предложим возможные решения для достижения желаемого результата.
Изменения в драйверах
Как было замечено, традиционный governador powersave
, который позволял устанавливать минимальную частоту процессора, был заменён в новом драйвере концепцией, основанной на P-статах. Отрывок из документации подчеркивает, что современные процессоры Intel контролируют частоту самостоятельно. Тем не менее, настройка параметров в системе все же доступна.
Как настроить минимальную частоту
Существует несколько методов управления частотой процессоров на устройствах с драйвером PSTATE.
-
Использование утилиты cpupower
Установите пакеты, если они ещё не установлены:sudo apt-get install linux-cpupower
После установки можно задать уровень производительности с помощью команды:
sudo cpupower frequency-set -g performance sudo cpupower frequency-set -u 400MHz
В данном случае,
-g performance
активирует режим, в котором частота будет оставаться постоянной, в то время как-u 400MHz
устанавливает частоту на минимально возможное значение. -
Кастомизация параметров P-state
Создание файла/etc/tmpfiles.d/max-perf-pct.conf
позволяет зафиксировать желаемые значения, например:w /sys/devices/system/cpu/intel_pstate/max_perf_pct - - - - 50
Данная команда будет выставлять производительность процессора на 50% даже при полной нагрузке.
Ограничения и особенности
Важно отметить, что даже с установленными значениями, некоторые процессоры могут игнорировать параметры, выставленные пользователем, так как они ориентированы больше на внутренние настройки, нежели на заданные пользователем. Огрехи возникают не только из-за драйвера, но и из-за архитектуры процессора. Например, ваша модель Intel (например, J4105) может обрабатывать настройки очень ограниченно, не позволяя установить необходимую частоту.
Итог
Таким образом, хотя некоторые методы позволяют управлять частотой процессора в рамках нового драйвера PSTATE, возможность установки постоянной минимальной частоты во многом зависит от специфики конкретного процессора. Если вы столкнулись с ограничениями в управлении частотой, возможно, стоит рассмотреть альтернативное оборудование (например, процессоры от AMD или более старые модели Intel, которые могли бы предоставить необходимые возможности) или использовать другие решения дляCooler системы.
Для пользователей, ценящих хладнокровие и эффективность, мы предлагаем предложенные стратегии как рабочее решение. Чтение и понимание документации может избавить от множества недоразумений и ошибок в будущем.