-
[Linux]리눅스에서 NVIDIA GPU 전력 제한하기HomeLAB/Linux 2024. 12. 3. 19:15
2024.12.02-리눅스에서 NVIDIA GPU 팬 속도 설정하기
이전 글에서 리눅스에서 NVIDIA GPU의 팬 속도를 설정했습니다. GPU의 성능과 관리를 위한 고전적인 방법으로 팬 속도를 높게 고정시키는데, 요즘은 전력 제한이나 클럭 조절 등의 방법을 사용하여 GPU를 과열되지 않게 관리하고 성능을 떨어지지 않게 합니다. 이번에는 NVIDIA GPU의 전력을 제한하여 전기 소모량과 발열을 줄여 꾸준한 GPU 성능에 도움이 되도록 해볼 것입니다.
기본적으로 칩에 전기를 많이 공급할수록 성능이 오르지만, 칩에 무한정으로 전기를 많이 공급한다고 해서 선형적으로 성능이 오르지 않습니다. 또한 칩에 전기를 많이 공급한다면 그에 따라 발열도 늘어나는데, 발열이 늘어나게 되면 강제적으로 작동이 제한되는 쓰로틀링이 걸립니다. 따라서 최대 성능에 준하는 성능을 전력 소비를 최소화하여 적절한 발열로 유지하는 지점이 스윗 스팟이라고 생각합니다.
이런 부분을 고려하여 제조사들이 알아서 최대로 공급할 수 있는 전력을 제한했겠지만, 칩의 수율, 부스트 클럭이나 자체적인 칩 오버클럭 등으로 스윗 스팟을 넘어가는 부분이 있습니다. 따라서 제조사들이 최대로 공급할 수 있는 전력보다 더 줄여서 자체적으로 내가 가진 GPU를 최적의 성능을 내도록 하는 것입니다. 저는 90% 정도로 줄이면 적절한 것 같다고 생각합니다.
여기서 주의해야 할 점은 이 글에서는 리눅스 운영체제에서 NVIDIA GPU에 대해서만 다루며, AMD와 Intel GPU에 대해서는 잘 모르니 물어봐도 대답해 줄 수 없습니다.
0. 시스템 사양
OS: Ubuntu 22.04 LTS
NVIDIA Driver: 550.127.08
1. NVIDIA GPU 드라이버 설치
당연히 GPU 팬 속도를 제어하기 전에 NVIDIA GPU를 제대로 사용하려면 드라이버를 설치해야 합니다. 설치까지 이 글에서 다룰 수는 없기에 아래의 공식 문서 링크를 보거나 알아서 구글링 해서 잘 설치하길 바랍니다.
https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/index.html#ubuntu
-NVIDIA 공식 문서(추천)
https://ubuntu.com/server/docs/nvidia-drivers-installation
- Ubuntu 서버 공식 문서
2. GPU Power 설정 확인하기
Nvidia 드라이버의 System Management Interface를 사용하면 확인이 가능합니다.
# NVIDIA 드라이버를 설치했다면 정상적으로 사용 가능하다. nvidia-smi
필자는 이미 적용이 되어있는데, 이 글을 위하여 마지막의 RTX 3090의 전력 제한을 원래대로 해놨다. 좀 더 상세하게 확인하려면 옵션을 추가적으로 사용하면 됩니다.
# nvidia-smi에 쿼리를 날려 전력 관련한 설정을 확인하는 명령어 # 긴 버전 nvidia-smi --query --display=POWER # 짧은 버전 nvidia-smi -q -d POWER # 필자처럼 통일되지 않은 여러 개의 GPU를 사용할 시 # N은 GPU의 번호이다. nvidia-smi -q -i N -d POWER # nvidia-smi -q -i 5 -d POWER
저는 기본 140W까지 먹는 GPU에 먼저 전력 제한을 걸어놨기 때문에 Power Draw 값을 보면 120W 이상을 사용하지 않도록 되어있는 모습입니다.
3. GPU Power Limit 설정하기
이제 제한을 걸어볼 겁니다. 이미 걸린 다른 GPU 외의 전력 제한을 원상 복구한 RTX 3090에 다시 전력 제한을 걸어볼 겁니다.
3.1. GPU 전력 정보 확인
다시 한번 GPU의 전력 정보를 확인해 보면 아래와 같습니다.
확인해 본 결과 최대 전력량은 400w, 최소 전력량은 100w, 현재 전력량은 기본값인 350w로 세팅되어 있습니다. 기본값에서 90% 정도라고 하면 대략 30w가 빠진 320w로 세팅할 겁니다.
또한 확인할 수 있는 지표를 위하여 Geekbench 6(6.3.0 Linux x64)의 벤치마크도 첨부합니다.
https://browser.geekbench.com/v6/compute/3252485 겨울이라 온도가 낮다 보니 점수가 나름 잘 나오는 것 같습니다.
3.2. 전력 제한하기
기본값이 350w였으니 90%라면 대략 320w로 낮춰야겠지만, 글을 쓰다 보니 300w로 나름의 극적인 확인을 해보려고 합니다.
# 하드웨어의 값을 바꾸는 일이기에 관리자 권한이 필요하다. # N1에는 GPU의 ID, N2에는 설정할 전력 소비량을 입력한다. sudo nvidia-smi -i N1 -pl N2 # sudo nvidia-smi -i 5 -pl 300 # Warning: persistence mode is disabled on device 00000000:00:00.0. # See the Known Issues section of the nvidia-smi(1) man page for more information. # Run with [--help | -h] switch to get more information on how to enable persistence mode. # 위와 같은 경고가 뜨겠지만 무시하면 된다. 드라이버를 항시 로드하는 옵션인데 전력 소비량이 늘어난다고도하고 잘 모르겠다. # 신경쓰인다면 아래의 명령어를 사용하면 된다. sudo nvidia-smi -pm 1
설정하고 All done.이라는 문구를 보면 설정이 완료된 것입니다.
4. 결과
전력 정보를 확인해 보면..
이렇게 적용된 것을 확인할 수 있습니다.
https://browser.geekbench.com/v6/compute/3252560 벤치마크 점수가 생각보다 많이 안 떨어진 것 같습니다. 지금이 겨울인 데다 팬 속도도 90%로 이전 글에서 적용해 놓은 터라 그리 차이 나지 않았을 수도 있습니다. 여하튼, 350w에서 300w로 변경하여 50w를 덜 쓰지만 성능상으로는 크게 차이가 없는 결과가 나왔습니다. 이렇게 되면 환경도 지키고 내 전기세도 지키게 되는 것이라고 볼 수 있습니다.
하지만 Geekbench 자체가 GPU에 고부하를 주는 건 아니라는 의견이 많아 스윗 스팟을 찾았다기에는 조금 무리가 있다는 생각이 듭니다. 고부하를 위하여 다른 테스트 혹은 Geekbench AI로 벤치마크하려 했지만 현재는 Linux 계열에서는 CPU로만 가능한 것으로 보여 여기까지만 해보려 합니다.
레퍼런스
'HomeLAB > Linux' 카테고리의 다른 글
[Linux] 도커로 Cloudflare Tunnel + Nginx Proxy Manager + Authelia 구성으로 포트 공개하지 않고 안전하게 외부로 서비스 공개하기 (1) 2025.02.16 [Linux]Nginx Proxy Manager(NPM)에서 DB 오류 날때 해결 방법 (0) 2025.01.24 [Linux]리눅스에서 NVIDIA GPU 팬 속도 설정하기 (1) 2024.12.02