文章目录
KVM-QEMU的vCPU调度算法与Xen Credit算法对比分析
1 vCPU的概念
QEMU/KVM为Guest OS提供了完整的硬件系统环境,Guest OS所占有的CPU实际上是vCPU。在KVM环境中,每个客户机是一个linux进程(qemu进程),而每一个vcpu在宿主机中是QEMU进程派生的普通线程。
而Guest应用线程调度到Guest VCPU的过程由Guest OS负责,全虚拟化的情况下,Guest OS的调度和在物理机下没有区别。
在系统底层CPU硬件中需要有硬件辅助虚拟化技术的支持,比如Intel VT 或者AMD-V。宿主机就运行在硬件之上,KVM内核部分是作为可动态加载内核模块运行在宿主机中的。其中一个模块是和硬件平台无关的实现虚拟化核心基础架构的kvm模块,另一个是硬件平台相关的kvm_intel模块。
KVM中的一个客户机是作为一个用户空间进程(qemu-kvm)运行。和其他普通的用户空间进程一样,由内核调度。多个客户机就是宿主机中的多个QEMU进程,而一个客户机的多个vCPU就是一个QEMU进程中的多个线程。
2 Linux内核的进程调度器
因为vCPU实际上是宿主机上的一个线程,所以vCPU的调度是依赖宿主机Linux内核中的CPU调度算法。Linux调度算法有三个比较著名:
- O(1) scheduler