HOWTO Динамическое управление вентиляторами nvidia карт ( nvidia dynamic fan control )

Небольшая инструкция по динамическому управлению вентиляторами nvidia карт, если по какой то причине не устраивают заводские установки

Включаем ручное регулирование вентиляторами
https://wiki.archlinux.org/index.php/NVIDIA/Tips_and_tricks#Enabling_overclocking
надо добавить Option "Coolbits" "4" в ваш xorg.conf и перезагрузиться
пример
....Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "1920x1080_60 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "TripleBuffer" "True"
    Option         "Coolbits" "4"
    SubSection     "Display"
        Depth       24
    EndSubSection

Устанавливаем утилиту контроля
https://github.com/foucault/nvfancontrol
https://aur.archlinux.org/packages/nvfancontrol
yay -S nvfancontrol

создаем конфиг ~/.config/nvfancontrol.conf
с нужными вам параметрами (первая колонка температура вторая скорость вентилятора в процентах)
пример
30    30
40    40
50    50
60    60
70    70
80    80
85    100
90    100

Проверяем работу
/usr/bin/nvfancontrol -l0 -fd

Для нагрузи карточки можно поставить gputest
yay -S gputest
запуск стресс теста
пример
gputest /test=fur /width=1024 /height=640

Подобрать нужные обороты удобно в nvidia-settings

Что бы утилита стартовала при старте системы можно создать сервис системд
создать ~/.config/systemd/user/nvfancontrol.service
с содержанием
[Unit]
Description="dynamic fan control"
After=graphical.target

[Service]
Type=simple
ExecStart=/usr/bin/nvfancontrol -l0 -f

[Install]
WantedBy=default.target

UPD со временем сервис чуть изменил
[Unit]
Description="NVIDIA Dynamic fan control"

After=graphical.target multi-user.target
[Service]
Type=simple
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/oleg/.Xauthority
Environment=XDG_CONFIG_HOME=/home/oleg/.config
Environment=XDG_VTNR=1
ExecStartPre=/bin/sleep 50
ExecStart=/usr/bin/nvfancontrol -l0 -f
Restart=always
RestartSec=30

[Install]
WantedBy=default.target
Затем включить, стартовать и проверить сервис
systemctl --user enable nvfancontrol.service
systemctl --user start nvfancontrol.service
systemctl --user status nvfancontrol.service

Проверял на msi gtx 560ti на которой штатные вентиляторы заменены на вентиляторы от интеловских кулеров процессорных
работает хорошо, ресурсов практически не потребляет (31м оперативки)

Дополняйте кто чем пользуется
Предлагаю перенести в блоги.
Я поклонник Intel и редко приходится управлять вентилятором, а если и приходится, то управляю на прямую, через регистры.
А потому вопрос - есть ли что то похожее, такое же простое, для динамического управления на Intel?
Можно, конечно, использовать неплохую утилиту NBFC (NoteBook FanControl), основанную также на управлении на прямую, через регистры, но сложновато по сравнению с данным способом для nvidia.
Ошибки не исчезают с опытом - они просто умнеют
vasek
для динамического
То есть надо менять кривую регулировки? Простое задание температуры включения и включения на максимум через pwmconfig не подходит?
vs220
То есть надо менять кривую регулировки? Простое задание температуры включения и включения на максимум через pwmconfig не подходит?
Вообщем то есть тоже простой способ, совсем забыл - без использования всяких утилит - пишется скрипт, в котором сам назначаешь температуры, при достижении которых следует установить соответствующую мощность вентилятора (правда мощность устанавливается посредством записи соответствующих значений в регистры). Правда, не всем подойдет - придется осваивать непривычную область.

PS - утилита NBFC практически делает то же самое (есть в AUR), но запустить ее тоже не совсем просто. А вот pwmconfig не везде работает ...
Ошибки не исчезают с опытом - они просто умнеют
ВИНОВАТ - опять подвела невмимательность - только сейчас дошло, у меня же встроенная Intel и описывал совсем другой вентилятор ... cpu

EDIT 1 - хотя стало даже интересно - как идет управление вентилятором видеокарты? - через контроллер? - а значит через регистры? Если да, то остается только найти их и научится управлять, что, конечно, не так то и просто.
Ошибки не исчезают с опытом - они просто умнеют
vasek
как идет управление
nvfancontrol использует libxnvctrl а тот nvidia-utils
vs220
Дополняйте кто чем пользуется
Аппаратно: видеокарта с пассивным охлаждением, кулер прикрепил сам. ;) Запитан как вентилятор шасси.
Програмно: скрипт, плавно меняя обороты, старается удерживать температуру в пределах 35°С. Более низкая - выключает, критическая запускает кулер на максимум. С процессором так же, только температуры повыше.
Работает уже года три, за это время алгоритм не менял.
Aivar
Програмно: скрипт
Чем меняются обороты?
Ошибки не исчезают с опытом - они просто умнеют
/sys/class/hwmon/hwmon1/device/pwm*
Aivar
/sys/class/hwmon/hwmon1/device/pwm*
не обижайся за тупой вопрос, но что то не соображу (а копаться долго лень) - откуда появляется pwm* - от какой то утилиты?
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.