CPU Steal

CPU Steal은 가상화 환경에서만 등장하는 개념으로,
“내 VM(가상머신)이 CPU를 쓰고 싶지만, 하이퍼바이저가 다른 VM에 CPU를 주느라 기다린 시간”을 의미합니다.


쉽게 말하면

  • 물리 서버 하나에 여러 VM이 같이 CPU를 나눠 씀
  • 내가 CPU를 요청했는데
  • 다른 VM이 이미 쓰고 있어서 강제로 대기
    👉 이 대기 시간이 바로 Steal time

개념 구조

👉 VM B 입장에서는 “CPU가 놀고 있는 것처럼 보이는데 실제로는 못 쓰는 상태”


확인 방법 (Linux 기준)

top 또는 htop에서 확인 가능

  • st 값 = CPU steal (%)
  • 예: st = 15%
    → CPU 시간의 15%를 다른 VM 때문에 뺏김

왜 문제인가?

CPU steal이 높으면:

  • 서버가 느려짐
  • 응답 지연 증가
  • CPU 사용률이 낮아 보여도 실제 성능은 나쁨

👉 특히 이런 상황에서 자주 발생:

  • 클라우드 VM (AWS, Azure, GCP)
  • 오버커밋된 호스트 (VM 너무 많이 올림)

기준 (실무 감각)

  • 0~2% → 정상
  • 5% 이상 → 주의
  • 10% 이상 → 성능 문제 가능성 높음
  • 20% 이상 → 거의 확실히 문제

해결 방법

  1. VM 스펙 업 (vCPU 증가)
  2. 더 좋은 인스턴스로 이동
    • shared → dedicated
  3. 호스트 변경 (cloud 재배치)
  4. CPU overcommit 적은 환경 사용
  5. Burst 타입이면 크레딧 확인

핵심 요약

  • CPU steal = “남 때문에 CPU 못 쓰고 기다린 시간”
  • VM 환경에서만 발생
  • 높으면 성능 병목 원인

예제

PU 부분

👉 중요한 값:

  • idle (id) = 97.2% → CPU 거의 놀고 있음
  • steal (st) = 0.2% → 거의 0 수준

해석

👉 현재 상태는:

  • CPU 여유 충분
  • steal 거의 없음
  • load average도 낮음 (0.44 / 0.39 / 0.27)

➡️ CPU / Steal 관련 병목은 전혀 아님


그럼 성능 문제 있다면 어디?

이 경우는 보통 3가지 중 하나입니다:


1️⃣ Apache (웹) 쪽 병목 가능성

👉 특징:

  • 한 프로세스가 CPU 꽤 먹고 있음
  • 동시 요청 많으면 지연 가능

👉 체크:

👉 의심:

  • PHP 처리 느림
  • 동기 blocking 작업