brunch

You can make anything
by writing

C.S.Lewis

by 이동인 Oct 09. 2017

About Infra. CPU Steal Time

About Infra.

CPU Steal은 클라우드 서비스와 물리 서버의 환경차이에서 발생하는 대표적인 지표입니다. CPU Steal Time이 높아지면 CPU 부하율이 높아지기 때문에 웹 서비스에 장애를 초래합니다. 클라우드라는 공유자원을 사용하는 과정에서 CPU의 자원을 사용하지 못하는 시간인 CPU Steal Time 때문에 서버의 성능이 저하되는 경우가 있습니다. 그럼 이 CPU Steal Time 또는 CPU Stolen Time이라고 불리는 지표에 대해 알아보도록 하겠습니다.  


CPU Steal Time

CPU Steal time은 은 하이퍼 바이저가 다른 가상 프로세서를 서비스하는 동안 가상 CPU가 실제 CPU를 기다리는 시간을 백분율로 표시한 값입니다.


가상 환경에서 동작하는 가상 시스템 (VM)은 단일 호스트에있는 다른 인스턴스와 리소스를 공유합니다. 공유하는 리소스 중 하나가 CPU주기입니다. VM이 실제 서버에있는 동일한 크기의 4 개의 VM 중 하나 인 경우 해당 CPU 사용률은 모든 CPU주기의 25 %로 제한되지 않습니다. CPU 사용 비율보다 많은 비율을 사용할 수 있습니다.


CPU steal time이 높으면 어떤 상황이 발생하는가.

백그라운드에서 장시간 걸리는 작업의 경우, 다른 VM들과 CPU 주기를 공유하는 과정에서 조금 더 느리게 작업이 마무리 될 수 있습니다. CPU steal time은 이런 경우 작업을 중지시키는 요소로 작용하지 않습니다. 가끔은 리소스를 나누는 과정에서 작업이 더 빠르게 끝나기도 합니다. 

하지만 웹앱의 경우 실시간 처리가 필요한 경우들이 있습니다. 많은 웹 응답이 이뤄져야 하는 상황에서 cpu steal time이 높아지고, 그로인해 성능이 4배이상 감소한다면 중요한 리케스트가 처리되지 못하면서 서비스에 장애가 발생할 수도 있습니다. 


CPU steal time이 높은 원인은?

cpu steal time이 높은 원인은 둘 중 하나입니다.  

더 많은 CPU 리소스를 가지고 있는 VM을 필요로 합니다. (여러분의 문제입니다.)

물리버서가 과대 판매되어 가상화 장비가 공격적으로 경쟁하는 상황입니다. (여러분의 문제가 아닙니다. 클라우드 제공사가 해결해야 하는 문제입니다.)

아쉽게도 cpu 매트릭만으로 위 두가지 상황을 판별하는 것은 쉽지 않습니다. 하지만 같은 역할을 하는 복수의 호스트를 여러개 가지고 있다면 다음과 같이 분별해 볼 수 있습니다. 

 1. 리소스 부족의 경우

위 그림처럼 모든 VM에서 %st(cpu steal time)이 높다면 시스템이 더 많은 cpu를 사용해야 한다는 것을 의미합니다. 더 높은 사양의 VM을 선택하셔야 합니다. 

2. 클라우드 사업자의 과다 판매의 경우

위 그림처럼 일부의 VM에서만 %st(cpu steal time)이 높다면 같은 물리 호스트에 있는 다른 VM들이 서버의 자원을 과다하게 사용하고 있을 확률이 높습니다. 물리적으로 다른 호스트로 이동하여 해결 할 수 있습니다.


대처 방법을 알아보자.

일반적인 경우 steal time이 20분동안 10%를 넘기는 상태에서 유지되고 있다며, VM은 정량 보다 느리게 동작하고 있을 것입니다.

인스턴스를 중지하고 다른 물리 서버로 이동하세요. 

그래도 steal time이 높다면 cpu 리소스를 업그레이드하세요. 

그리도 steal time이 높다면 클라우드 서비스 제공자에게 문의하세요.클라우드 서비스가 과설계된것은 아닌지 알아보세요. 


CPU Steal Time 확인하기

Linux top 명령을 실행하면 주요 성능 메트릭의 실시간보기를 볼 수 있습니다. 아래 그림에서 %st 가 CPU Steal Time입니다. CPU Steal Time이 100%가 되면 다른 가상화 자원이 CPU를 모두 사용하는 것이므로 해당 CPU 자원 사용할 수 없게 됩니다.


윈도우 OS의 경우 CPU Steal Time을 보여주지 않습니다. 이런 경우 와탭 서버 모니터링 서비스와 같은 모니터링 서비스를 통해Steal Time 값을 활 수 있습니다. Steam Time은 가상화 되어 있지 않은 장비에서는 항상 0%로 표시됩니다. 와탭과 같은 모니터링 서비스들은 지표값들을 주기적으로 저장하여 과거 데이터를 확인할 수 있는 장점을 가지고 있습니다.  


마무리

CPU Steam Time은 공유 자원을 사용하는 과정에서 나오는 부산물 같은 것입니다. CPU Steal Time이 과도한 경우 우리는 좀더 높은 스펙의 자원을 사용하는 것을 통해 해결할 수 있습니다. 






관련 url

http://hakurei.tistory.com/67

http://www.stackdriver.com/understanding-cpu-steal-experiment/

http://blog.scoutapp.com/articles/2013/07/25/understanding-cpu-steal-time-when-should-you-be-worried


매거진의 이전글 Disk I/O (%)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari