🎥 AI 시대 옵저버빌리티 전략 웨비나 | 무료 다시보기 (~4/9)
Top
도입문의
테크
2026-10-23

GPU 사용률 100%면 성능을 다 쓰는 걸까? SM Active 확인 방법

학습이나 추론 작업이 도는 GPU 서버에서 nvidia-smi를 열면 GPU 사용률(GPU-Util)이 100%인데, 작업은 기대보다 느릴 때가 있습니다.

GPU 사용률 100%는 GPU의 모든 연산 장치를 다 쓰고 있다는 뜻이 아닙니다. 측정 구간 내내 GPU에서 계산 작업이 하나 이상 실행됐다는 뜻입니다.

GPU 안에는 SM이라는 연산 유닛이 여러 개 있습니다. SM이 얼마나 넓게, 얼마나 오래 활성 상태였는지는 NVIDIA의 GPU 관리 도구인 DCGM이 주는 SM 활성도로 따로 확인합니다. DCGM 화면과 문서에서는 SM 활성도를 SM Active라고 씁니다.

‍

GPU 사용률 100%여도 SM 일부만 일할 수 있는 이유

GPU-Util은 GPU에서 계산 작업이 하나라도 돌고 있었는지만 봅니다. SM이 몇 개 일했는지는 반영하지 않습니다. 그래서 SM 대부분이 놀고 있어도 GPU-Util은 100%가 될 수 있습니다.

마트 계산대에 빗대면 쉽습니다. 데이터센터용 GPU에는 계산대가 수십에서 100개 넘게 있고, 계산대 하나가 SM 하나입니다. GPU-Util은 계산대가 하나라도 손님을 받던 시간의 비율이라, 계산대 한 곳만 바빠도 100%가 됩니다. SM 활성도는 각 계산대가 손님을 받고 있던 시간의 비율을 모든 계산대에서 평균한 값입니다. 그래서 SM 활성도에는 SM이 몇 개, 얼마나 오래 활성 상태였는지가 함께 담깁니다.

실제 정의도 계산대 비유와 같습니다. NVIDIA 문서는 GPU-Util을 측정 간격 동안 계산 작업이 하나 이상 실행된 시간의 비율로 정의합니다. A100에는 SM이 108개 있는데, 계산 작업이 SM 하나에서만 돌아도 그 시간은 사용 중으로 잡힙니다.

SM 일부만 일하는 대표적인 경우는 한 번에 실행할 작업 묶음이 충분하지 않을 때입니다. GPU는 계산 작업을 여러 묶음으로 나눠 SM에 맡기는데, 묶음이 SM 수보다 적으면 남는 SM은 놉니다. NVIDIA 문서의 단순화한 예처럼 묶음 수가 SM 수의 5분의 1이면 GPU-Util은 100%에 가깝지만 SM 활성도는 0.2입니다. 이 예라면 SM 5개 가운데 4개가 노는 셈이라, GPU를 더 사기 전에 한 번에 더 많은 일을 맡겨 SM을 고루 채울 여지가 있는지부터 봅니다. 다만 실제 측정값 0.2만으로 특정 SM이 계속 쉬었다고 단정할 수는 없습니다. 일부 SM이 내내 일한 경우와 모든 SM이 잠깐씩 일한 경우가 같은 값으로 나올 수 있기 때문입니다.

‍

GPU 1장 안의 SM 12칸 가운데 3칸만 채워진 격자 옆에 GPU 사용률(GPU-Util) 100% 막대와 SM 활성도(SM Active) 0.25 막대를 나란히 둔 그림
측정 구간 내내 SM 12개 가운데 3개만 활성이면, GPU-Util은 100%여도 SM 활성도는 0.25입니다

‍

이제 GPU를 얼마나 고르게 쓰고 있는지 SM 활성도로 직접 확인해 보겠습니다.

‍

GPU 사용률과 SM 활성도 확인 방법

1. GPU 사용률과 SM 활성도 확인하기

GPU 사용률과 SM 활성도는 dcgmi dmon 명령으로 확인할 수 있습니다. 단, DCGM이 GPU 값을 모으는 백그라운드 서비스인 호스트 엔진이 실행 중이어야 동작합니다. -e 옵션 뒤 숫자는 DCGM이 지표마다 붙인 번호로, GPU 사용률은 203이고 SM 활성도는 1002입니다.

다음은 dcgmi dmon의 출력 예시입니다. 출력은 1초 간격으로 GPU마다 한 줄씩 나옵니다.

$ dcgmi dmon -e 203,1002
#Entity         GPUTL             SMACT
ID
GPU 0           98                0.203
GPU 0           97                0.198

‍

2. SM 활성도 값 읽기

GPUTL 열이 GPU 사용률이고, SMACT 열이 SM 활성도입니다. GPU 사용률을 100으로 나누면 두 값을 0에서 1 사이 척도로 맞춰 볼 수 있습니다. 다만 두 지표는 측정 대상이 달라 숫자가 같아도 뜻이 다릅니다.

  • GPU 사용률(GPUTL): 0에서 100 사이 백분율
  • SM 활성도(SMACT): 0에서 1 사이 비율

NVIDIA 문서 기준으로 SM 활성도가 0.8에 못 미치면 GPU를 효과적으로 쓴다고 보기 어렵고, 0.5 미만이면 비효율적으로 쓰고 있을 가능성이 큽니다. 예시 출력은 GPU 사용률이 98인데 SM 활성도는 0.20 안팎이라 0.5에도 못 미칩니다. 계산 작업은 거의 쉬지 않고 돌았지만, SM 전체로 평균하면 SM 5개 가운데 1개꼴로만 일한 것과 같습니다.

SM 활성도가 0.8을 넘었다고 해서 GPU를 잘 쓰고 있다고 단정할 수는 없습니다. 메모리에서 데이터가 오기를 기다리는 동안에도 SM은 활성으로 잡히기 때문입니다.

‍

3. SM 활성도가 낮을 때 작업 담당자에게 물어볼 것

GPU 사용률은 높은데 SM 활성도가 낮게 유지된다면, 작업 담당자에게 배치 크기와 동시 요청 수를 묻습니다. GPU가 모자란 것이 아니라 한 번에 실행할 작업 묶음이 충분하지 않아 SM 대부분이 노는 상태일 수 있기 때문입니다. 배치 크기는 GPU에 한 번에 넣는 데이터 묶음의 크기입니다. 배치 크기를 늘린다고 곧 성능이 좋아지지는 않으므로 다음 세 가지를 함께 확인합니다.

  • 현재 배치 크기와 동시 요청 수는 얼마인가
  • 더 늘릴 만큼 GPU 메모리 여유가 있는가
  • 늘렸을 때 처리량과 요청 하나의 응답 시간은 어떻게 바뀌는가

‍

GPU 사용률 확인 중 자주 묻는 질문

내 GPU에서도 SM Active를 확인할 수 있나요?

NVIDIA DCGM 문서 기준으로 프로파일링 지표는 Volta 아키텍처 이후의 데이터센터용 제품에서 지원합니다. GPU가 SM 활성도를 지원하는지는 dcgmi profile -l -i 0 결과에 1002가 있는지로 판단하고, 끝의 0은 GPU 번호입니다. NVIDIA 드라이버만 있고 DCGM이 없는 서버에서는 nvidia-smi --query-gpu=index,utilization.gpu --format=csv -l 1로 GPU-Util까지만 볼 수 있습니다. MIG는 GPU 한 장을 독립된 인스턴스 여러 개로 나누는 기능입니다. MIG가 켜진 GPU는 nvidia-smi에서 GPU 사용률을 조회할 수 없으므로 DCGM으로 확인하고, 인스턴스별 값을 합치는 방법은 MIG로 가상화된 GPU의 사용률은 어떻게 측정할까?에서 다뤘습니다.

GPU-Util과 GR Engine Active는 같은 지표인가요?

정의는 비슷하지만 다른 지표입니다. nvidia-smi의 GPU-Util과 DCGM의 GR Engine Active는 수집 방식과 평균 구간이 달라 숫자가 정확히 맞지 않습니다. GR Engine Active는 그래픽이나 연산 엔진 일부라도 활성이었던 시간의 비율이고, 하드웨어 카운터에서 읽습니다.

dcgmi dmon에 넣을 다른 지표 번호는 어디서 찾나요?

dcgmi dmon -l을 실행하면 DCGM이 아는 지표가 이름, 출력 열 이름, 번호와 함께 번호 순으로 모두 나옵니다. Short Name이 dcgmi dmon 출력의 열 이름이고, Field ID가 -e 옵션 뒤에 쓰는 번호입니다. 예시에서는 일부만 남기고 줄였습니다.

$ dcgmi dmon -l
________________________________________________________________________________
Long Name                                         Short Name          Field ID
________________________________________________________________________________
...
gpu_temp                                           TMPTR               150
power_usage                                        POWER               155
...
gpu_utilization                                    GPUTL               203
mem_copy_utilization                               MCUTL               204
...
gr_engine_active                                   GRACT               1001
sm_active                                          SMACT               1002
...

‍

마치며

GPU-Util 100%는 GPU가 쉬지 않았다는 신호입니다. SM 활성도를 함께 보면 전체 SM이 얼마나 활성 상태였는지 확인할 수 있습니다. 100%인데 느리다면 GPU를 더 사기 전에 SM 활성도부터 함께 출력해 봅니다. 두 값을 같은 시간축 그래프로 계속 보려면 DCGM 값을 모니터링 도구로 수집해야 하고, Prometheus로 수집하는 방법은 쿠버네티스에서 NVIDIA GPU 모니터링하기 (1) DCGM-Exporter 지표 수집에서 다뤘습니다.

SM 활성도까지 확인했는데도 작업이 느리다면, 원인이 메모리인지 데이터 공급인지 계산 자체인지 나눠 봐야 합니다. GPU 사용률 100%인데 느린 원인을 지표 조합으로 구분하는 방법은 다음 글에서 이어서 다룹니다.

와탭 서버 모니터링은 리눅스 에이전트에서 GPU 수집을 켜면 GPU 사용률과 SM 활성도를 함께 수집합니다. 에이전트 2.9.3 이상은 DCGM 서비스가 실행 중일 때 SM 활성도를 수집하고, 2.9.16 이상은 nvidiav2.collector=true 설정으로 NVML과 DCGM 라이브러리에서 바로 수집합니다. 지표별 최소 버전과 조건은 GPU 메트릭 (와탭 공식 문서)에서 확인할 수 있습니다.

‍

더 읽을거리

와탭 모니터링을 무료로 체험해보세요!