Saltar al contenido

¿Cómo ajustar la velocidad del ventilador de la GPU NVIDIA en un nodo sin cabeza?

Buscamos en diferentes espacios para así tener para ti la solución para tu inquietud, en caso de alguna pregunta deja la pregunta y contestamos porque estamos para ayudarte.

Solución:

El siguiente es un método simple que no requiere secuencias de comandos, conectar monitores falsos o manipular el violín y se puede ejecutar a través de SSH para controlar múltiples ventiladores de GPU NVIDIA. Ha sido probado en Arch Linux.

Crear xorg.conf

sudo nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=7

Esto creará un /etc/X11/xorg.conf con una entrada para cada GPU, similar al método manual.

Nota: Algunas distribuciones (Fedora, CentOS, Manjaro) tienen archivos de configuración adicionales (por ejemplo, en /etc/X11/xorg.conf.d/ o /usr/share/X11/xorg.conf.d/), que anula xorg.conf y establecer AllowNVIDIAGPUScreens. Esta opción no es compatible con esta guía. Los archivos de configuración adicionales deben modificarse o eliminarse. El archivo de registro X11 muestra qué archivos de configuración se han cargado.

Alternativa: crear xorg.conf manualmente

Identifique los ID PCI de sus tarjetas:

nvidia-xconfig --query-gpu-info

Encuentra el PCI BusID los campos. Tenga en cuenta que estos no son los mismos que los ID de bus informados en el kernel.

Alternativamente, haz sudo startx, abierto /var/log/Xorg.0.log (o cualquier ubicación que startX enumere en su salida debajo de la línea “Archivo de registro:”), y busque la línea NVIDIA(0): Valid display device(s) on GPU- at PCI:.

Editar /etc/X11/xorg.conf

A continuación se muestra un ejemplo de xorg.conf para una máquina de tres 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

los BusID debe coincidir con los ID de bus que identificamos en el paso anterior. La opción AllowEmptyInitialConfiguration permite que X se inicie incluso si no hay ningún monitor conectado. La opción Coolbits permite controlar los ventiladores. También puede permitir el overclocking.

Nota: Algunas distribuciones (Fedora, CentOS, Manjaro) tienen archivos de configuración adicionales (por ejemplo, en /etc/X11/xorg.conf.d/ o /usr/share/X11/xorg.conf.d/), que anula xorg.conf y establecer AllowNVIDIAGPUScreens. Esta opción no es compatible con esta guía. Los archivos de configuración adicionales deben modificarse o eliminarse. El archivo de registro X11 muestra qué archivos de configuración se han cargado.

Editar /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

Utilizo .xinitrc para ejecutar nvidia-settings por conveniencia, aunque probablemente haya otras formas. La primera línea imprimirá todos los ventiladores de GPU del sistema. Aquí, configuro los ventiladores al 75%.

Lanzamiento X

sudo startx -- :0

Puede ejecutar este comando desde SSH. La salida será:

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.

Monitorear temperaturas y velocidades de reloj

nvidia-smi y nvtop se puede utilizar para observar temperaturas y consumo de energía. Las temperaturas más bajas permitirán que la tarjeta registre más alto y aumente su consumo de energía. Puedes usar sudo nvidia-smi -pl 150 para limitar el consumo de energía y mantener las cartas frescas, o utilizar sudo nvidia-smi -pl 300 para dejarlos overclockear. Mi 1080 Ti funciona a 1480 MHz si se le da 150W, y más de 1800 MHz si se le da 300W, pero esto depende de la carga de trabajo. Puede controlar su velocidad de reloj con nvidia-smi -q o más específicamente, watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'

Volviendo a la gestión automática de ventiladores.

Reiniciar. No he encontrado otra forma de hacer que los ventiladores sean automáticos.

Escribí un script de Python instalable en pip para hacer algo similar a la sugerencia de @ AlexsandrDubinsky.

Cuando ejecuta fans.py, configura un servidor X temporal para cada GPU con una pantalla falsa adjunta. Luego, recorre las GPU cada pocos segundos y establece la velocidad del ventilador de acuerdo con su temperatura. Cuando el script muere, devuelve el control de los ventiladores a los controladores y limpia los servidores X.

Tienes la opción de añadir valor a nuestra información cooperando tu veteranía en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *