VIDEO
1. 개요
NVIDIA Persistence 관련 설정을 합니다.
2. 버전
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-persistenced
GPU 상태 유지 서비스 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 80 GB PCIe Off | 00000000:1B:00.0 Off | 0 |
| N/A 58 C P0 95 W / 300 W | 1MiB / 81920 MiB | 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 80 GB PCIe On | 00000000:1B:00.0 Off | 0 |
| N/A 58 C P0 86 W / 300 W | 1MiB / 81920 MiB | 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. 실행
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 80 GB PCIe On | 00000000:1B:00.0 Off | 0 |
| N/A 58 C P0 86 W / 300 W | 1MiB / 81920 MiB | 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. 확인
# systemctl status nvidia-persistenced
===============================================================================================
● nvidia-persistenced.service - NVIDIA Persistence Daemon
Loaded: loaded (/etc/systemd/system/nvidia-persistenced.service; enabled ; vendor preset: d i>
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.0 K
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 80 GB PCIe On | 00000000:1B:00.0 Off | 0 |
| N/A 50 C P0 53 W / 300 W | 1MiB / 81920 MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
===========================================================================================