Mitigating Excessive Pause-Loop-Exiting in VM-Agnostic KVM
summary
Identifies excessive Pause-Loop-Exiting (PLE) caused by continuous spinning—over 100 back-to-back PLEs make up >20% of events in some benchmarks—and implements two targeted mitigations: strict boost (better candidate selection: boost IPI receivers in user mode; avoid boosting halted vCPUs) and booster mitigation (temporarily lower local vCPU priority so the scheduler accepts hypervisor boost requests). Changes land in Linux KVM 5.6.0 as 41 lines of code, tested on two 8-vCPU VMs on an 8-core server, cutting PLEs and improving runtime up to 40% and throughput up to 75%.
AI-written summary · about
chapters (19)
- 0:00Intro
- 0:37Oversubscribing virtual CPUs
- 1:04Critical section on PCPU
- 2:47Improving guest performance by solving excessive vCPU spinning
- 3:59KVM approach with hardware feature
- 4:29KVM's strategy to suppress PLE events
- 5:21What happens in the worst case!
- 6:28Continuous PLE events are NOT rare
- 7:56Why PLE events occur continuously?
- 9:01How to select candidate vCPU
- 11:03Mitigation: Strict Boost
- 11:36Problem: Scheduler Mismatch
- 12:16Case Study: Scheduler Mismatch
- 14:00Mitigation: Debooster
- 14:34Implementation
- 14:50Experimental Setup
- 15:02Evaluation: Reduction of PLE Occurrences
- 15:29Evaluation System Fairness
- 15:48Conclusion
related talks
32mNotes on Taking KVM-on-KVM Nested Virtualization for a Spin
20mKVM-devirt: Extending KVM to a Zero-Overhead Partition Hypervisor
27mEvaluate Implementation Options of KVM-based Type1 (or 1.5) Hypervisor
50mProtected KVM on Arm64: A Technical Deep Dive
20mHypervisor-managed Linear Address Translation
32mA journey through supporting VMs with dedicated CPUs on Kubernetes
27meBPF-based Extensible Paravirtualization
10mDemo: Nested Virtualization Acceleration
