콘텐츠로 이동

VMM CPU 스케줄링 (VMM CPU Scheduling)

Jan 28, 2026

VMM CPU 스케줄링은 물리 CPU를 여러 가상 CPU(VCPU) 에 할당하고 시분할하여, 각 게스트 OS가 자신만의 전용 CPU를 가진 것처럼 느끼게 하는 VMM의 기능이다.

게스트들은 자신이 전용 CPU를 가진다고 믿지만, 실제 물리 CPU는 제한적이다. 할당된 VCPU 총합이 물리 CPU 수를 초과하는 오버커밋(overcommitment) 상황이 흔하다.

VCPU 스케줄링 흐름
1 게스트 생성
VCPU 수 설정 (예: 4개)
2 VCPU 스레드 생성
VMM이 각 VCPU를 스레드로 관리
3 물리 CPU 할당
충분하면 전용, 부족하면 시분할
4 스케줄링
VMM Scheduler가 VCPU ↔ 물리 CPU 매핑
VMM 스케줄링 구조
Guest 1 4 VCPUs (V0-V3)
Guest 2 4 VCPUs (V0-V3)
Physical CPUs (6개) VMM Scheduler가 VCPU를 물리 CPU에 매핑

할당된 VCPU 총합이 물리 CPU 수를 초과하는 상황이다. VMM은 표준 스케줄링 알고리즘(RR, Priority 등)에 공정성을 추가하여 각 게스트에 비례적 CPU 시간을 분배한다.

상황물리 CPU총 VCPU결과
예시6개12개 (3 게스트 × 4 VCPU)각 게스트 50% 시간만 사용

각 게스트는 4개 CPU가 있다고 믿지만, 실제로는 절반의 시간만 물리 CPU를 사용한다.

게스트 OS의 타임 슬라이스가 예상대로 동작하지 않는다. 게스트가 100ms 타임 슬라이스를 설정해도, VMM이 중간에 다른 게스트로 스위칭하면 실제 경과 시간이 훨씬 길어진다.

시간 왜곡 예시
1 타이머 설정
100ms 후 인터럽트
2 50ms 실행
게스트 실행 중
3 VMM 스위칭
다른 게스트로 1초간 전환
4 50ms 재개
타이머 만료
5 실제 경과
1.1초 (100ms 아님!)
게스트 유형영향
Time-sharing OS응답 시간 저하
Real-time OS심각한 문제 (deadline 못 맞춤)
Database타임아웃 오동작

해결책: VMM이 게스트용 클럭 보정 애플리케이션을 제공하여 clock drift를 보정한다.

VMM도 게스트 관리, I/O 관리, 라이브 마이그레이션 등을 위해 CPU 시간이 필요하다. 게스트 CPU 시간 일부를 “훔쳐” 사용한다 (CPU steal).

여러 팀이 회의실을 예약하여 사용하는 것에 비유할 수 있다. 각 팀은 예약된 시간에 회의실을 전용으로 사용한다고 느끼지만, 실제로는 시간대별로 공유한다.

구분내용
장점유연한 자원 할당 (오버커밋 가능), 물리 CPU보다 많은 VCPU 제공, 공정한 자원 분배
단점시간 왜곡으로 게스트 스케줄링 예측 불가, 실시간 워크로드에 부적합, 성능 변동성