- LINUX

[Rocky] nvidia-smi 실행이 느릴 때 해결 방법 : Persistence 설정하기






1. 개요

  • NVIDIA Persistence 관련 설정을 합니다.



2. 버전

  • Rocky 8.10



3. 내용




3-1. 증상 소개

  • nvidai-smi를 실행할 때 몇 초동안 응답이 지연되는 경우가 발생합니다.
  • 특히 다중 GPU 환경 또는 일정 시간이 지나 GPU가 저전력 모드로 전환될 때 이런 형상이 자주 발생합니다.



3-2. 원인

  • NVIDIA GPU는 사용하지 않을 때 전력을 절약하기 위해 AutoBoost 및 Power Management 기능을 활용합니다.
  • nvidia-smi 실행 시 GPU 상태를 확인하는 과정에서 장치 초기화로 인해 지연이 발생할 수 있습니다.
  • 이를 해결하기 위해 nvidia-persistenced 서비스를 활용하면 GPU 상태 유지를 통해 초기화 지연을 장지할 수 있습니다.



3-3. Persistence Mode(nvidia-smi -pm 1)

  • 영구 모드(Persistence Mode)를 활성화하는 명령어입니다.
  • GPU가 사용되지 않을 때도 상태를 유지하여, 다시 사용할 때 초기화 과정을 줄여줍니다.
  • 하지만 재부팅 후에는 기본적으로 비활성화되므로, 다시 실행해야 합니다.



3-4. NVIDIA Persistence Daemon(nvidia-persistenced)

  • 백그라운드에서 GPU 상태를 유지하는 데몬(서비스)입니다.
  • nvidia-smi -pm 1과 비슷한 역할을 하지만, 데몬이 실행된 동안 GPU 상태를 지속적으로 유지합니다.
  • nvidia-smi -pm 1보다 더 강력한 GPU 상태 유지 기능을 제공할 수 있습니다.
  • 재부팅하면 실행되지 않으므로 systemd로 설정해야 합니다.



3-5. Persistence Mode, NVIDIA Persistence Daemon 차이점

명령어기능설명재부팅 후 유지 여부
nvidia-smi -pm 1영구 모드(Persistence Mode) 설정GPU가 사용되지 않아도 전원을 유지하여 nvidia-smi실행 속도를 빠르게 함❌ (재부팅하면 해제됨)
nvidia-persistencedGPU 상태 유지 서비스nvidia-smi -pm 1과 유사하지만, 데몬 프로세스로 GPU 상태를 유지❌ (재부팅하면 해제됨)
둘 다 설정 (systemd 사용)영구 모드 + GPU 상태 유지nvidia-persistenced를 실행하고 nvidia-smi -pm 1도 활성화하면 GPU 초기화 지연 최소화✅ (자동 실행 설정하면 유지됨)



4. NVIDIA Persistence Mode




4-1. 증상 확인

# nvidia-smi
===========================================================================================
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.127.08             Driver Version: 550.127.08     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A100 80GB PCIe          Off |   00000000:1B:00.0 Off |                    0 |
| N/A   58C    P0             95W /  300W |       1MiB /  81920MiB |      3%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
===========================================================================================



4-2. 설정

# nvidia-smi -pm 1
==================================================
Enabled persistence mode for GPU 00000000:1B:00.0.
All done.
==================================================



4-3. 설정 확인

# nvidia-smi
===========================================================================================
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.127.08             Driver Version: 550.127.08     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A100 80GB PCIe          On  |   00000000:1B:00.0 Off |                    0 |
| N/A   58C    P0             86W /  300W |       1MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
===========================================================================================



5. NVIDIA Persistence Daemon




5-1. 실행

# nvidia-persistenced



5-2. 실행 확인

# nvidia-smi
===========================================================================================
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.127.08             Driver Version: 550.127.08     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A100 80GB PCIe          On  |   00000000:1B:00.0 Off |                    0 |
| N/A   58C    P0             86W /  300W |       1MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
===========================================================================================


# ps aux | grep nvidia-persistenced
=======================================================================================
root       10103  0.0  0.0  18536  1912 ?        Ss   20:57   0:00 nvidia-persistenced
root       10231  0.0  0.0 222016  1092 pts/1    S+   20:57   0:00 grep --color=auto nvidia-persistenced
=======================================================================================



5-3. systemd 서비스 설정

# vim /etc/systemd/system/nvidia-persistenced.service
=====================================================
[Unit]
Description=NVIDIA Persistence Daemon
After=multi-user.target

[Service]
Type=forking
ExecStart=/usr/bin/nvidia-persistenced
ExecStop=/usr/bin/nvidia-persistenced --stop
Restart=always

[Install]
WantedBy=multi-user.target
=====================================================



5-4. 서비스 활성화 및 실행

# systemctl daemon-reload
# systemctl enable nvidia-persistenced
# systemctl start nvidia-persistenced



5-5. 확인

# reboot


# systemctl status nvidia-persistenced
===============================================================================================
 nvidia-persistenced.service - NVIDIA Persistence Daemon
   Loaded: loaded (/etc/systemd/system/nvidia-persistenced.service; enabled; vendor preset: di>
   Active: active (running) since Fri 2024-12-27 21:02:06 KST; 14s ago
  Process: 6671 ExecStart=/usr/bin/nvidia-persistenced (code=exited, status=0/SUCCESS)
 Main PID: 6672 (nvidia-persiste)
    Tasks: 1 (limit: 3355442)
   Memory: 952.0K
   CGroup: /system.slice/nvidia-persistenced.service
           └─6672 /usr/bin/nvidia-persistenced

Dec 27 21:02:05 node01 systemd[1]: Starting NVIDIA Persistence Daemon...
Dec 27 21:02:05 node01 nvidia-persistenced[6672]: Started (6672)
Dec 27 21:02:06 node01 systemd[1]: Started NVIDIA Persistence Daemon.
===============================================================================================


# nvidia-smi
===========================================================================================
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.127.08             Driver Version: 550.127.08     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A100 80GB PCIe          On  |   00000000:1B:00.0 Off |                    0 |
| N/A   50C    P0             53W /  300W |       1MiB /  81920MiB |      0%      Default |
|                                         |                        |             Disabled |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
===========================================================================================



seuheu

최근 게시물

Raspberry Pi OMV(OpenMediaVault) Rsync 자동 백업 설정과 동작 확인

https://youtu.be/EOAT80xj74M 1. 개요 공유 폴더의 내용을 다른 공유 폴더로 주기적으로 복사하도록 예약하는 과정입니다. 작업을 만들고…

%일 전

Raspberry Pi OMV(OpenMediaVault) SMB 공유 설정과 윈도우 네트워크 드라이브 연결

https://youtu.be/T8OBQ1V61J0 1. 개요 앞서 만든 공유 폴더를 SMB로 내보내 윈도우에서 네트워크 드라이브로 붙여 쓰는 과정입니다.…

%일 전

Raspberry Pi OMV(OpenMediaVault) NFS 공유 설정 – 서비스 활성화부터 클라이언트 마운트까지

https://youtu.be/3TWRTRd-Imo 1. 개요 앞서 만든 공유 폴더를 NFS로 내보내 다른 리눅스 장비에서 마운트해 쓰는 과정입니다.…

%일 전

Raspberry Pi OMV(OpenMediaVault) RAID 구성 — 플러그인 설치 ~ 공유 폴더 생성

https://youtu.be/xyQ36ZKFsyo 1. 개요 디스크 4개를 RAID 5로 묶어 하나의 큰 볼륨으로 만들고 공유 폴더까지 만드는…

%일 전

[Raspberry Pi] OMV(OpenMediaVault) 스토리지 구성 – 디스크 지우기 ~ 공유 폴더 생성

https://youtu.be/6USDMILssg4 1. 개요 OMV는 물리 디스크를 서비스에 노출하기까지 4단계 계층을 거칩니다. 앞 단계를 완료해야 다음…

%일 전

[Raspberry Pi] Radxa Penta SATA HAT 활성화 방법

https://youtu.be/ER-vIKQnXwc 1. 개요 Radxa Penta SATA HAT는 Raspberry Pi 5의 PCIe 인터페이스를 활용해 최대 5개의…

%일 전