Управление вентилятором Radeon RX-6xx0
Введение
Столкнулся с проблемой перегрева видюхи RX-6700XT на игровых нагрузках — и не только её самой, поскольку она ведь и вокруг себя изрядно греет.
- Процессор прямо над нею кипятится — мéста между видюхой, крышкой и стенками отнюдь не завались.
- М2-накопитель посреди видюхи и проца тоже знатно подгорает — хоть и с радиатором, и от проц-кулера на него дует… горячим.
- Дополнительным винчестерам в корзине, вставленной в пространство 5-дюймовых отсеков, жарко и душно.
- Да и тем, что в нижних 3,5-дюймовых, ни разу не уютно.
До некоторой степени спасает вариант поставить перед открытой крышкой системника большой настольный вентилятор (см. фото) — для всего, кроме самой видюхи: она ж к нему краем, и толку почти ноль. А заводская авторегулировка видюхиного ШИМа как-то не особо способствует её охлаждению даже зимой, о жаре за бортом вовсе молчу.
Реализация
Пошарив по просторам, нарыл массу графических «мониторилок» — но ни одной «крутилки» именно для АМД, хотя для ненаВидии — завались (один лишь «позеленевший от зависти» чего стóит). И это невзирая на то, что всё нужное доступно прямо из системы, без нужды ковыряться в проприетарщине… Странное дело.
При этом для командной строки нарубинено да напитонено всякого, но к чему плодить сущности, если всё можно сделать перманентно доступным шеллом? Проникся довольно замороченным решением amdgpu-fancontrol
и по образу/подобию слепил на скорую руку собственный упрощённый вариант, для которого понадобится тройка файлов — скрипт да конфиг c юнитом к нему (выложены на ГитХаб).
1) Файл настроек
развернуть/etc/sysconfig/amdgpufan |
---|
2) Запускающий юнит
развернуть/lib/systemd/system/amdgpufan.service |
---|
Как включать юниты, все давно знают. :)
3) Сам скрипт
развернуть/usr/local/sbin/amdgpufan |
---|
Пояснения
- Пользовательскими переменными из конфига задаю:
- card — № видюхи (судя по статьям от спецов, при наличии встройки оная будет пронумерована единичкой);
- min_tmp — температуру, ниже которой мослать вентилятором бессмысленно (с завода вентилятор не включается до 52°C процессора, а при остывании останавливается на 46°C);
- sensor — какой из датчиков «пасти»: процессора, самый холодный (памяти) или самый горячий (температуры перехода), однако max_tmp выбираю минимальную из критических;
- rate — частоту опроса со сменой значения в ШИМ-контроллере при выходе температуры из предыдущего диапазона (не обязательно делать это ежесекундно, чтоб и не дать перегреться, и не надоело листать портянку журнала);
- step — число сегментов, на которые будет разбит как диапазон регулируемых температур, так и шкала делений ШИМ-контроллера (вроде процентной, но не на 100, а на 255 делений);
- whithin — допустимый разброс задаваемого значения ШИМ с не всегда одинаковым текущим, а также перехлёст температурных диапазонов, дабы вентилятор не дёргался на градус разницы, внося сумятицу в умы и сердца.
- Запускать скрипт по таймеру не стал, оставил а-ля «резидентным» (см. цикл while), дабы между его запусками не бросать видюху в ручном режиме без управления (см. функцию setmode).
Результаты
Утро/вечер: веб-сёрфинг, общение, редактирование и пр.
Переключение ШИМа на 20% (51) после примерно 5-минутного прогрева до 48°C, далее — колебания в пределах 50..55°C.
Отход на перекус — температура примерно за то же время падает до 42°C, ШИМ обнуляется, далее — колебания как ночью.
Будним днём с повышением забортной температуры системная тоже подрастает и гуляет в рамках 40°C+ без запуска вентиляторов.
Мёртвая петля (DeathLoop) на максималках
Колебания температуры между 59 и 76°C с прыжками ШИМ от 51 до 102, 153 и обратно:
июн 03 21:17:40 comp.ill amdgpufan[1492297]: 66°C @153 PWM, switching to 102. июн 03 21:17:43 comp.ill amdgpufan[1492297]: 72°C @102 PWM. июн 03 21:17:46 comp.ill amdgpufan[1492297]: 72°C @102 PWM. июн 03 21:17:49 comp.ill amdgpufan[1492297]: 70°C @102 PWM. июн 03 21:17:52 comp.ill amdgpufan[1492297]: 76°C @102 PWM, switching to 153. июн 03 21:17:55 comp.ill amdgpufan[1492297]: 75°C @153 PWM. ... июн 03 21:18:07 comp.ill amdgpufan[1492297]: 59°C @153 PWM. июн 03 21:18:10 comp.ill amdgpufan[1492297]: 57°C @153 PWM, switching to 51.
Насыщенная сцена:
июн 03 21:18:13 comp.ill amdgpufan[1492297]: 82°C @ 51 PWM. июн 03 21:18:16 comp.ill amdgpufan[1492297]: 84°C @ 51 PWM. июн 03 21:18:19 comp.ill amdgpufan[1492297]: 87°C @ 51 PWM, switching to 204. июн 03 21:18:22 comp.ill amdgpufan[1492297]: 87°C @204 PWM. ... июн 03 21:18:43 comp.ill amdgpufan[1492297]: 87°C @204 PWM. июн 03 21:18:46 comp.ill amdgpufan[1492297]: 78°C @204 PWM, switching to 153. июн 03 21:18:49 comp.ill amdgpufan[1492297]: 59°C @153 PWM. июн 03 21:18:52 comp.ill amdgpufan[1492297]: 83°C @153 PWM. июн 03 21:18:55 comp.ill amdgpufan[1492297]: 85°C @153 PWM. июн 03 21:18:58 comp.ill amdgpufan[1492297]: 85°C @153 PWM. июн 03 21:19:01 comp.ill amdgpufan[1492297]: 86°C @153 PWM, switching to 204. июн 03 21:19:04 comp.ill amdgpufan[1492297]: 86°C @204 PWM. ... июн 03 21:19:49 comp.ill amdgpufan[1492297]: 85°C @204 PWM. июн 03 21:19:52 comp.ill amdgpufan[1492297]: 60°C @204 PWM. июн 03 21:19:55 comp.ill amdgpufan[1492297]: 58°C @204 PWM, switching to 51. июн 03 21:19:58 comp.ill amdgpufan[1492297]: 57°C @ 51 PWM. ... июн 03 21:20:22 comp.ill amdgpufan[1492297]: 58°C @ 51 PWM. июн 03 21:20:25 comp.ill amdgpufan[1492297]: 75°C @ 51 PWM, switching to 153. июн 03 21:20:28 comp.ill amdgpufan[1492297]: 75°C @153 PWM.
Далее как в начале игры.
Судя по графику, выше 90°C не поднималось, обороты на максимум — тоже. ЦПУ греется сопоставимо, но почти всю игру 75..90°C.
Ночь
41±2°C при нулевом ШИМе (шуме).
Выводы
До +30°C на улице большой внешний вентилятор сбоку более не нужен: игрушки на ультрах в высоком разрешении прогревают самый горячий компонент видюхи не выше 96°C, тогда как прежде и с вентилятором за сотку вылезало — теперь такое только при стресс-тестах, на которых до того система попросту аварийно отключалась. Как будет в самую жару, опробовать пока не довелось, но по результатам отчитаюсь.
Когда не ломанная / не чиненная железяка работает не так, как ожидается, порой на помощь спешат чип и… программные средства. Пусть без рюшечек и фантиков, зато задача решена на системном уровне. Ну, и есть надежда, что дружелюбного софта тоже не придётся долго ждать.
Итоги
…А после всех потуг открыл для себя пару штатных утилит
fancontrol
Который:
- запускается как служба;
- распоряжается всеми ШИМ-вентиляторами, подключёнными к мат.плате;
- настраивается утилиткой
pwmconfig
; - в дальнейшем правится вручную через конфиг.
Главное — правильно сопоставить конкретные вентиляторы остужаемым компонентам, не обязательно встроенным в материнку. При этом зависимость от датчиков вращения столь же необязательна. Вот пример моего конфига (уже под корпус Raven v03, см. ниже):
развернуть/etc/fancontrol |
---|
Обратите внимание: знак равенства не должен отделяться пропусками от имени опции, а вот значения, которых может быть более одного — вполне себе.
P.S. И ещё поменял корпус на огромный AeroCool xPredator FullTower с кучей больших вентиляторов (6х14 и 2х22 см) — теперь совсем красота!
UPD: Поменял и этот на не хуже продуваемый, но более компактный и удобный SilverStone Raven v03 (мат.плата в нём развёрнута на 90° по часовой — портами вверх).
thinkfan
Ещё лучше.
Доработал сильверстоун
Заменил штатные ноги на самопальную выкатную тележку из алюминиевого уголка, зафиксированного по узлам клёпками и копеечными колёсиками — стало ещё веселее. Фото будет позже.