
이 글에서 다룰 내용
이 글에서는 VM 리소스 중 vCPU가 실제로 무엇을 의미하는지 분석함.
가상화 환경에서 vCPU는 단순히 물리 CPU 코어를 복제한 것이 아니라 Hypervisor 스케줄러가 관리하는 실행 단위로 동작함.
따라서 vCPU 수가 곧 물리 코어 수를 의미하는 것은 아니며,
실제 실행은 스케줄링 구조와 물리 코어 상태에 의해 결정됨.이 글에서는 vCPU의 실행 모델과 Run Queue, Ready 상태, Oversubscription 구조 등을 통해 vCPU가 실제로 어떤 범위까지 성능을 의미하는지 구조적으로 설명함.
즉, 이 글은 vCPU 설정값이 실제로 무엇을 의미하는지 해석하기 위한 단계임
학습 목표
이 글을 통해 다음을 이해하는 것을 목표로 함.
- vCPU가 물리 CPU 코어와 어떻게 다른지 설명할 수 있음
- vCPU가 실행 스케줄링 단위라는 의미를 이해할 수 있음
- Run Queue와 Ready 상태가 무엇을 의미하는지 설명할 수 있음
- Oversubscription 환경에서 CPU 경합이 발생하는 이유를 이해할 수 있음
- vCPU 수와 실제 성능 사이의 관계를 설명할 수 있음
가상화 환경에서 vCPU는 VM이 사용하는 가상 CPU 단위를 의미 함
하지만 이 개념을 단순히 vCPU = 물리 CPU 코어 라고 이해하면 실제 구조와 차이가 발생함

vCPU는 물리 CPU 코어를 복제한 것이 아니라
즉 VM이 vCPU를 사용한다는 것은 물리 CPU를 직접 점유하는 것이 아니라 CPU 실행 시간을 스케줄링을 통해 할당받는 구조임.
VM 내부에서 운영체제는 vCPU를 실제 CPU처럼 인식하게 됨
예를 들면
VM에vCPU 4개를 할당하면 Guest OS는CPU 0,CPU 1,CPU 2,CPU 3
과 같이 인식하게 됨
하지만 실제 물리 서버에서는
에 따라 실행 순서가 결정됨
즉 vCPU는 물리 코어를 복제한 것이 아니라
라고 볼 수 있음.
vCPU는 Hypervisor 스케줄러가 관리하는 실행 요청 단위임
실행 흐름은 다음과 같이 진행됨
VM 내부에서 실행 요청이 발생
해당 vCPU는 먼저 Run Queue에 등록
Hypervisor 스케줄러가 물리 CPU 코어가 비는 시점에 해당 vCPU를 실행
따라서
vCPU는 특정 물리 코어에 고정되어 있지 않기 때문에 다음과 같은 관계가 성립하기 때문에 다음과 같은 관계가 가능함
vCPU 1 ⇒ Core 2
vCPU 1 ⇒ Core 5
vCPU 1 ⇒ Core 1
CPU 자원을 효율적으로 사용하기 위해 Hypervisor가 동적으로 매핑하기 때문에 하나의 vCPU는 실행 시점마다 다른 코어에서 실행될 수 있음
vCPU와 물리 코어는 1:1 대응 관계가 아님❌
가상화 환경에서 물리 CPU 코어 수에 비해 vCPU를 보다 많이 할당되는 상황이 발생할 수 있음
[예 시] 물리 CPU 코거 8개 | vCPU 32개
이러한 할당 방식을 CPU Oversubscription이라 함
CPU Oversubscription: 물리 코어보다 많은 vCPU를 할당하는 구조
모든 VM이 항상 CPU를 100% 사용하는 것은 아니기 때문에 가능한 구조
하지만 동시에 많은 VM이 CPU를 요구하면 CPU 경합(CPU Contention)이 발생할 수 있음
vCPU 수가 많다고 해서 항상 성능이 증가하는 것은 아니라,
실제 성능에는
물리 CPU 코어 수스케줄링 상태CPU 경합 여부NUMA 구조와 같은 요소에 영향을 받음
멀티 vCPU VM은 동시에 여러 코어가 필요할 수 있음.
4 vCPU VM이 실행될 경우, 최소 4개의 물리 코어가 필요하지만 물리 코어가 부족하면 일부 vCPU는 대기 상태에 들어가게되며 이러한 경우 VM 내부 작업이 전체적으로 지연될 수 있음
CPU는 Running → Ready → Running 과 같은 상태 전이가 발생함
Ready 상태는 실행 준비는 되었지만 CPU 코어를 배정받지 못한 상태 를 의미함.
Ready 시간이 길어질수록 CPU 자원 경합이 심한 환경임을 의미하기 때문에 가상화 환경에서는 Ready Time이 중요한 CPU 성능 지표로 사용됨
멀티 CPU 소켓 시스템에서는 NUMA 구조가 존재함.
NUMA: Non-Uniform Memory Access멀티 프로세서 시스템에서 CPU가 메모리에 접근하는 속도가 데이터 위치에 따라 달라지는 컴퓨터 메모리 설계 방식
구 조
: CPU와 로컬 메모리가 한 세트로 묶인 "NUMA 노드"들로 구성속도 차이
: 자신 노드의 로컬 메모리 접근은 빠르지만, 다른 노드의 원격 메모리 접근은 연결된 버스를 통해 이뤄져 속도가 느림목 적
: 과거 모든 CPU가 하나의 공유 메모리에 집중되면 병목 현상을 해소하고, CPU 개수가 많아져도 성능이 확장될 수 있게함
NUMA 환경에서는
따라서 CPU 스케줄링이 잘못 이루어질 경우 메모리 접근 지연이 증가할 수 있음
즉 CPU 실행 성능은 단순히 코어 수가 아니라
메모리 접근 구조와도 연결됨.
VM이 사용하는 CPU는 물리 코어를 직접 점유하는 것이 아니라
스케줄링을 통해 실행 시간을 할당받는 구조로 동작
따라서
가상화 환경에서 CPU 성능은
- Run Queue
- Ready 상태
- Oversubscription
- NUMA 구조
와 같은 요소의 영향을 받으며, 이러한 실행 모델을 이해하는 것이
이후 VM 리소스 설정값을 해석하는 데 중요한 기준이 됨