[Решено, документировано] Gigabyte Radeon RX 560 и поддержка функции "остановка вентиляторов в простое" на Gentoo Linux
Собственно, имею Gigabyte Radeon RX 560, где заявлена эта функция. И на оффтопике вентиляторы охладителя вполне себе останавливаются. Ваш покорный слуга, как обладающий инженерным мышлением и соображающий, что мало шума не бывает, решил начать поиски метода воплотить эту функцию и у нас.
Насколько я понимаю, при загрузке amdgpu родной биос видеокарты заменяется (?) поставляемым с firmware. Возможно, все это через драйвер и настраивается? Я нашел метод настройки через демон fancontrol. Аналогичным образом, кстати, можно настроить и для процессора.
В общем, To Do:
1) Посмотреть режимы производительности драйвера Выполнено.
2) Поискать информацию в интернете. Выполнено.
3) Посмотреть acpi Нет необходимости?
4) Поэкспериментировать с fan-control Выполнено, итоговая реализация основана на нем.
Отмечу: похоже, режимы dpm не оказывают прямого влияния на скорость вентиляторов.
Обновление 2: Пока настроил схему с помощью демона fancontrol, поставляемого в комплекте с lm_sensors
$ eix lm_sensors [I] sys-apps/lm_sensors Доступные версии: 3.3.4-r1 3.3.5 ~3.4.0 3.4.0_p20160725(0/4.4.0) {sensord static-libs ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32"} Установленные версии: 3.4.0_p20160725(19:39:10 06/11/17)(sensord -static-libs ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="32 64 -x32") Домашняя страница: http://www.lm-sensors.org/ https://github.com/groeck/lm-sensors Описание: Hardware Monitoring user-space utilities
По придуманному мной алгоритму
1) Находим минимум ШИМ, при котором останавливаются вентиляторы
echo ПЕРЕБИРАЕМ_ЗНАЧЕНИЕ_от_0_до_255 > /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/pwm1 Путь до датчика может отличаться, см Следить за оборотами можно # watch sensors
2) Находим минимум ШИМ, при котором запускаются вентиляторы (величины конструкционно различны!)
echo ПЕРЕБИРАЕМ_ЗНАЧЕНИЕ_от_255_до_0 > /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/pwm1
3) # man fancontrol
Или по вышеупомянутому руководству арчвики
4) Привожу свой пример настройки для видеокарты
# cat /etc/fancontrol # Edited by rarogcmex INTERVAL=2 DEVPATH=hwmon0=devices/pci0000:00/0000:00:01.0/0000:01:00.0 DEVNAME=hwmon0=amdgpu FCTEMPS=hwmon0/pwm1=hwmon0/temp1_input FCFANS= hwmon0/pwm1= MINTEMP=hwmon0/pwm1=57 MAXTEMP=hwmon0/pwm1=82 MINSTART=hwmon0/pwm1=77 MINSTOP=hwmon0/pwm1=68 MINPWM=hwmon0/pwm1=67 MAXPWM=hwmon0/pwm1=250
Далее нам нужно, что бы демон fancontrol умирал только при потере компьютером питания, а не отключался как другие демоны, ведь в противном случае будет шум самолета при отключении. Ведь наша система автоматически прибивает все демоны при выключении, без управляющего демона обороты вентилятора автоматически становятся 255 из 255 для защиты оборудования!
Сделать это можно, если 1) Остановить демон контролируемо. 2) Сразу после этого сообщить видеокарте скорость оборотов вручную таким же методом, каким мы искали значения запуска вентилятора.
Для этого воспользуемся демоном local. Инструкция по настройке тут
# cat /etc/local.d/README This directory should contain programs or scripts which are to be run when the local service is started or stopped. If a file in this directory is executable and it has a .start extension, it will be run when the local service is started. If a file is executable and it has a .stop extension, it will be run when the local service is stopped. All files are processed in lexical order. Keep in mind that files in this directory are processed sequentially, and the local service is not considered started or stopped until everything is processed, so if you have a process which takes a long time to run, it can delay your boot or shutdown processing.
Создаем здесь скрипт
# cat /etc/local.d/gpu_pwm_when_poweroff.stop #!/bin/bash rc-service fancontrol stop #Останавливаем fancontrol echo 80 > /sys/class/hwmon/hwmon0/pwm1 #Сообщаем вентилятору, с какой скоростью он должен крутиться при выключении. Напоминаю, что этот путь может отличаться на вашем устройстве.
Добавляем local в автозапуск, если его там нет.
# rc-update add local default
- Для комментирования войдите или зарегистрируйтесь
Если не хватает того, что
Если не хватает того, что есть в /sys/class/drm/card0/device то на помощь приходит radeontool
Посмотрел. Radeontool вентили
Посмотрел. Radeontool вентили не трогает.
Surprize! :)
Surprize! :) Карта вышла в мае 2017, а последний релиз этих тулзов - январь 2016!
Посмотри тут, - это не прямое управление вентиляторами, а через питание. Может это даст некоторые идеи, поскольку очень просто в реализации.
Ух ты, спасибо! Не
Ух ты, спасибо! То, что нужно для повседневных нужд.
Только вот я уже экспериментально выяснил: управление питанием видеокарты ограничивает только производительность этой самой карты, а вентиляторы крутит какой-то другой алгоритм, зависящий от температуры.
Нашел способ вручную управлять вентилятором через fancontrol демон lm_sensors.Первые результаты есть - вентиль удалось раскрутить до 4200 оборотов в минуту, а затем и остановить. Нужно продолжать экпериментировать.
На sourceforge.net есть!
На sourceforge.net есть парочка интересных проектов:
- консольный: https://sourceforge.net/projects/overdrive5/
- графический: https://sourceforge.net/projects/amdovdrvctrl/
Они относительно живые и, похоже, то, что ты ищешь...
Обновление 2: Пока настроил
Обновление 2: Пока настроил схему с помощью демона fancontrol, поставляемого в комплекте с lm_sensors
По придуманному мной алгоритму
1) Находим минимум ШИМ, при котором останавливаются вентиляторы
2) Находим минимум ШИМ, при котором запускаются вентиляторы (величины конструкционно различны!)
3) # man fancontrol
Или по вышеупомянутому руководству арчвики
4) Привожу свой пример настройки для видеокарты
только один вопрос
Камрадам только один вопрос: как добавить демон fancontrol в исключения killprocs? Этот демон прибивает первого, и... правильно! Вентиляторы раскручиваются до максимальных оборотов, поскольку это по дефолту для "безопасности". В итоге ночью компьютер хоть не выключай: при poweroff видеокарта на 5 секунд "превращается в пылесос"
может переместить его из
может переместить его из default в boot и shutdown?
Нужно продолжить эксперименты
В boot перемещать не пробовал, а вот в shutdown да - убивающий все и вся демон отрабатывает позже. Хотя, если fancontrol будет представлен как важный фраймворк...
Сейчас в связи с ремонтом дома не имею доступа к своему оборудованию.
Переместил из Default в Boot
Переместил из Default в Boot. Без пользы.
В boot он будет разве что
В boot он будет разве что стартовать раньше. А в shutdown не помогло?
Нашел и реализовал решение
Нашел и реализовал решение проблемы -теперь работает как часы - еще месяц назад, но документировать пока времени нет в связи с сильной занятостью. После Нового Года опишу.
Дописал.
Дописал.