반응형
GPU 다수 노드 + Bastion 서버 구조
👉 Xid 43 발생 노드 자동 감지 스크립트 (운영용)
🎯 목표
- 여러 GPU 노드에 SSH 접속
- 최근 로그에서 Xid 43 검색
- 발생 노드만 출력
- GPU index / PCI bus 같이 표시
- Slurm drain 연동 가능 구조
📌 1️⃣ 기본 원리
각 노드에서 실행되는 명령:
journalctl -k | grep -i "Xid.*43"
최근 10분만 보려면:
journalctl -k --since "10 min ago" | grep -i "Xid.*43"
🛠 2️⃣ Bastion에서 실행하는 자동 스크립트
📄 파일 생성
vi xid43_check.sh
내용:
#!/bin/bash
# ===== 설정 =====
NODE_PREFIX="gpu"
START=1
END=64
SINCE="30 min ago"
echo "========== Xid 43 CHECK =========="
for i in $(seq -w $START $END); do
NODE="${NODE_PREFIX}${i}"
echo "Checking $NODE ..."
RESULT=$(ssh -o ConnectTimeout=5 $NODE \
"journalctl -k --since \"$SINCE\" 2>/dev/null | grep -i 'Xid.*43'")
if [ ! -z "$RESULT" ]; then
echo "❌ Xid 43 FOUND on $NODE"
echo "$RESULT"
echo "-----------------------------------"
fi
done
echo "========== DONE =========="
# ===== 설정 =====
NODE_PREFIX="gpu"
START=1
END=64
SINCE="30 min ago"
echo "========== Xid 43 CHECK =========="
for i in $(seq -w $START $END); do
NODE="${NODE_PREFIX}${i}"
echo "Checking $NODE ..."
RESULT=$(ssh -o ConnectTimeout=5 $NODE \
"journalctl -k --since \"$SINCE\" 2>/dev/null | grep -i 'Xid.*43'")
if [ ! -z "$RESULT" ]; then
echo "❌ Xid 43 FOUND on $NODE"
echo "$RESULT"
echo "-----------------------------------"
fi
done
echo "========== DONE =========="
실행 권한
chmod +x xid43_check.sh
실행
./xid43_check.sh
📌 출력 예시
❌ Xid 43 FOUND on gpu028
NVRM: Xid (PCI:0000:61:00): 43, pid=12345, GPU stopped processing
NVRM: Xid (PCI:0000:61:00): 43, pid=12345, GPU stopped processing
🚀 3️⃣ GPU index까지 자동 추출 버전 (고급)
위 스크립트를 아래로 교체하세요:
#!/bin/bash
NODE_PREFIX="gpu"
START=1
END=64
SINCE="30 min ago"
echo "========== Xid 43 DETAIL CHECK =========="
for i in $(seq -w $START $END); do
NODE="${NODE_PREFIX}${i}"
RESULT=$(ssh -o ConnectTimeout=5 $NODE \
"journalctl -k --since \"$SINCE\" 2>/dev/null | grep -i 'Xid.*43'")
if [ ! -z "$RESULT" ]; then
echo "================================="
echo "NODE: $NODE"
echo "$RESULT"
echo "--- GPU LIST ---"
ssh $NODE "nvidia-smi --query-gpu=index,pci.bus_id --format=csv"
fi
done
NODE_PREFIX="gpu"
START=1
END=64
SINCE="30 min ago"
echo "========== Xid 43 DETAIL CHECK =========="
for i in $(seq -w $START $END); do
NODE="${NODE_PREFIX}${i}"
RESULT=$(ssh -o ConnectTimeout=5 $NODE \
"journalctl -k --since \"$SINCE\" 2>/dev/null | grep -i 'Xid.*43'")
if [ ! -z "$RESULT" ]; then
echo "================================="
echo "NODE: $NODE"
echo "$RESULT"
echo "--- GPU LIST ---"
ssh $NODE "nvidia-smi --query-gpu=index,pci.bus_id --format=csv"
fi
done
🧠 왜 PCI Bus 출력하냐?
Xid 로그에:
PCI:0000:61:00
가 나오기 때문입니다.
→ 해당 bus ID가 어떤 GPU index인지 매칭 가능
🔥 4️⃣ Slurm 자동 drain 연동 (옵션)
만약 Xid 43 발견 시 자동 drain 하고 싶으면:
scontrol update nodename=$NODE state=drain reason="Xid43 detected"
스크립트에 추가 가능
📌 운영 팁
| 상황 | 조치 |
| 단발성 | 모니터링 |
| 반복 발생 | Drain |
| 특정 GPU 반복 | 하드웨어 점검 |
| ECC 증가 | RMA 검토 |
⚠ 실제 운영 환경에서 추천
cron 등록:
crontab -e
*/10 * * * * /root/xid43_check.sh >> /root/xid43.log 2>&1
→ 10분마다 체크
반응형
'[GPUaaS] > XID' 카테고리의 다른 글
| [GPU] XID 43 에러 원인 및 조치방법 !! (0) | 2026.02.22 |
|---|---|
| [GPU] Xid 에러 종류 예시 & Xid 점검 명령어 !! (0) | 2026.02.22 |
댓글