활성화하지 않고도 NVIDIA 전환 가능 그래픽 카드 사용량을 모니터링할 수 있습니다.

활성화하지 않고도 NVIDIA 전환 가능 그래픽 카드 사용량을 모니터링할 수 있습니다.

저는 Linux에서 전환 가능한 그래픽이 있는 시스템용 그래픽 모니터(온도, 메모리 비율, 활용도 등)를 구축하려고 합니다.

TLDR: 런타임 D3(RTD3)이 포함된 Ampere dGPU가 있기 때문에 모니터는 dGPU가 깨어나는 것을 방지하기 위해 쿼리하는 대신 dGPU가 다른 항목에 의해 "사용"되는 시기를 어떻게든 결정해야 합니다. "중고품"이 실제로 무엇을 의미하는지 정의하는 것은 현재의 어려움입니다.

배경

과거에 optimus-manager를 사용했을 때는 비교적 쉬웠습니다. nvidia-settings -t -q UsedDedicatedGPUmemory -q ...GPU가 감지 기반일 때만 실행되는 루프에서 수행하면 됩니다 cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status.

그러나 이제 Nvidia Ampere dGPU가 탑재된 멋진 새 노트북이 생겼고 런타임 D3 전원 관리를 지원하므로 dGPU를 강제로 켜거나 끄기 위해 optimus-manager를 사용할 필요가 없습니다. 위의 sysfs 명령을 사용하면 dGPU가 정상적으로 종료되고 비슷한 명령을 실행한 후 약 15초 동안 켰다가 prime-run glxinfo | grep -i opengl다시 꺼지는 것을 확인할 수 있습니다.

이제 문제는 dGPU의 런타임 정보를 쿼리하기 위해 루프에서 시스템 모니터를 사용(또는 생성)하려고 하면 nvidia-settingsdGPU가 자동으로 켜진다는 것입니다. dGPU가 일시 중단된 동안 nvidia-smi이 값을 사용하여 쿼리 루프를 중단할 수 있지만 /sys/bus/pci/devices/0000:01:00.0/power/runtime_status, 일단 dGPU가 깨어나고 모니터가 쿼리를 시작하면 다시 절전 모드로 돌아가지 않습니다(모든 쿼리가 깨어 있는 상태를 유지하기 때문입니다).

내가 탐구한 아이디어

/dev/nvidia*다른 곳에서 다른 사람들이 이 파일을 사용 하고 nvidia-smi어떤 프로세스가 dGPU를 "사용"하는지 확인했다는 사실을 발견했습니다. 제 경우에는 유휴 상태(예: dGPU 일시 중지) 및 on 상태입니다 nvidia-settings.

> sudo lsof /dev/nvidia*
COMMAND     PID                USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nvidia-pe   796 nvidia-persistenced    4u   CHR 195,255      0t0  765 /dev/nvidiactl
nvidia-pe   796 nvidia-persistenced    5u   CHR   195,0      0t0  772 /dev/nvidia0
nvidia-pe   796 nvidia-persistenced    6u   CHR   195,0      0t0  772 /dev/nvidia0
nvidia-pe   796 nvidia-persistenced    7u   CHR   195,0      0t0  772 /dev/nvidia0
nvidia-pe   796 nvidia-persistenced    8u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root  mem    CHR   195,0           772 /dev/nvidia0
Xorg       1105                root  mem    CHR 195,255           765 /dev/nvidiactl
Xorg       1105                root    9u   CHR 195,255      0t0  765 /dev/nvidiactl
Xorg       1105                root   13u   CHR 195,255      0t0  765 /dev/nvidiactl
Xorg       1105                root   22u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   23u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   24u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   29u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   30u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   33u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   34u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   35u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   44u   CHR 195,254      0t0  774 /dev/nvidia-modeset
Xorg       1105                root   59u   CHR   195,0      0t0  772 /dev/nvidia0
Xorg       1105                root   60u   CHR   195,0      0t0  772 /dev/nvidia0
nvidia-se 84896               ndwar    6u   CHR 195,255      0t0  765 /dev/nvidiactl
nvidia-se 84896               ndwar    7u   CHR   195,0      0t0  772 /dev/nvidia0
nvidia-se 84896               ndwar    8u   CHR   510,0      0t0  766 /dev/nvidia-uvm
nvidia-se 84896               ndwar   10u   CHR   195,0      0t0  772 /dev/nvidia0
nvidia-se 84896               ndwar   11u   CHR   195,0      0t0  772 /dev/nvidia0

어떤 프로세스가 카드를 사용하고 있는지 nvidia에 직접 묻는 경우(분명히 잠시 깨어납니다):

> nvidia-smi pmon -c 1
# gpu         pid  type    sm    mem    enc    dec    command
# Idx           #   C/G     %      %      %      %    name
    0       1105     G      -      -      -      -    Xorg           

NET Framework의 "열 설정" 페이지로 이동하여 dGPU를 강제로 켜둘 수 있기 때문에 이것이 무엇을 의미하는지 약간 혼란스럽습니다 nvidia-settings. 그러나 위의 출력은 변경되지 않습니다(예: nvidia-smi는 nvidia-settingsdGPU를 "사용"한다고 말하지 않습니다). 또한 Xorg는 항상 실행 중이지만 dGPU를 특별히 사용하기 위해 다른 응용 프로그램을 열지 않는 한 dGPU는 일시 중지됩니다.

시스템 메시지

운영 체제: 아치 리눅스

lspci | grep -i nvidia
01:00.0 3D controller: NVIDIA Corporation GA107GLM [RTX A1000 6GB Laptop GPU] (rev a1)
> cat /proc/driver/nvidia/gpus/0000:01:00.0/power
Runtime D3 status:          Enabled (fine-grained)
Video Memory:               Off

GPU Hardware Support:
 Video Memory Self Refresh: Supported
 Video Memory Off:          Supported
glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa Intel(R) Graphics (RPL-P)
prime-run glxinfo | grep "OpenGL renderer"
OpenGL renderer string: NVIDIA RTX A1000 6GB Laptop GPU/PCIe/SSE2

관련 정보