Как можно управлять скоростью вращения вентиляторов на нескольких потребительских графических процессорах NVIDIA, таких как Titan и 1080 Ti, на безголовом узле под управлением Linux?
Ниже приведен простой метод, который не требует сценариев, подключения поддельных мониторов или возни и может выполняться по SSH для управления вентиляторами нескольких графических процессоров NVIDIA. Он был протестирован на Arch Linux.
Изменить : я сейчас не уверен, что лучший метод. Ранее я предложил lspci -k | grep -A 2 -E "(VGA|3D)"
. Тем не менее, это не дает правильные идентификаторы в моей новой системе Threadripper.
То, что работало, было, чтобы sudo startx
открыть /var/log/Xorg.0.log
(или любое другое место startX списки в его выводе под строкой «Файл журнала:»), и искать строку NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>
.
/etc/X11/xorg.conf
Вот пример для машины с тремя графическими процессорами:
Section "ServerLayout"
Identifier "dual"
Screen 0 "Screen0"
Screen 1 "Screen1" RightOf "Screen0"
Screen 1 "Screen2" RightOf "Screen1"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:5:0:0"
Option "Coolbits" "7"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:6:0:0"
Option "Coolbits" "7"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Device"
Identifier "Device2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:9:0:0"
Option "Coolbits" "7"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
EndSection
Section "Screen"
Identifier "Screen2"
Device "Device2"
EndSection
BusID
Должен соответствовать PCI ID , мы определили в предыдущем шаге. Опция AllowEmptyInitialConfiguration
позволяет запускать X, даже если монитор не подключен. Опция Coolbits
позволяет контролировать вентиляторы. Это также может разрешить разгон, но это не было проверено мной.
/root/.xinitrc
nvidia-settings -q fans
nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:1]/GPUFanControlState=1 -a [fan:1]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:2]/GPUFanControlState=1 -a [fan:2]/GPUTargetFanSpeed=75
cat
Я использую .xinitrc для удобства выполнения nvidia-settings, хотя, возможно, есть и другие способы. Здесь я установил поклонникам 75%. Я запрещаю закрытие X-сервера с помощью пустой cat
команды. Это не является строго необходимым, но я обнаружил, что иногда у меня возникают проблемы с картами, отказывающимися выходить из режима низкого энергопотребления P8, если X закрывается. В первой строке будет распечатан каждый вентилятор графического процессора в системе.
sudo startx -- :0
Вы можете выполнить эту команду из SSH. Выход будет:
Current version of pixman: 0.34.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat May 27 02:22:08 2017
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Attribute 'GPUFanControlState' (pushistik:0[gpu:0]) assigned value 1.
Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:0]) assigned value 75.
Attribute 'GPUFanControlState' (pushistik:0[gpu:1]) assigned value 1.
Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:1]) assigned value 75.
Attribute 'GPUFanControlState' (pushistik:0[gpu:2]) assigned value 1.
Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:2]) assigned value 75.
nvidia-smi
может использоваться для наблюдения за температурой и потреблением энергии. Более низкие температуры позволят карте работать выше и увеличат энергопотребление. Вы можете использовать, sudo nvidia-smi -pl 150
чтобы ограничить потребление энергии и держать карты в прохладном состоянии, или использовать, sudo nvidia-smi -pl 300
чтобы позволить им разогнаться. Мой 1080 Ti работает на частоте 1480 МГц при мощности 150 Вт и более 1800 МГц при мощности 300 Вт, но это зависит от рабочей нагрузки. Вы можете контролировать их тактовую частоту nvidia-smi -q
или, более конкретно,watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'
Перезагрузка. Я не нашел другого способа сделать фанатов автоматическими.
nvidia-settings -q fans
показывает? (Вы можете выполнить это внутри .xinitrc) Может быть, вы можете настроить все вентиляторы, если вы правильно их адресуете.AllowEmptyInitialConfiguration
правильно ли указан правильный PCI ID в xorg.conf? Этот файл может быть хитрым.nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
nvidia-smi -pl 120
. Это ограничит энергопотребление каждого графического процессора до 120 Вт. Вы также можете разогнать / разогнать ядро и память с помощьюnvidia-smi
илиnvidia-settings
. Вот пример разгона вnvidia-smi
документе: devblogs.nvidia.com/… Если выnvidia-settings
установили, вы можете применить смещение часов без необходимости использовать определенные часы:nvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
Я написал Python-устанавливаемый скрипт Python, чтобы сделать что-то похожее на предложение @ AlexsandrDubinsky .
источник
nvidia-settings