Comment contrôler la vitesse du ventilateur de plusieurs GPU NVIDIA grand public tels que Titan et 1080 Ti sur un nœud sans tête exécutant Linux?
Comment contrôler la vitesse du ventilateur de plusieurs GPU NVIDIA grand public tels que Titan et 1080 Ti sur un nœud sans tête exécutant Linux?
Réponses:
Ce qui suit est une méthode simple qui ne nécessite pas de script, de connexion de faux moniteurs ou de violon et peut être exécutée via SSH pour contrôler plusieurs fans de GPU NVIDIA. Il a été testé sur Arch Linux.
Edit : je ne sais pas maintenant quelle est la meilleure méthode. Auparavant, je l'ai suggéré lspci -k | grep -A 2 -E "(VGA|3D)". Cependant, cela ne donne pas les ID corrects sur mon nouveau système Threadripper.
Ce qui a fonctionné était d' sudo startxouvrir, /var/log/Xorg.0.log(ou n'importe quel emplacement les listes startX dans sa sortie sous la ligne "Fichier journal:"), et de rechercher la ligne NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>.
/etc/X11/xorg.confVoici un exemple pour une machine à trois 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
Le BusIDdoit correspondre à l'ID PCI que nous avons identifié à l'étape précédente. L'option AllowEmptyInitialConfigurationpermet à X de démarrer même si aucun moniteur n'est connecté. L'option Coolbitspermet de contrôler les ventilateurs. Il peut également permettre l'overclocking, mais cela n'a pas été testé par moi.
/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
J'utilise .xinitrc pour exécuter les paramètres nvidia pour plus de commodité, bien qu'il existe probablement d'autres façons. Ici, j'ai réglé les fans à 75%. J'empêche le serveur X de se fermer avec la catcommande vide . Ce n'est pas strictement nécessaire, mais je trouve que j'ai parfois des problèmes avec les cartes qui refusent de quitter l'état de faible puissance du P8 si X se ferme. La première ligne imprimera chaque ventilateur GPU du système.
sudo startx -- :0
Vous pouvez exécuter cette commande à partir de SSH. La sortie sera:
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-smipeut être utilisé pour observer les températures et la consommation d'énergie. Des températures plus basses permettront à la carte de cadencer plus haut et d'augmenter sa consommation d'énergie. Vous pouvez utiliser sudo nvidia-smi -pl 150pour limiter la consommation d'énergie et garder les cartes au frais, ou utiliser sudo nvidia-smi -pl 300pour les laisser overclocker. Mon 1080 Ti fonctionne à 1480 MHz si 150W, et à plus de 1800 MHz si 300W, mais cela dépend de la charge de travail. Vous pouvez surveiller leur vitesse d'horloge avec nvidia-smi -qou plus précisément,watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'
Redémarrez. Je n'ai pas trouvé d'autre moyen de rendre les fans automatiques.
nvidia-settings -q fansmontre-t-on? (Vous pouvez l'exécuter dans .xinitrc) Peut-être pouvez-vous régler tous les ventilateurs si vous les adressez correctement.
AllowEmptyInitialConfigurationcorrectement défini pour l'ID PCI correct dans xorg.conf? Ce fichier peut être délicat.
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
nvidia-smi -pl 120. Cela limitera la consommation d'énergie de chaque GPU à 120 W. Vous pouvez également overclocker / sous-cadrer le noyau et mem en utilisant nvidia-smiou nvidia-settings. Il y a un exemple d'overclocking dans le nvidia-smidoc ici: devblogs.nvidia.com/… Si vous avez nvidia-settingsinstallé vous pouvez appliquer un décalage d'horloge sans avoir à utiliser d'horloge spécifique:nvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
Lorsque vous exécutez fans.py, il configure un serveur X temporaire pour chaque GPU avec un faux écran attaché. Ensuite, il passe en boucle sur les GPU toutes les quelques secondes et définit la vitesse du ventilateur en fonction de leur température. Lorsque le script meurt, il rend le contrôle des ventilateurs aux pilotes et nettoie les serveurs X.
nvidia-settings