虚拟机中虚拟双核同步调度的尝试
康华 :主要从事 Linux 操作系统内核、虚拟机、Linux 技术标准、计算机安全、软件测试等领域的研究与开发工作,曾就职 MII-HP 软件实验室 、瞬联软件公司/MOTOROLA,现就职于Lenovo研究院 。其所合写的Linux专栏见http://www.csdn.net/subject/linux/。 如果需要可以联系通过 [email protected] (MSN)联系我.
摘要 在真实环境下多核物理存在,每个核都能够做到随时在线(活跃)。而在虚拟环境下VMM需要为每个运行的Guest OS都模拟出各自使用的虚拟核(一个或多个),这些虚拟核在真实核上按照时间片方式运行(类似于Native OS环境下的进程)。如果Guest OS需要支持多核,那么VMM就需要为Guest OS模拟出多个虚拟核。本文就讲述Guest Os看到的虚拟多核是否需要同步运行,以及尝试如何同步运行多虚拟核。
背景介绍
我们的研究对象是Xen架构下的虚拟多核同步,虚拟核(VCPU)可以看作是真实CPU的调度对象,这点和操作系统内的进程调度很相似。虚拟核对象(和进程描述符一样是一个管理结构)其中包含了:1 CPU信息,诸如寄存器,GDT地址等;2 调度信息,权重等;3运行信息, 所处的物理CPU,所属domain信息等 4 运行状态信息。
目前Xen的调度方法是以虚拟核为单位独立调度,而并非按照domain(即,Guest OS)为单位进行调度。也就是说任何一个VCPU作为任务都可在任何一个真实CPU上运行(Guest OS 只要看到有活跃的VCPU就可以运行)。这样以VCPU为单位调度的好处是整个虚拟系统的吞吐量大,因为每个VCPU可以根据真实CPU的忙闲选择其上运行,可以让系统利