티스토리 뷰
nvidia-smi dmon -s u — GPU 사용률을 실시간 모니터링하는 방법
개요
딥러닝 학습이나 GPU 연산 작업을 돌릴 때, GPU가 제대로 활용되고 있는지 확인하고 싶을 때가 있습니다. nvidia-smi는 한 번의 스냅샷만 보여주기 때문에 시간에 따른 변화를 추적하기 어렵습니다.
nvidia-smi dmon -s u는 GPU 사용률(Utilization)을 1초 간격으로 실시간 스트리밍해주는 명령어입니다. 별도 설치 없이 NVIDIA 드라이버만 있으면 바로 사용할 수 있습니다.
명령어 구조
nvidia-smi dmon -s u| 구성 요소 | 설명 |
|---|---|
nvidia-smi |
NVIDIA System Management Interface |
dmon |
Device Monitoring — 지정한 메트릭을 스크롤 형태로 반복 출력 |
-s u |
Select: Utilization — 사용률 관련 지표만 선택 |
출력 결과 해석
실행하면 아래와 같은 출력이 1초마다 갱신됩니다.
# gpu sm mem enc dec jpg ofa
# Idx % % % % % %
0 45 4 0 0 0 0
0 96 14 0 0 0 0
0 85 13 0 0 0 0각 컬럼의 의미는 다음과 같습니다.
| 컬럼 | 의미 | 설명 |
|---|---|---|
gpu |
GPU 인덱스 | 멀티 GPU 환경에서 어떤 GPU인지 구분 (0부터 시작) |
sm |
SM (Streaming Multiprocessor) 사용률 | GPU 연산 코어의 활용도. 이 값이 높을수록 GPU를 잘 쓰고 있다는 의미 |
mem |
메모리 컨트롤러 사용률 | GPU 메모리 읽기/쓰기 대역폭 활용도. VRAM 사용량(GB)이 아님에 주의 |
enc |
인코더 사용률 | NVENC (하드웨어 비디오 인코딩) 사용률 |
dec |
디코더 사용률 | NVDEC (하드웨어 비디오 디코딩) 사용률 |
jpg |
JPEG 엔진 사용률 | 하드웨어 JPEG 디코딩 엔진 사용률 |
ofa |
OFA 엔진 사용률 | Optical Flow Accelerator 사용률 |
핵심 포인트: 딥러닝 학습 시에는
sm과mem두 값만 주로 확인하면 됩니다.sm이 낮으면 데이터 로딩 병목, 배치 사이즈 부족 등을 의심해 볼 수 있습니다.
자주 쓰는 옵션 조합
1. 수집 횟수 지정 (-c)
nvidia-smi dmon -s u -c 10
10번만 측정하고 자동 종료합니다. 스크립트에서 사용할 때 유용합니다.
2. 수집 간격 변경 (-d)
nvidia-smi dmon -s u -d 5
5초 간격으로 수집합니다. 기본값은 1초입니다.
3. 날짜/시간 포함 (-o DT)
nvidia-smi dmon -s u -o DT
출력에 날짜와 시간이 추가됩니다.
#Date Time gpu sm mem enc dec jpg ofa
#YYYYMMDD HH:MM:SS Idx % % % % % %
20260318 17:45:40 0 67 4 0 0 0 0
20260318 17:45:42 0 93 15 0 0 0 0로그를 남길 때 언제 발생한 값인지 추적할 수 있어 실용적입니다.
4. 전력 + 사용률 동시 확인 (-s pu)
nvidia-smi dmon -s pu
# gpu pwr gtemp mtemp sm mem enc dec jpg ofa
# Idx W C C % % % % % %
0 111 79 - 80 14 0 0 0 0
0 113 79 - 92 11 0 0 0 0전력 소비(W)와 GPU 온도(°C)까지 함께 확인할 수 있어, 발열이나 전력 제한(Power Throttling) 여부를 파악하기 좋습니다.
5. 파일로 저장 (-f)
nvidia-smi dmon -s u -o DT -f gpu_log.txt
장시간 모니터링 결과를 파일로 저장합니다. 나중에 분석할 때 유용합니다.
6. CSV 포맷 출력 (--format csv)
nvidia-smi dmon -s u --format csv
#gpu, sm, mem, enc, dec, jpg, ofa
#Idx, %, %, %, %, %, %
0, 66, 4, 0, 0, 0, 0
0, 61, 5, 0, 0, 0, 0pandas 등으로 후처리할 때 파싱이 간편합니다.
-s 옵션에서 선택 가능한 전체 메트릭
| 옵션 | 메트릭 | 포함 항목 |
|---|---|---|
p |
Power & Temperature | 전력(W), GPU 온도, 메모리 온도 |
u |
Utilization | SM, 메모리 컨트롤러, 인코더, 디코더, JPEG, OFA 사용률 |
c |
Clocks | GPU 클럭, 메모리 클럭 (MHz) |
v |
Violations | 전력/온도 스로틀링 위반 횟수 |
m |
Memory | Framebuffer, BAR1 메모리 사용량 |
e |
ECC Errors | ECC 에러 수, PCIe 재전송 에러 수 |
t |
PCIe Throughput | PCIe 송수신 처리량 |
조합 사용이 가능합니다. 예: -s puc → 전력 + 사용률 + 클럭 동시 모니터링.
실전 활용 팁
딥러닝 학습 중 GPU 병목 진단:
nvidia-smi dmon -s pu -d 2 -o T
sm이 지속적으로 30% 이하라면 → DataLoader 병목 의심 (num_workers증가,pin_memory=True시도)sm이 들쭉날쭉(0% ↔ 90%)하다면 → 배치 간 CPU 전처리 병목 또는 I/O 대기gtemp가 85°C 이상이면 → 쿨링 확인, 필요시nvidia-smi -pl으로 전력 제한 설정
학습 로그와 함께 기록:
nvidia-smi dmon -s puc -o DT --format csv -f gpu_monitor.csv &
python train.py
kill %1
백그라운드로 GPU 로그를 수집하면서 학습을 돌리고, 학습 종료 후 로그를 분석할 수 있습니다.
nvidia-smi vs nvidia-smi dmon 차이
nvidia-smi |
nvidia-smi dmon -s u |
|
|---|---|---|
| 출력 방식 | 한 번 스냅샷 | 1초 간격 스트리밍 |
| 정보량 | 전체 정보 (프로세스 포함) | 선택한 메트릭만 간결하게 |
| 용도 | 현재 상태 확인 | 시간 추이 모니터링 |
| 스크립트 연동 | 파싱 복잡 | CSV 지원으로 파싱 간편 |
마무리
nvidia-smi dmon -s u는 GPU 활용도를 실시간으로 추적할 수 있는 가볍고 실용적인 명령어입니다. 딥러닝 학습, 영상 처리, 렌더링 등 GPU 작업의 효율을 확인하고 병목을 진단하는 데 바로 활용할 수 있습니다.
특히 -s pu 조합과 -o DT -f 옵션을 함께 사용하면, 장시간 작업의 GPU 사용 패턴을 파일로 기록하고 사후 분석할 수 있어 매우 유용합니다.
- Total
- Today
- Yesterday
- 이분탐색
- 백준 11053
- PyCharm
- 순열
- 위상 정렬 알고리즘
- C++ Deploy
- 백준 11437
- Lowest Common Ancestor
- ㅂ
- 조합
- LCA
- 가장 긴 증가하는 부분 수열
- 파이참
- 백준 1766
- 문제집
- FairMOT
- 자료구조
- 백준
- 단축키
- cosine
- 백트래킹
- MOT
- 인공지능을 위한 선형대수
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
