基于用户空闲进程的提高虚拟机性能与可伸缩性的方法

文档序号:6339135阅读:215来源:国知局
专利名称:基于用户空闲进程的提高虚拟机性能与可伸缩性的方法
技术领域
本发明属于计 算机操作系统和虚拟化技术领域,具体为一种提高客户虚拟机在 多核环境下性能以及可伸缩性的方法。
背景技术
多核技术的出现给操作系统的开发带来了新的机遇和挑战。随着处理器处理核 心数目的增多,操作系统的整体性能能否随着硬件计算能力的增强而增强成为当今计算 机操作系统发展的一个重要问题,即操作系统的可伸缩性问题。现有操作系统普遍存在 着在多核环境下可伸缩性差的现象,即当物理处理核心数目增加到一定数目时,操作系 统的整体性能的提升开始放缓,甚至产生下降的现象。现在,双核和四核处理器已经被 普遍应用在服务器,桌面乃至嵌入式平台。而在可预见的将来,我们将看到上百个处理 器核(CPUcore)被封装在一个芯片上。因而随着多核技术的发展,操作系统在多核环 境下的可伸缩性会变得越来越重要。系统虚拟化是一种将一台物理计算机系统虚拟化为一台或多台虚拟计算机系统 (简称虚拟机,Virtual Machine)的技术。作为一种现代操作系统技术,虚拟化技术
近年来已经在产业界被广泛运用,例如服务器整合(server consolidation)、多租户云 (multi-tenant cloud) >专署虚拟化设备(virtual appliances)等等。而在系统虚拟环境
下,由于系统增加了虚拟化层,客户虚拟机的性能及可伸缩性会受到严重的影响。具体 表现为在虚拟环境下客户虚拟机操作系统的性能及可伸缩性相对于运行在物理机器上 的操作系统会产生非常严重的下降。本发明主要用于解决多核环境下由于虚拟化层导致的客户虚拟机的性能及可伸 缩性严重的下降问题。造成客户虚拟机性能及可伸缩性严重下降的主要原因是操作系统 的空闲线程(idle thread)和虚拟机监控器的空闲虚拟机(idle Virtual Machine)的协作问
题。(空闲线程主要用于当操作系统在某个处理器核心上进入空闲状态时,占用处理器 核心并使之进入休眠状态。空闲虚拟机在虚拟机监控器中的角色类同于空闲线程在操作 系统中的角色。)造成该协作问题的主要原因是客户虚拟机的空闲线程无法直接使用处 理器核心休眠指令(该指令的作用在于使处理器核心进入休眠状态以节约能耗),而必 须切换至虚拟机监控器并调度到空闲虚拟机由空闲虚拟机来执行处理器核心休眠指令。 此外唤醒一个空闲虚拟机也需要切换至虚拟机监控器。当客户虚拟机在执行多线程任务时,虚拟机操作系统内部往往会产生对资源的 竞争,一些虚拟处理器核心上的线程不得不进入空闲以等待其他虚拟处理器核心上的线 程释放其所需的资源。这会导致某些处理器核心进入空闲状态,并诱发操作系统的空闲 线程和虚拟机监控器的空闲虚拟机的协作问题。额外的客户虚拟机和虚拟机监控器的切 换会增加等待线程的等待时间从而导致执行在客户虚拟机上的多线程任务的执行时间变 长,使得客户虚拟机的整体性能及可伸缩性下降。

发明内容
本发明的目的在 于提出一种适用于客户虚拟机的轻量级用户态空闲后台进程的 设计与使用方式,以提高多核环境下客户虚拟机的性能和伸缩性。本发明通过使用适用于客户虚拟机的轻量级用户态空闲后台进程,来解决操作 系统的空闲线程和虚拟机监控器的空闲虚拟机的协作问题。图1描述了在虚拟处理器核 心处于空闲状态时,客户虚拟机的执行行为,即空闲线程和虚拟机监控器的空闲虚拟机 的协作的过程。虚线部分表示了在该协作过程中增加的客户虚拟机和虚拟机监控器的切 换所导致的额外的处理器资源的开销。通过该发明,虚线部分的开销将被完全消除。该发明的主要原理为使用一个轻量级用户态空闲后台进程,在虚拟处理器核 心上没有负载时,占用虚拟处理器核心以避免客户虚拟机切换至虚拟机监控器,从而避 免由于额外的客户虚拟机和虚拟机监控器的切换而带来的开销。本发明方法的具体实现过程为
1)在客户虚拟机中执行一个低优先级的用户态空闲后台进程,该进程会在每个虚拟 处理器核心上部署一个空闲后台子线程。2)空闲后台子线程在虚拟处理器核心上有负载时不会得到执行。这样实现使 得在虚拟处理器核心上有用户线程负载时,空闲后台子线程不会对用户线程造成任何影 响。3)在虚拟处理器核心上没有负载时,空闲后台子线程执行占用虚拟处理器核 心。这样实现使得在虚拟处理器核心上没有负载时,不会调度到空闲线程,因此不会切 换至虚拟机监控器,从而避免了由于额外的客户虚拟机和虚拟机监控器的切换而带来的 开销。图2描述了使用了空闲进程后,虚拟处理器核心处于空闲状态时,客户虚拟机 的执行行为
1)当客户虚拟机中的一个处理器核心处于空闲状态时,该处理器核心直接从用户线 程切换到后台空闲线程;
2)当客户虚拟机的处理器核心有用户线程需要执行时,该处理器核直接从后台空闲 线程切换回用户线程。因此,由额外的客户虚拟机和虚拟机监控器的切换所导致的处理器资源的开销 已被完全消除。此外,本发明的实现还具有一定的灵活性。当用户态负载不会造成客户虚拟 机操作系统内部对资源的竞争时,可以不启用该空闲后台进程,从而完全避免该进程可 能导致的额外的资源开销。当用户态负载会造成客户虚拟机操作系统内部对资源的竞争 时,启用该空闲后台进程,从而避免发生客户虚拟机的虚拟处理器核心在空闲时切换至 虚拟机监控器并执行空闲虚拟机的事件,以消除由于额外的客户虚拟机和虚拟机监控器 的切换而带来的开销。本书面说明可使该技术领域具有普通技能的人能够使用含有与权利要求所列要 素近似的可替代要素的实施方案。因此,这项发明的范围包括与权利要求的字面意思 完全相同的方法,还包括其他与权利要求的字面意思没有实质性区别的方法。虽然在这 里只描述和说明了部分特征和实施方案,但相关技术的基本方法可以进行许多修改和变化。所附权利要求将涵盖所有这些修改和变化。


图1为虚拟处理器核心处于空闲状态时,客户虚拟机的执行示意图。图2为使用空闲进程后,虚拟处理器核心处于空闲状态时,客户虚拟机的执行
示意图。图3描述了在虚拟环境下,多个线程竞争同一个旗语(semaphore)的过程以及 由此导致操作系统的空闲线程和虚拟机监控器的空闲虚拟机的协作问题的过程。图4描述了在多核虚拟机上部署轻量级用户态空闲后台进程的方法。图5描述了使用了用户态空闲后台进程后,虚拟环境下多个线程竞争同一个旗 语的过程。
具体实施例方式
下面结合实施例对本发明进行进一步说明。图3描述了在虚拟环境下,多个线程竞争同一个旗语(semaphore)的过程以及 由此导致操作系统的空闲线程和虚拟机监控器的空闲虚拟机的协作问题的过程。在操作 系统中,当一个线程无法获得其所需要的旗语时(步骤1,2),它会被从当前处理器核 心的可执行队列中调度走,并加入到该旗语的等待队列(步骤3)。如果当时该处理器核 心的可执行队列为空,空闲进程就会占据该处理器核心,并切换至虚拟机监控器并调度 到空闲虚拟机(步骤4)。当旗语的拥有者释放该旗语时,旗语队列中的第一个等待线程 会被唤醒并得到执行(步骤5,6,7,8)。由于虚拟机监控器的缘故,该唤醒过程不得 不执行额外的步骤6和7,从而浪费额外的时间。与此同时,在旗语等待队列中的其它等 待线程的等待时间也会因为额外的步骤而延长,从而导致整个系统的性能以及可伸缩性 下降。本发明通过使用适用于客户虚拟机的轻量级用户态空闲后台进程,来解决上述 问题。图4描述了在多核虚拟机上部署轻量级用户态空闲后台进程的方法在客户虚拟机 中执行一个低优先级的用户态空闲后台进程,该进程会在每个虚拟处理器核心上部署一 个空闲后台子线程。在引入了轻量级用户态空闲后台进程后,由多个线程竞争同一个旗语而导致的 操作系统的空闲线程和虚拟机监控器的空闲虚拟机的协作问题会得以解决。图5描述了 使用了用户态空闲后台进程后,虚拟环境下多个线程竞争同一个旗语的过程。由于用户 态空闲后台进程的存在,当虚拟处理器核心进入空闲状态时,用户态空闲后台进程会占 用 虚拟处理器核心,从而减少了图3中额外的执行步骤6和7。因而被唤醒的旗语等待线 程不再会浪费时间在虚拟机监控器中。与此同时,旗语等待队列中的其它等待线程也不 会增加额外的等待时间。系统的整体性能和可伸缩性得到了提高。
权利要求
1.一种基于用户空闲进程的提高虚拟机性能与可伸缩性的方法,其特征在于在客 户虚拟机中每个虚拟处理器核心运行一个轻量级用户态空闲后台线程,以避免客户虚拟 机在空闲时切换至虚拟机监控器的空闲虚拟机执行。
2.根据权利要求1所述的方法,其特征在于具体实现过程为在客户虚拟机中执行一个低优先级的用户态空闲后台进程,该进程在每个虚拟处理 器核心上部署一个空闲后台子线程;在虚拟处理器核心上有负载时,所述空闲后台子线程不运行;在虚拟处理器核心上没有负载时,所述空闲后台子线程执行占用虚拟处理器核心。
3.根据权利要求1或2所述的方法,其特征在于在虚拟处理器核心有负载时,空闲后 台进程不对负载造成影响。
4.根据权利要求1或2所述的方法,其特征在于当虚拟处理器核心在空闲时,空闲 后台子线程执行占用虚拟处理器核心,以避免发生客户虚拟机切换至虚拟机监控器并执 行空闲虚拟机的事件,以减少由于过多的客户虚拟机和虚拟机监控器的切换而带来的开 销。
5.根据权利要求1或2所述的方法,其特征在于使用空闲进程后,虚拟处理器核心处 于空闲状态时,客户虚拟机的执行行为1)当客户虚拟机中的一个处理器核心处于空闲状态时,该处理器核心直接从用户线 程切换到后台空闲线程;2)当客户虚拟机的处理器核心有用户线程需要执行时,该处理器核直接从后台空闲 线程切换回用户线程。
全文摘要
本发明属于计算机操作系统和虚拟化技术领域,具体为一种利用用户态空闲后台线程来提高多核环境下客户虚拟机的性能以及可伸缩性的方法。本发明用于解决多核环境下由于操作系统的空闲线程和虚拟机监控器的空闲虚拟机的协作问题所造成的客户虚拟机性能和可伸缩性下降的问题。具体方法为在客户虚拟机的每个虚拟处理器核心运行一个低优先级的空闲线程,以避免客户虚拟机的虚拟处理器核心在空闲时切换至虚拟机监控器并执行空闲虚拟机,从而消除了由于额外的客户虚拟机和虚拟机监控器的切换而带来的开销。本发明实现了适用于客户虚拟机的轻量级用户态空闲后台进程,大大提高了多核环境下客户虚拟机的性能和伸缩性。
文档编号G06F9/46GK102012834SQ20101059515
公开日2011年4月13日 申请日期2010年12月20日 优先权日2010年12月20日
发明者宋翔, 臧斌宇, 陈海波 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1