Overcommit이란 ?
- CPU overcommit은 가상화 환경에서 자주 사용되는 기술로, 물리적 CPU 코어의 수보다 더 많은 가상 CPU(vCPU) 코어를 가상 머신(VM)에 할당하는 것을 말합니다.
장점
- 자원 최적화: 많은 애플리케이션과 서비스는 CPU를 지속적으로 만장일치로 사용하지 않습니다. CPU overcommit을 사용하면 이러한 시간대에 CPU 자원을 다른 VM에 할당할 수 있어 자원 활용도가 향상됩니다.
- 유연성: 더 많은 VM을 호스팅할 수 있으므로, 하드웨어 구매 비용을 절약하고 스케일링 능력을 높일 수 있습니다.
단점
- 성능 저하: 만약 모든 VM이 동시에 CPU를 만장일치로 사용하려고 시도하면, CPU 경합이 발생할 수 있습니다. 이로 인해 성능이 저하될 수 있으며, 특정 애플리케이션이나 서비스에 대한 응답 시간이 길어질 수 있습니다.
- 스케줄링 복잡성: 물리적 CPU 자원을 공유해야 하기 때문에, 스케줄링은 더 복잡해질 수 있으며, 이로 인해 오버헤드가 발생할 수 있습니다.
Overcommit 동작 방식
- CPU overcommit이 어떻게 작동하는지 이해하려면, 물리적 CPU 코어와 가상 CPU(vCPU) 코어 간의 관계와 CPU 스케줄링 방식을 살펴봐야 합니다.
- vCPU와 물리 CPU의 관계: vCPU는 가상 머신에 대한 CPU 코어로, 실제 물리 CPU 코어에 매핑됩니다. vCPU의 개수는 물리 CPU 코어 수보다 많을 수 있으며, 이는 가상 머신이 더 많은 CPU 코어를 가지고 있다고 생각하게 만듭니다.
- 시간 분할: 물리적 CPU 코어는 시간을 분할하여 여러 vCPU에 할당됩니다. 이로 인해 여러 가상 머신이 동일한 물리 CPU 코어를 공유하게 되며, 각 가상 머신은 CPU의 일부 시간을 사용하게 됩니다.
- 비동기 작업 부하: 대부분의 시스템에서 CPU는 계속 만장일치로 사용되지 않습니다. 일부 가상 머신은 많은 CPU 시간을 필요로 하지 않을 수 있으며, 이런 경우 물리 CPU는 다른 가상 머신의 요청을 처리할 수 있습니다.
- 스케줄링: 하이퍼바이저는 CPU 스케줄링을 관리하여, 어떤 vCPU가 어떤 물리 CPU 코어와 언제 연결될지를 결정합니다. 스케줄링 알고리즘은 우선순위, 공정성, 할당된 리소스 등을 기반으로 작동합니다.
- 성능 트레이드오프: 물리적 CPU 코어의 수보다 많은 vCPU를 할당하는 것은 가능하지만, 모든 가상 머신이 동시에 고성능을 요구하면 경합 상황이 발생할 수 있습니다. 이 경우, 일부 가상 머신의 성능이 저하될 수 있으며, 따라서 자원 할당과 스케줄링은 신중하게 관리되어야 합니다.
- 하이퍼바이저는 여러 가상 머신에 대해 물리적 CPU 코어의 시간을 분배합니다. 이 시간 분배는 굉장히 빠르게 이루어져, 우리 눈에는 동시에 일어나는 것처럼 보일 수 있습니다.
- 가상 머신 A는 첫 번째 밀리초 동안 CPU를 사용합니다.
- 가상 머신 B는 두 번째 밀리초 동안 CPU를 사용합니다.
- 가상 머신 C는 세 번째 밀리초 동안 CPU를 사용합니다.
- 이렇게 각 가상 머신은 CPU의 일부 시간을 할당받아 사용하고, 그 사이에 빠르게 전환됩니다. 이로 인해 여러 개의 가상 머신이 하나의 물리적 CPU 코어를 동시에 사용하는 것처럼 보이게 됩니다. 이러한 기술을 **시분할(time slicing)**이라고도 하며, 이를 통해 한정된 물리적 자원을 효율적으로 공유할 수 있습니다.