Come è possibile controllare la velocità della ventola di più GPU NVIDIA consumer come Titan e 1080 Ti su un nodo senza testa con Linux?
Come è possibile controllare la velocità della ventola di più GPU NVIDIA consumer come Titan e 1080 Ti su un nodo senza testa con Linux?
Risposte:
Di seguito è riportato un metodo semplice che non richiede scripting, collegamento di falsi monitor o manipolazione e può essere eseguito su SSH per controllare più fan di GPU NVIDIA. È stato testato su Arch Linux.
Modifica : ora non sono sicuro di quale sia il metodo migliore. In precedenza, ho suggerito lspci -k | grep -A 2 -E "(VGA|3D)". Tuttavia, questo non fornisce gli ID corretti sul mio nuovo sistema Threadripper.
Ciò che ha funzionato è stato sudo startx, aprire /var/log/Xorg.0.log(o qualunque posizione startX elenchi nel suo output sotto la riga "File di registro:") e cercare la riga NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>.
/etc/X11/xorg.confEcco un esempio per una macchina a tre GPU:
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
Il BusIDdeve corrispondere all'ID PCI abbiamo identificato nel passaggio precedente. L'opzione AllowEmptyInitialConfigurationconsente a X di avviarsi anche se nessun monitor è collegato. L'opzione Coolbitsconsente ai fan di essere controllati. Può anche consentire l'overclocking, ma questo non è stato testato da me.
/root/.xinitrcnvidia-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
Uso .xinitrc per eseguire le impostazioni nvidia per comodità, anche se probabilmente ci sono altri modi. Qui, ho impostato i fan al 75%. Impedisco la chiusura del server X con il catcomando vuoto . Questo non è strettamente necessario, ma a volte trovo problemi con le carte che si rifiutano di lasciare lo stato a basso consumo P8 se X si chiude. La prima riga stamperà tutte le ventole GPU nel sistema.
sudo startx -- :0
È possibile eseguire questo comando da SSH. L'output sarà:
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-smipuò essere utilizzato per osservare temperature e assorbimento di potenza. Temperature più basse consentiranno alla scheda di aumentare il clock e aumentare il suo assorbimento di potenza. Puoi usare sudo nvidia-smi -pl 150per limitare l'assorbimento di potenza e mantenere fresche le carte, oppure usare sudo nvidia-smi -pl 300per farle overcloccare. Il mio 1080 Ti funziona a 1480 MHz se fornito di 150 W e oltre 1800 MHz se fornito di 300 W, ma questo dipende dal carico di lavoro. Puoi monitorare la loro velocità di clock con nvidia-smi -qo più specificamente,watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'
Reboot. Non ho trovato un altro modo per rendere automatici i fan.
nvidia-settings -q fansmostra? (Puoi eseguirlo all'interno di .xinitrc) Forse puoi regolare tutti i fan se li indirizzi correttamente.
AllowEmptyInitialConfigurationimpostato correttamente per l'ID PCI corretto in xorg.conf? Quel file può essere complicato.
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
nvidia-smi -pl 120. Ciò limiterà il consumo di energia di ogni GPU a 120 W. Puoi anche overcloccare / underclockare core e mem usando nvidia-smio nvidia-settings. C'è un esempio di overclocking nel nvidia-smidocumento qui: devblogs.nvidia.com/… Se hai nvidia-settingsinstallato puoi applicare un offset di clock senza dover usare un clock specifico:nvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
Quando esegui fans.py, imposta un server X temporaneo per ogni GPU con un display falso collegato. Quindi, circola sulle GPU ogni pochi secondi e imposta la velocità della ventola in base alla loro temperatura. Quando lo script muore, restituisce il controllo dei fan ai driver e pulisce gli X server.
nvidia-settings