헤드리스 노드에서 NVIDIA GPU 팬 속도를 조정하는 방법은 무엇입니까?

헤드리스 노드에서 NVIDIA GPU 팬 속도를 조정하는 방법은 무엇입니까?

Linux를 실행하는 헤드리스 노드에서 Titan 및 1080 Ti와 같은 여러 소비자 NVIDIA GPU의 팬 속도를 제어하는 ​​것이 어떻게 가능합니까?

답변1

다음은 스크립팅, 가짜 모니터 연결 또는 조작이 필요하지 않으며 SSH를 통해 실행하여 여러 NVIDIA GPU 팬을 제어할 수 있는 간단한 방법입니다. Arch Linux에서 테스트되었습니다.

xorg.conf 생성

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

/etc/X11/xorg.conf이렇게 하면 수동 방법과 유사하게 각 GPU에 대한 항목이 생성됩니다 .

메모:일부 배포판(Fedora, CentOS, Manjaro ) /etc/X11/xorg.conf.d/에는 /usr/share/X11/xorg.conf.d/. 이 옵션은 이 가이드와 호환되지 않습니다. 추가 구성 파일을 수정하거나 삭제해야 합니다. X11 로그 파일은 로드된 구성 파일을 보여줍니다.xorg.confAllowNVIDIAGPUScreens

대안: xorg.conf를 수동으로 생성

카드의 PCI ID를 확인하세요.

nvidia-xconfig --query-gpu-info

필드를 찾으세요 PCI BusID. 이는 커널에 보고된 버스 ID와 동일하지 않습니다.

또는 을 수행하고 sudo startx열고 /var/log/Xorg.0.log(또는 startX가 출력의 "Log file:" 행 아래에 나열하는 위치) 행을 찾으십시오 NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>.

편집하다/etc/X11/xorg.conf

xorg.conf다음은 3개의 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

BusID이전 단계에서 식별한 버스 ID와 일치해야 합니다 . 이 옵션을 사용하면 AllowEmptyInitialConfiguration모니터가 연결되어 있지 않아도 X를 시작할 수 있습니다. 이 옵션을 Coolbits사용하면 팬을 제어할 수 있습니다. 오버클럭도 가능합니다.

메모:일부 배포판(Fedora, CentOS, Manjaro ) /etc/X11/xorg.conf.d/에는 /usr/share/X11/xorg.conf.d/. 이 옵션은 이 가이드와 호환되지 않습니다. 추가 구성 파일을 수정하거나 삭제해야 합니다. X11 로그 파일은 로드된 구성 파일을 보여줍니다.xorg.confAllowNVIDIAGPUScreens

편집하다/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

편의상 nvidia-settings를 실행하기 위해 .xinitrc를 사용합니다. 아마도 다른 방법도 있을 것입니다. 첫 번째 줄은 시스템의 모든 GPU 팬을 인쇄합니다. 여기서는 팬을 75%로 설정했습니다.

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온도와 전력 소모를 관찰하는 데 nvtop사용할 수 있습니다. 온도가 낮을수록 카드의 클럭이 더 높아지고 전력 소모량이 늘어납니다. sudo nvidia-smi -pl 150전력 소비를 제한하고 카드를 시원하게 유지하거나 sudo nvidia-smi -pl 300오버클럭하는 데 사용할 수 있습니다 . 내 1080 Ti는 150W가 제공되면 1480MHz에서 실행되고 300W가 제공되면 1800MHz 이상으로 실행되지만 이는 작업 부하에 따라 다릅니다. nvidia-smi -q다음을 통해 클럭 속도를 모니터링할 수 있습니다 .watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'

자동 팬 관리로 돌아갑니다.

재부팅합니다. 팬을 자동으로 만드는 다른 방법을 찾지 못했습니다.

답변2

@AlexsandrDubinsky의 제안과 비슷한 작업을 수행하기 위해 pip 설치 가능한 Python 스크립트를 작성했습니다..

Fans.py를 실행하면 가짜 디스플레이가 연결된 각 GPU에 대해 임시 X 서버가 설정됩니다. 그런 다음 몇 초마다 GPU를 반복하고 온도에 따라 팬 속도를 설정합니다. 스크립트가 종료되면 팬 제어권이 드라이버에 반환되고 X 서버가 정리됩니다.

답변3

이 질문에 대한 답변과 유사한 StackExchange 질문을 바탕으로 팬 속도를 100(또는 원하는 값으로) 설정하는 쉘 스크립트를 작성했습니다.모두당신의 팬 중모두머신의 GPU.

이 스크립트는 귀하의 컴퓨터에 X11이 설치되어 있지만 이를 사용하여 사용자에게 GUI를 제공하지 않는다고 가정합니다.

/bin/set-gpu-fan-speed.sh:

#!/bin/bash
set -Eeuxo pipefail

# Kill any existing X servers.
killall Xorg || true
sleep 5

# Create a NVIDIA-friendly Xorg config.
nvidia-xconfig -a --cool-bits=28 --allow-empty-initial-configuration --enable-all-gpus

# Start a new X server for nvidia-settings to use.
export XDG_SESSION_TYPE=x11
export DISPLAY=:0
startx -- $DISPLAY &
sleep 5

# Determine the number of GPUs and fans on this machine.
NUM_GPUS=$(nvidia-settings -q gpus | grep -c 'gpu:')
NUM_FANS=$(nvidia-settings -q fans | grep -c 'fan:')

# For each GPU, enable fan control.
for ((i=0; i < NUM_GPUS; i++))
do
    nvidia-settings --verbose=all -a "[gpu:$i]/GPUFanControlState=1"
done

# For each fan, set fan speed to 100%.
for ((i=0; i < NUM_FANS; i++))
do
    nvidia-settings --verbose=all -a "[fan:$i]/GPUTargetFanSpeed=100"
done

# Kill the X server that we started.
killall Xorg || true

이러한 팬 속도 변경 사항은 재부팅 후에도 지속되지 않으므로 부팅할 때마다 위 스크립트를 실행하기 위해 시스템 장치 파일을 작성했습니다.

/etc/systemd/system/set-gpu-fan-speed.service:

[Unit]
Description="Sets the GPU fan speed"

[Service]
Type=oneshot
User=root
ExecStart=/bin/set-gpu-fan-speed.sh

[Install]
WantedBy=multi-user.target

위 파일을 생성한 후 루트로 다음 명령을 실행하여 재부팅 시 실행되는 스크립트를 활성화합니다.

systemctl enable set-gpu-fan-speed.service
systemctl start set-gpu-fan-speed.service

관련 정보