게임 렉 백서 › L7 서버 OS (커널)
CPU 스틸 (가상 머신) CPU steal time
원인 ID so-steal · 주 담당 인프라팀·서버 인프라 · 함께 외부·외부
그림과 실험이 있는 원본 카드로 열기 →
물리 서버(하이퍼바이저)가 가상 머신의 CPU 시간을 잠시 다른 가상 머신에 넘기는 동안(CPU 스틸) 게임 서버가 멈춥니다.
왜 같은 호스트의 다른 가상 머신이 CPU를 많이 씀 → 그러면 내 가상 머신이 수 ms~수십 ms씩 실행 기회를 잃음 → 화면에서는 원인 모를 틱 시간 급증으로 뚝뚝 끊김·멈춤
- 증상
- 뚝뚝 끊김, 멈춤
- 요인
- 정체
- 누가 겪나
- 서버 전체
- 언제
- 가끔 무작위로
- 담당
- 주 담당 인프라팀·서버 인프라 · 함께 외부·외부
- 인프라팀 할 일
- steal 지표(top·vmstat의 st) 모니터링, 전용 코어·호스트, CPU 크레딧이 바닥나면 느려지는 버스트형 인스턴스 피하기, steal이 계속 높은 인스턴스는 중지 후 다시 시작해 다른 호스트로 옮기기.
- 외부 할 일
- 클라우드 사업자에 steal이 계속 높은 호스트 신고.
- 그래프에서는
- 가끔 무작위로 튐 · %steal, 서버 틱 시간
- 확인할 곳
- mpstat -P ALL 1의 %steal을 서버 틱 시간과 같은 시간축에 놓고 봄
- 이러면 맞음
- 틱이 튄 시각에 %steal이 함께 튀고 중지 후 다시 시작해 다른 호스트로 옮기면 줄어듦
- 이러면 아님
- %steal이 0에 가까운데 틱이 튀면 게임 서버 안쪽 원인(“서버 GC 전체 멈춤”, “락 경합”). 컨테이너면 “컨테이너 CPU 스로틀링 (CFS 쿼터)”
- 확인 수단
- 인프라 도구로 확인(게임 코드 불필요)
출처
- proc_stat(5) — Linux manual page Linux man-pages
steal: 가상화 환경에서 다른 운영체제가 실행되느라 빼앗긴 시간 - Standard mode for burstable performance instances AWS
버스트형 인스턴스는 크레딧을 써서 기준 성능을 넘고 크레딧이 떨어지면 CPU 사용률이 기준 수준으로 낮아짐 - How EC2 instance stop and start works AWS
인스턴스를 중지했다 시작하면 대부분 새 호스트로 옮겨짐 - mpstat(1) — Linux manual page sysstat
%steal: 하이퍼바이저가 다른 가상 CPU를 돌리는 동안 이 가상 CPU가 어쩔 수 없이 기다린 시간 비율
함께 보면 좋은 원인
같은 층: L7 서버 OS (커널)
같은 증상(뚝뚝 끊김)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기