nvidia smi gpu 꼭 알아야 할 TIP - temp, serial, topology matrix
nvidia gpu는 AI와 함께 이 시대에 반드시 필요한 제품이 되면서, 서버를 사용하는 AI업체 및 영상업체 등 모든 분야의 업체에서 사용하게 되었는데요. 이전 포스팅에서 미처 다루지 못하였던 nvidia gpu tip에 대해 몇 가지 알려 드리려고 합니다.
gpu서버 운용에 문제점이자 걱정거리 중에 하나는 발열인데요. 이 발열을 잡기 위해서는 서버의 강력한 미들팬이 필요하며 항온항습이 잘 갖춰져 있는 서버실이 필요합니다.
gpu의 온도는 몇 도가 적정온도예요?
많은 사람들이 물어봅니다. 그렇다면 GPU 온도가 얼마큼 올라가게 되면 서버가 다운이 되나요?
어렵지 않습니다. 제 블로그를 보시는 분들이라면 기억하시나요? 이 전 포스팅에 말씀드렸던 nvidia-smi 명령어에는 정말 모든 것이 들어있습니다. 굳이 어렵게 다른 GPU 모니터링 프로그램 찾으실 필요 없습니다.
지금 바로 아래에서 하나씩 확인시켜 드릴게요.
# nvidia-smi -q |grep -i temp
1. GPU Current Temp
최근 GPU 온도 표기.
2. GPU Shutdown Temp
해당 GPU가 95C 가 되면 GPU 및 서버가 Hang or Shutdown 돼도 이상하지 않습니다.
3. GPU Slowdown Temp
GPU가 92C까지 올라간다면 GPU의 성능이 저하된다. 이때 빠르게 조치해야 한다.
4. GPU Max Operating Temp
해당 GPU의 적정온도는 85C 이하이다.
TIP. GPU 마다 적정온도 및 slow temp 등 다 다르며, GPU 온도를 떨어트리면 어떻게 하지?라고 고민한다면 방법은 단 한 가지뿐이다. GPU 조절은 할 수 없으니, 서버의 미들 팬의 속도를 올리게 되면 자연스레 GPU 온도가 내려간다.
그렇다면 Serial은 왜 필요할까? 물론 서버 사용자에게는 전혀 필요 없는 정보이지만, 관리자나 엔지니어에게는 반드시 알아야 할 기본 중의 기본이다.
단일 GPU를 사용하는 서버는 필요 없지만 "요즘 GPU 서버는 기본 4개 이상의 GPU가 들어가야지 GPU 서버라고 불러야 되지 않을까?"라는 생각을 많이 한다. 8 GPU 서버, 16 GPU 서버가 등장하고 있는데 말이다.
그렇다면 GPU serial은 왜 중요한가?
GPU 서버의 장애가 생긴다면 그 많은 GPU 사이에서 어떤 GPU 카드가 장애가 났는지 찾고 싶다면 serial을 알아야 한다. 단순히 nvidia-smi에서 0,1,2,3 GPU number가 서버 메인보드의 순서라고 생각한다면 그건 착각이다.
#nvidia-smi -q |grep -i "serial\|bus id"
smi명령어를 통해 -q옵션으로 모든 쿼리를 확인하면 되지만, 끝없는 내용에서 바늘 찾기 할 필요 없이 grep 명령어를 통하여 내가 필요한 serial과 bus id를 추출하면 된다.
내가 찾고 있는 해당 GPU 시리얼이 매칭 되어 있는 bus id를 확인 후 해당 메인보드의 매뉴얼을 확인하면 보통은 bus id의 위치를 찾을 수 있을 것이다.
만약 bus id를 찾을 수 없다면 우리는 또 dmidecode라는 명령어를 통하여 해당 bus id를 메인보드의 slot 위치와 매칭 시켜 찾을 수 있으니 하나씩 내가 알고 있는 지식을 생각해보자.
첫 번째 시리얼인 GPU가 fail이 났다고 가정하면 해당 bus id는 01:00.0 일 것이다. 해당 PCI-E 슬롯의 위치는 어떻게 될까? 간단히 찾아보자.
#dmidecode -t slot |grep -i "slot\|01:00.0"
해당 bus id가 위치한 PCI-E 슬롯은 SLOT9번에 해당하였다. 이제 SLOT9 가 mainboard 어디에 위치하는지는 직접 찾아보도록 하자.
왜 GPU 마다 p2p bandwidth가 다른가요?
마지막으로 topo -m이라는 옵션이 있다. GPU to GPU의 bandwidth등에 민감한 사람들이나 직접 확인해보고 싶다면 cuda sample의 p2pbandwidth를 실행시켜 확인할 수 있다.
또한 GPU0 - GPU7의 속도, GPU0 - GPU2의 속도 등이 다르다는 것을 알게 될 것인데 왜 그런 것일까? 서버의 설계상의 topology matrix에 따라 다른 것이다.
#nvidia-smi topo -m
위에서 볼만한 것 몇 가지만 설명드리도록 하겠다. mainboard architecture diagram을 보면 정답을 찾아볼 수 있다.
SYS
CPU의 QPI, UPI를 통하는 것이다.
NODE
일반적인 GPU PCI-E타입의 PCIe 호스트 브리지 간의 연결을 보여준다.
NV1
nvlink를 통한 연결
NV2
nvlink 통한 연결
그렇다면 여기서 NV1과 NV2의 차이가 궁금할 거 같아 준비해봤다. 위에 volta architecture를 보면 알겠지만 nvlink의 라인이 한가닥으로 연결이 되어있느냐 2가닥으로 연결되어 있느냐의 차이다.
물론 nvlink1.0, nvlink2.0의 속도 차이 및 volta gpu는 nvlink 6라인이 있다. 그중에 GPU 끼리 몇 라인이 연결되어 있냐에 따라 NV1과 NV2로 나누어진다.
GPU는 개발자와 사용자에게는 Architecture와 사용하는 방법, 운영하는 법도 굉장히 중요하지만, 관리자 및 시스템 엔지니어에게는 위에 내용도 굉장히 중요하다.
누구는 중요하고 누구는 중요치 않다기보다는 뭐든 많이 알고 있으면 좋다. 모든 TEST Supermirco 서버로 진행되었으며, Supermicro GPU 서버는 NVIDIA의 DGX와 다를 게 없는 같은 Base의 메인보드이니 참고하도록 하자.
2020/12/18 - [분류 전체보기] - NVIDIA-SMI 확인방법 및 활용하기
2020/12/02 - [linux] - MIG GPU INSTANCE 구성
'linux' 카테고리의 다른 글
Anaconda 다운로드 설치 및 파이썬 가상환경 사용하기 (303) | 2020.12.29 |
---|---|
쿠버네티스(kubernetes)란 ? 기본 개념부터 알아보자 (1330) | 2020.12.24 |
NVIDIA-SMI 확인방법 및 활용하기 (7949) | 2020.12.18 |
MIG GPU INSTANCE 구성 (461) | 2020.12.02 |
NVIDIA A100 MIG (298) | 2020.12.02 |
최근댓글