发明名称 一种虚拟CPU调度方法
摘要 一种虚拟CPU调度方法,属于计算系统虚拟化技术领域,解决锁持有者抢占问题,以提高多处理机系统中虚拟机的性能。本发明用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,监测步骤实时监控各虚拟机操作系统中的自旋锁操作命令;信息收集步骤提取监测步骤所得到的自旋锁数目,并将其构成自旋锁计数信息;调度步骤根据从信息收集步骤提取的自旋锁计数信息,采用公平高效的调度方法对VCPU进行调度。与现有技术相比,本发明对是否处于可调度状态的检测更为精确,提高了PCPU的利用率,调度策略具有灵活性与可扩展性,兼具公平性,有效解决了锁持有者抢占问题,极大地提高了多处理机系统中虚拟机的性能。
申请公布号 CN102053858A 申请公布日期 2011.05.11
申请号 CN201010607544.6 申请日期 2010.12.28
申请人 华中科技大学 发明人 金海;吴松;石宣化;耿玮
分类号 G06F9/455(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 方放
主权项 1.一种虚拟CPU调度方法,用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,其特征在于:一.监测步骤:实时监控各虚拟机的Linux操作系统中的自旋锁操作命令,针对每台虚拟机的每个VCPU都设置一个自旋锁计数器,在Linux操作系统每个自旋锁加锁语句处,判断是否成功加锁,是则将该自旋锁加锁语句所对应的VCPU的自旋锁计数器加1,否则不进行操作;在每个自旋锁解锁语句处,将该自旋锁解锁语句所对应的VCPU的自旋锁计数器减1;所述自旋锁计数器加减操作均为原子操作,所述原子操作,是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换(context switch);二.信息收集步骤:提取监测步骤所得到的每台虚拟机上各个VCPU上的自旋锁数目,并将其与每台虚拟机对应,构成每台虚拟机自旋锁计数信息;将所述每台虚拟机自旋锁计数信息写入虚拟机监视器共享内存页;三.调度步骤:运行于各个PCPU上,虚拟机监视器按照周期T,循环执行如下子步骤:(3.1)计算窗口启动时间S<sub>n</sub>:<img file="FDA0000040961490000011.GIF" wi="478" he="74" />式中,S<sub>n</sub>为本轮调度窗口启动时间,E<sub>n</sub>是本轮调度对各个VCPU所分配时间片的结束时刻,P<sub>i</sub>为第i轮调度抢占点,S<sub>i</sub>为第i轮调度窗口启动时间;(3.2)在S<sub>n</sub>时刻启动窗口,窗口长度w=0.5~1.5ms;(3.3)从虚拟机监视器共享内存页提取当前正在运行的VCPU上的自旋锁数目,并据其判断当前正在运行的VCPU是否持有锁,是则转子步骤(3.5);否则转子步骤(3.4);(3.4)调度该VCPU,转子步骤(3.6);(3.5)检查窗口是否已经到达结束点,是则转子步骤(3.4);否则转子步骤(3.3);(3.6)结束本轮调度,当周期T届满时,转子步骤(3.1)。
地址 430074 湖北省武汉市洪山区珞喻路1037号