一种虚拟CPU调度方法技术

技术编号:5489916 阅读:329 留言:0更新日期:2012-04-11 18:40
一种虚拟CPU调度方法,属于计算系统虚拟化技术领域,解决锁持有者抢占问题,以提高多处理机系统中虚拟机的性能。本发明专利技术用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,监测步骤实时监控各虚拟机操作系统中的自旋锁操作命令;信息收集步骤提取监测步骤所得到的自旋锁数目,并将其构成自旋锁计数信息;调度步骤根据从信息收集步骤提取的自旋锁计数信息,采用公平高效的调度方法对VCPU进行调度。与现有技术相比,本发明专利技术对是否处于可调度状态的检测更为精确,提高了PCPU的利用率,调度策略具有灵活性与可扩展性,兼具公平性,有效解决了锁持有者抢占问题,极大地提高了多处理机系统中虚拟机的性能。

【技术实现步骤摘要】

本专利技术属于计算系统虚拟化
,具体涉及一种虚拟CPU调度方法,用于多 处理机虚拟化环境。
技术介绍
近年来,随着计算体系结构和软硬件技术的飞速发展,计算系统虚拟化技术也日 益成熟,并成为学术界和工业界的热门技术。虚拟化技术使得计算机软件可以在一个虚拟 平台上而不是真实的物理机上运行,应用程序在各自独立的空间运行而互不影响,使得一 个平台可以同时运行多个操作系统,扩大了硬件容量,简化了软件重新配置的过程,从而显 著提高了计算机的利用率、工作效率和安全性、灵活性。多处理机系统为虚拟化环境带来了很大的优势。多处理机系统包括多个物理中央 处理器(PCPU),多处理机虚拟化环境包括虚拟机监视器以及一台或多台虚拟机(指通过软 件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统),每 台虚拟机上运行一个客户操作系统(Guest 0S),每台虚拟机又包含一个或多个虚拟中央处 理器(VCPU);虚拟机监视器将虚拟机上的客户操作系统映射到某些VCPU上(VCPU的数目 可以多于PCPU的数目),同时,将VCPU调度到PCPU上运行。VCPU能够在不同PCPU上运行 而无需告知Guest OS。虚拟机监视器采用灵活的分配策略,以响应不断变化的负载情况。 这使得虚拟机可以从一台机器迁移到与该机器结构不同的机器上。虚拟机监视器上具有共享内存页,它是一种特殊的数据结构,能够同时被虚拟机 监视器和虚拟机访问;VCPU被调度时,虚拟机监视器的调度模块会给当前被选择运行的 VCPU分配一个运行时间,称为时间片。虚拟机监视器能够将PCPU分发给Guest OS,以支持灵活的分配策略,并支持重 新分配PCPU来响应不断变化的负载情况。分配策略支持Guest OS的并发操作,它也能将 Guest OS映射到VCPU上(VCPU的数目可以多于PCPU),VCPU能够在PCPU之间迁移而无需 通知Guest OS。这使得虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个 完全隔离环境中的完整计算机系统)可以从一台机器迁移到与该机器结构不同的机器上。多处理机系统中引入虚拟化,会带来很大的优势,但同时也引发了一些问题,锁持 有者抢占问题就是其中之一。锁,是操作系统中常用的一种机制,用来保护临界区(即访问 一次仅允许一个线程使用的共享资源的代码段),使其在任意时刻只能被某一个线程访问。 线程是指在进程(即处于执行期的程序)中活动的对象。锁有多种多样的形式,而多处理 机操作系统最常用的一种锁是自旋锁。自旋锁最多只能被一个可执行线程持有。如果一个 执行线程试图获得一个已经被持有的自旋锁,那么该线程就会一直进行忙循环(自旋),直 到这个锁被持有它的线程释放为止。从设计上来说,自旋锁只能持有很短的时间。但是如 果一个虚拟机的某个VCPU被抢占的时候持有锁的话,这一点就不再成立一这个虚拟机的 其他VCPU仍有可能运行在不同的CPU上,并等待着这个锁的释放,这样就导致了锁持有时 间延长,大量处理器周期被浪费,极大地影响了性能和可扩展性。
技术实现思路
本专利技术提供一种虚拟CPU的调度方法,解决锁持有者抢占问题,以提高多处理机 系统中虚拟机的性能。本专利技术的一种虚拟CPU调度方法,用于多处理机虚拟化环境,包括监测步骤,信息 收集步骤和调度步骤,其特征在于一 .监测步骤实时监控各虚拟机的Linux操作系统中的自旋锁操作命令,针对每台虚拟机的每 个VCPU都设置一个自旋锁计数器,在Linux操作系统每个自旋锁加锁语句处,判断是否成 功加锁,是则将该自旋锁加锁语句所对应的VCPU的自旋锁计数器加1,否则不进行操作;在 每个自旋锁解锁语句处,将该自旋锁解锁语句所对应的VCPU的自旋锁计数器减1 ;所述自 旋锁计数器加减操作均为原子操作,所述原子操作,是指不会被线程调度机制打断的操作, 这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换(context switch);二.信息收集步骤提取监测步骤所得到的每台虚拟机上各个VCPU上的自旋锁数目,并将其与每台 虚拟机对应,构成每台虚拟机自旋锁计数信息;将所述每台虚拟机自旋锁计数信息写入虚 拟机监视器共享内存页;三.调度步骤运行于各个PCPU上,虚拟机监视器按照周期T,循环执行如下子步 骤(3. 1)计算窗口启动时间& Sn=En-ZiT11O^-^,式中,&为本轮调度窗口启动时间,4是本轮调度对各个 VCPU所分配时间片的结束时刻,Pi为第i轮调度抢占点,Si为第i轮调度窗口启动时间;(3. 2)在&时刻启动窗口,窗口长度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)。所述的虚拟CPU调度方法,其特征在于所述信息收集步骤中,使用读写锁对共享内存页中的信息进行保护。本专利技术针对当前多处理机虚拟化环境下调度方法所存在的锁持有者抢占问题,收 集了自旋锁计数信息,通过调度步骤进行调度决策。与现有的调度方案相比,本专利技术主要有 如下特点(1)准确性本专利技术采用动态方式直接对自旋锁操作进行计数,为调度步骤提供 相关信息,与采用其他的间接方式来判断当前VCPU上是否可能持有自旋锁的方式相比,提 高了调度算法的准确性与精度。(2)灵活性与可扩展性锁持有抢占问题也可以通过gang调度来避免。在gang调 度中,同一虚拟机上所有的VCPU都以一个相等时间片被同时调度,不管VCPU上是否有任务在执行,gang调度都给它时间片,这就导致了 PCPU利用率低下。此外,gang调度排除了其 他调度算法的使用,灵活性与可扩展性不强。本专利技术不需要同一虚拟机上所有的VCPU都被 同时调度,相比而言,PCPU利用率高,并可以与虚拟机监视器中常用的调度算法相结合,具 有较高的灵活性与可扩展性。(3)高效性本专利技术采用开销较小的计数方法和通信手段,来避免锁持有者抢占 问题,极大地提高了多处理机上虚拟机的性能。(4)公平性本专利技术采用的调度方法,考虑到了 VCPU调度的公平性,保证了调度时 各个VCPU的运行时间与原本应分配给它们的运行时间相一致。附图说明图1为本方法的整体架构示意图;图2为监测步骤流程示意图;图3为共享内存页的原理示意图;图4为调度步骤的流程示意图;图5为调度步骤中的调度算法原理示意图。具体实施例方式下面结合附图对本专利技术进一步说明。如图1所示,本专利技术包括监测步骤,信息收集步骤和调度步骤。图2为监测步骤的流程示意图。如图3所示,信息收集步骤通过共享内存页完成虚拟机监视器和虚拟机的数据交 互。考虑到并发读写的同步问题,使用读写锁对共享内存页中的信息进行保护,即,允许多 个内核线程同时读取共享内存页中的信息,但是不允许在读操作的同时另一个线程对其进 行写操作,或在写操作的同时另一个线程对其进行读操作。调度步骤的流程如图4所示。如图5本文档来自技高网
...

【技术保护点】
一种虚拟CPU调度方法,用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,其特征在于:一.监测步骤:实时监控各虚拟机的Linux操作系统中的自旋锁操作命令,针对每台虚拟机的每个VCPU都设置一个自旋锁计数器,在Linux操作系统每个自旋锁加锁语句处,判断是否成功加锁,是则将该自旋锁加锁语句所对应的VCPU的自旋锁计数器加1,否则不进行操作;在每个自旋锁解锁语句处,将该自旋锁解锁语句所对应的VCPU的自旋锁计数器减1;所述自旋锁计数器加减操作均为原子操作,所述原子操作,是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换(context switch);二.信息收集步骤:提取监测步骤所得到的每台虚拟机上各个VCPU上的自旋锁数目,并将其与每台虚拟机对应,构成每台虚拟机自旋锁计数信息;将所述每台虚拟机自旋锁计数信息写入虚拟机监视器共享内存页;三.调度步骤:运行于各个PCPU上,虚拟机监视器按照周期T,循环执行如下子步骤:(3.1)计算窗口启动时间S↓[n]:S↓[n]=E↓[n]-∑↓[i=1]↑[n-1](P↓[i]-S↓[i]),式中,S↓[n]为本轮调度窗口启动时间,E↓[n]是本轮调度对各个VCPU所分配时间片的结束时刻,P↓[i]为第i轮调度抢占点,S↓[i]为第i轮调度窗口启动时间;(3.2)在S↓[n]时刻启动窗口,窗口长度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)。...

【技术特征摘要】

【专利技术属性】
技术研发人员:金海吴松石宣化耿玮
申请(专利权)人:华中科技大学
类型:发明
国别省市:83[中国|武汉]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1