프로그래밍/General

CPU Overcommit이란?

Lou Park 2023. 7. 23. 03:02

관련 용어 정리

pCPU

물리 코어의 수. pCPU = 코어 수 * CPU 소켓 수로 계산할 수 있다.

[예시] 호스트에 4개의 core가 있는 2개의 CPU가 있을 경우: 8 pCPU

vCPU

가상머신에 할당된 가상코어 수.

 

하이퍼 스레딩 (Hyper Threading)

단일 물리코어가 논리 코어가 2개인 것처럼 동작할 수 있는 기술.

이를 활성화할 경우, 코어당 vCPU 개수가 2개가 된다. 성능도 2배로 늘어나는 것은 아니고 대략 30% 정도 좋아진다고 하며, 돌리는 애플리케이션에 따라 다르다.

CPU Overcommit?

스케줄러가 1개의 pCPU당 할당하는 vCPU의 수다.

4 pCPU의 호스트에 4v CPU, 2 vCPU를 할당한 가상머신 2대를 띄웠다면 1.5 : 1의 CPU Overcommit 비율을 가진다.

(4 vCPU + 2 vCPU) : 4 pCPU

https://www.youtube.com/watch?v=8jeBIvzyB80

Overcommit의 비율이 너무 크면 인스턴스간 자원 충돌 문제가 발생할 수도 있고, 준비시간을 늘려 성능에 악영향을 줄 수 있다.

 

이해를 간단히 하기 위해 주황색 VM보라색 VM으로 정리해보겠다.

작업을 수행하는데 4 vCPU가 필요한 주황색 VM이 먼저 작업을 하고있다고 가정해보자.

보라색 VM은 모든 pCPU가 사용중이므로 스케줄러는 기다리게하고 다음 타임슬롯에 2개의 pCPU를 사용한다. 주황색 VM이 다시 작업에 들어가려면 4개의 pCPU가 모두 가용상태가 될때까지 기다린 후 작업해야하고, 계속해서 2개의 슬롯이 유휴상태로 남게되어 자원 활용도가 떨어지게 된다.

 

이렇게 가상 CPU는 실행할 준비가 되었지만 물리 CPU에 스케줄 되지 못하고 기다리는 시간을 CPU Ready Time이라고 하고, 이 비율을 %RDY라고 한다. 일반적으로 %RDY가 5% 미만인 것이 좋다.

예시의 경우 주황색 VM에 2 vCPU를 할당했다면 더 좋은 성능을 낼 수 있었을 것이다.