- 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

최근 게시물

[Linux] Rocky Linux 9.5 NFS 구성 및 테스트 가이드 (rw/ro + root_squash 비교)

https://youtu.be/n8-wlkZiqio 1. 개요 NFS(Network File System)를 설치하고, rw/ro 및 root_squash 옵션에 따른 접근 제어와 성능을 테스트하는 방법을 정리한 가이드입니다.…

%일 전

[Linux] Rocky Linux 9.5 Cron 설정 및 테스트 방법

https://youtu.be/4MVxzmepY3s 1. 개요 리눅스에서 정기적으로 실행되는 작업(백업, 로그 정리, 모니터링 등)은 cron 서비스를 통해 자동화할 수 있습니다.…

%일 전

[Linux] Rocky Linux 9.5 계정 관리 (생성 · 권한 · 잠금 · 삭제) 정리

https://youtu.be/vPfxWFBE1yc 1. 개요 리눅스 서버를 운영할 때 사용자 계정 생성, 비밀번호 설정, 권한 부여, 계정…

%일 전

[Linux] Rocky Linux 9.5 Chrony로 시간 동기화 설정하기

https://youtu.be/Gvp2XwBfoKw 1. 개요 리눅스 서버에서는 시스템 시간(OS 시간) 과 하드웨어 시간(RTC, Real-Time Clock) 을 동기화하는 것이 매우 중요합니다. 클러스터…

%일 전

[Linux] Rocky Linux 9.5 리눅스 시간 관리 입문: 하드웨어(RTC)와 시스템(OS) 시간 개념부터 동기화까지

https://youtu.be/pt9qhawl8LY 1. 개요 리눅스 서버에서는 시스템 시간(OS 시간) 과 하드웨어 시간(RTC, Real-Time Clock) 을 모두 관리할 수 있습니다. 운영체제의…

%일 전

[Linux] Rocky Linux 9.5 타임존(Timezone)이 뭐예요? 리눅스 시간 확인과 변경 방법

https://youtu.be/iPdHGXh7DUg 1. 개요 서버 운영 시 시스템 시간이 올바르게 설정되어 있지 않으면 로그 분석, 모니터링,…

%일 전