Virtual machine monitors, especially when used for server consolidation, need to enforce a predefined sharing of resources among the running virtual machines. We propose a new mechanism for doing so that provides improved pacing in the face of heterogeneous allocations and priorities. This mechanism lends from token-bucket metering and from virtual-time scheduling, and prioritizes the different clients based on the divergence between their desired allocations and the actual consumptions. The ideas are demonstrated by implementations for the CPU and networking subsystems of the Linux kernel. Notably, both use exactly the same basic module; future plans include using it for disk I/O as well. Categories and Subject Descriptors C.2.3 [COMPUTERCOMMUNICATION NETWORKS]: Network Operations— Network management; D.4.1 [OPERATING SYSTEMS]: Process Management—Scheduling; K.6.2 [MANAGEMENT OF COMPUTING AND INFORMATION SYSTEMS]: Installation Management—Pricing and resource allocation General...
Tal Ben-Nun, Yoav Etsion, Dror G. Feitelson