AMD RYzen 7 перегрев 95 градусов

Ограничение максимальной температуры процессора AMD Ryzen 7 6800H в Arch Linux/Manjaro

С недавнего времени я являюсь обладателем процессора AMD Ryzen 7 6800H в составе ноутбука. Камень, конечно, быстрый, встройка AMD Radeon 680M позволяет в большинстве случаев обойтись без дискретной GPU. Но одна вещь меня в этом ЦП очень удивила, и, что преуменьшать, шокировала: если нагрузить на 100% все ядра процессора, его температура доходит до 93-95°C! Я с детства привык, что любое превышение по t ЦП более 75°C – плохо, однако инженеры AMD считают иначе, уверяя что температуры Ryzen 7 доходящие до 95°C – абсолютная норма и они специально спроектированы для работы на такой высокой температуре. Но и физику никто не отменял, и деградацию кремния на высоких температурах тоже. Как бы там ни было, температуру захотелось понизить, и сделать это в Arch Linux и Manjaro очень просто.

Установка RyzenAdj

Чтобы иметь возможность менять параметры работы процессоров AMD Ryzen, нужно установить специальную утилиту RyzenAdj. PKGBUILD, позволяющий это сделать быстро и просто, есть в AUR. Ставим с помощью любого aur-хелпера:

paru -S --noconfirm ryzenadj-git

Я не помню ставит ли утилита какие-нибудь dkms-модули, но если да, стоит перед продолжением перезагрузиться.

Теперь осталось ограничить максимальную температуру процессора нужным нам значением, за это отвечает параметр –tctl-temp. Я решил ограничить температуру своего Ryzen 80°C, для этого выполнил в консоли простую команду:

sudo ryzenadj --tctl-temp=80

Эту строчку можно поместить в crontab  для автоматического применения после перезагрузки. Так же рекомендую создать правило, периодически её применяющее, т.к., например, изменение режима энергопотребления системы её сбивает. Я настроил на применение каждые 5 минут с помощью cronie.

Готово! Теперь температура процессора никогда не превысит 80 градусов цельсия. Чем мы жертвуем? Производительностью, конечно же. Теперь при температуре 80°C процессор начнёт понижать тактовые частоты ядер, не допуская превышения своей температуры, тем самым понижая свою производительность.

Сохраняем установленное значение после перезагрузки

Осталось сделать так, чтобы установленное значение сохранялось после перезагрузки системы. Используем системный планирощик Cron. Открываем для редактирования:

sudo EDITOR=nano crontab -e

Помещаем туда строку

@reboot ryzenadj --tctl-temp=80

Сохраняем изменения и закрываем редактор: CTRL+O -> ENTER -> CTRL+X. Готово.

На сколько падает производительность?

Давайте измерим. Будем пользоваться тестом Unigine Superposition на встроенной в процессор видеокарте Radeon 680M:

  • 95 градусов: 3061 попугай
  • 80 градусов: 3049 попугаев

Падение производительности составляет менее 1%. Минимальное падение производительности в этом случае объясняется неполным задействованием данным бенчмарком всех ядер процессора, а видеокарта в процессоре не способна разогреть его до сверхвысоких температур.

Теперь давайте нагрузим процессор по полной. Сделаем это с помощью архиватора 7Zip, а именно его встроенного бенча, который можно запустить командой 7z b:

  • 95 градусов: 64066 попугаев
  • 80 градусов: 62369 попугаев

Падение производительности составило менее 3%.

Как видим, максимальное падение производительности в моём случае составило несколько процентов, что для меня абсолютно не критично. Задача решена.