首页> 中国专利> 一种缓存感知的多核处理器虚拟机故障隔离保证方法

一种缓存感知的多核处理器虚拟机故障隔离保证方法

摘要

本发明涉及计算机系统结构领域的系统级虚拟化技术及多核处理器上的虚拟机调度技术,公开了一种缓存感知的多核处理器虚拟机故障隔离保证方法,包括故障检测器对所有运行中的虚拟机进行状态异常监控和心跳信息检测,当检测到异常虚拟机时,隔离调度器首先记录该故障虚拟机在处理器核上的分配情况,当发现有其他虚拟机负载跟该故障虚拟机共享一块L2缓存时,隔离调度器把故障虚拟机迁移到一块独立缓存所对应的核上去,其他正常虚拟机根据缓存敏感性特征进行VM-core调度。本发明提出了故障虚拟机在多处理器上的动态隔离调度的方法,避免了其他正常虚拟机受到缓存的污染,降低故障虚拟机对正常虚拟机的运行影响,提升系统的整体隔离性。

著录项

  • 公开/公告号CN102053873A

    专利类型发明专利

  • 公开/公告日2011-05-11

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN201110008236.6

  • 发明设计人 吴朝晖;叶可江;姜晓红;何钦铭;

    申请日2011-01-13

  • 分类号G06F11/00(20060101);

  • 代理机构杭州裕阳专利事务所(普通合伙);

  • 代理人应圣义

  • 地址 310027 浙江省杭州市西湖区浙大路38号

  • 入库时间 2023-12-18 02:09:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-12-05

    授权

    授权

  • 2011-07-06

    实质审查的生效 IPC(主分类):G06F11/00 申请日:20110113

    实质审查的生效

  • 2011-05-11

    公开

    公开

说明书

技术领域

本发明涉及计算机系统结构领域的系统级虚拟化技术及多核处理器上的虚拟机调度技术,尤其涉及了一种缓存感知的多核处理器虚拟机故障隔离保证方法。

背景技术

系统级虚拟化技术近年来受到广泛关注,因其在提升系统资源的利用率,减少硬件开销,方便管理,增强系统可用性等方面有突出的优势。同时,虚拟化技术作为云计算的关键技术,实现了资源的动态可扩展性。另一方面,随着多核技术的发展,服务器的计算性能得到了快速的提升,在一个处理器之上集成的核数越来越多,丰富的物理资源使得服务器整合成为可能。但同时,把多个虚拟机负载整合到一个物理机上运行时会带来共享资源的竞争问题,以及虚拟机之间的干扰问题。如何充分利用服务器的系统资源,同时又保证多个应用程序之间的相互隔离成为一个挑战。目前成熟的虚拟化技术实现了虚拟机之间的较好的隔离性,同时运行的虚拟机之间受到的性能干扰情况在可接受的范围。

但是,随着应用程序变的越来越复杂,以及运行中受到外界威胁的几率不断增大,维护系统安全稳定运行变成一个突出问题。尤其在服务器整合场景中,虚拟机往往会因为自身程序复杂性问题出错,或者受到来自外界的攻击,从而变的异常,侵占大量系统资源,如CPU、cache资源等,进而影响到其他虚拟机的正常运行。在故障虚拟机存在的情况下,如何保证虚拟机间的故障隔离性,最小化故障虚拟机对其他正常虚拟机的影响是一个非常值得研究的问题。

在目前的多核处理器架构中,往往多个核共享一块缓存(Cache)资源,故障虚拟机的存在,尤其是缓存消耗密集的故障虚拟机的存在会导致缓存资源及处理器核资源的竞争变得非常激烈。目前的虚拟机管理器软件(如Xen/VMware/KVM)中,并没有专门针对故障虚拟机隔离性的特别优化,也没有针对多核处理器中缓存资源的特别优化。例如在著名的Xen开源虚拟机管理器软件上,缺省的调度算法是基于额度的Credit算法,它主要是考虑各个虚拟机负载的公平运行,并没有考虑当故障发生时如何提高故障隔离性的情况。在Credit调度算法中,每个CPU管理一个本地运行的VPCU队列,该队列根据VCPU的优先级进行排序。每个VCPU的优先级有两种状态:over和under。在调度的时候,调度程序会优先服务当前状态为under的VCPU。显然,该调度算法在处理故障虚拟机时存在一些不足,第一没有考虑多核处理器上的缓存因素,第二没有考虑当虚拟机发生故障的时候怎么通过调度来达到最大的故障隔离性。研究在故障虚拟机存在的情况下,通过缓存感知的多核处理器故障隔离调度策略的优化,可以有效提升系统的整体故障隔离性。

典型的多核处理器虚拟机故障隔离调度场景如附图1所示,在一个8核的服务器上一共整合了4种虚拟机负载,分别是Java服务器,文件服务器,数据库服务器和Web服务器。Domain0共分配4个VCPU,其他每个虚拟机服务器都分配了1个VCPU。当Java服务器受到炸弹程序攻击,导致侵占大量系统资源,如cache资源。因为Java服务器是对cache比较敏感的服务器,因此把它指派到核2时,占据了大部分的cache资源,导致Dom2(文件服务器)如果被指派到核3,就只能用剩余的少量cache资源,导致大量的cache miss,进而影响负载程序的性能。因此,把Dom2指派到核3是不恰当的,应迁移到其他的处理器核上,如核4,可以降低cache miss率,进而提高系统的故障隔离性。

发明内容

本发明针对现有技术中没有考虑多核处理器上的缓存因素,没有考虑当故障发生时如何提高系统故障隔离性的缺点,提供了一种最小化故障虚拟机对其他正常虚拟机的影响,提升系统的整体故障隔离性的一种缓存感知的多核处理器虚拟机故障隔离保证方法。

为了解决上述技术问题,本发明通过下述技术方案得以解决:

一种缓存感知的多核处理器虚拟机故障隔离保证方法,包括如下步骤:

步骤a:故障检测器对所有运行中的虚拟机进行状态异常监控,监控指标包括虚拟机的CPU利用率、内存使用率、磁盘I/O操作、网络发包情况,并且能够发送心跳信息检测虚拟机正常与否;对那些持续、大量消耗系统资源(资源利用率持续维持在100%左右),并且对故障检测器发送的心跳信号没有反应的虚拟机进行标记,并确定为故障虚拟机。为保证故障检测过程的独立进行,不受其他运行负载的干扰,故障检测器一般位于独立的第三方机器。故障检测器首先与目标物理机建立一个安全的Shell连接,然后通过远程调用的方式获得目标物理机上运行的虚拟机列表,再通过调用系统监控命令对远程虚拟机状态进行监控,同时远程虚拟机的运行状态数据反馈给故障检测器,根据各种资源的消耗情况可以确定故障的类型,例如是否对缓存敏感。同时,故障检测器定时发送心跳信号到每个虚拟机进行异常虚拟机的检测。

步骤b:当检测到故障虚拟机存在时,调度分析器首先记录该故障虚拟机的ID,查询该故障虚拟机的VCPU个数,判断该故障虚拟机遭受的故障类型,并生成一个三元组标记,即VM_ID、VCPU_Num、TAG,并发送给隔离调度器,其中VM_ID是故障虚拟机在所有虚拟机中的编号,VCPU_Num是分配给该故障虚拟机的VCPU个数,TAG是指该故障虚拟机遭受的故障类型,0表示缓存消耗密集的故障,一般指CPU和内存密集的故障,1表示缓存消耗量较少的故障,一般指I/O密集的故障,TAG指可以通过故障检测器对每个虚拟机资源消耗情况的分析获得;

步骤c:隔离调度器收到三元组标记后,首先根据TAG值判断故障类型,当发现该故障类型属于缓存消耗密集的故障,则需要进行故障隔离性调度。目前,系统发生的故障大部分都是CPU和内存密集的,继而占据大量缓存资源,影响其他正常虚拟机的运行。隔离调度器查询该故障虚拟机所属的VCPU在处理器核上的分配情况,当发现有其他虚拟机负载跟该故障虚拟机共享一块L2缓存或者该故障虚拟机所属的VCPU被分配到多个L2缓存上时,隔离调度器把故障虚拟机迁移到一块独立缓存对应的物理核上去,其他正常虚拟机再根据缓存敏感性特征进行VM-core调度;

具体分以下几个步骤:

(1)分配两个物理核给故障虚拟机,这两个核共享一块L2缓存,这样就把故障虚拟机隔离在一块L2缓存上,这块缓存不与其他正常虚拟机共享,从而避免缓存污染的问题。

(2)确定这两个物理核每个分配到的故障虚拟机的VCPU个数。故障虚拟机的VCPU个数通过接收到的三元组里的VCPU_Num确定,则这两个物理核分配到的VCPU个数分别为:和

(3)遍历其他正常的虚拟机,如果VMi负载对缓存敏感,则把VMi调度到其他不与故障虚拟机有共享缓存关系的其他核上,即剩余的物理核上;如果VMj负载不对缓存敏感,则按照虚拟机管理器(VMM)提供的缺省调度算法进行调度,即不通过特别指派过程指派到特定核上去。

(4)当遍历完成,算法即结束。

步骤d:按照所定义的故障隔离性计算公式,计算隔离调度器优化前后的故障隔离性;故障隔离性指的是,有故障虚拟机存在的情况下,正常虚拟机受到故障虚拟机的影响;它的形式化定义如下:

Ifault=Σi=1nωi(PiFault/PiNormal)

其中:Ifault表示故障隔离性;

表示第i个虚拟机负载在故障模式下,即某个虚拟机发生故障或受到攻击时所获得的负载性能数据;表示第i个虚拟机在正常模式下,即全部虚拟机都正常工作时所获得的负载性能数据;

ωi表示第i个虚拟机的权重系数,即该虚拟机负载在整个系统中的重要程度。

作为优选,所述的故障检测器能监控所有运行的虚拟机状态,并根据监控数据的分析确定故障的类型,通过发送心跳信号,检测并标示故障虚拟机。

作为优选,所述的隔离调度器是针对多核处理器,考虑缓存的竞争和污染情况及负载对缓存敏感特征进行VM-core调度,即缓存感知的隔离调度方法来提升系统整体的故障隔离性。

作为优选,所述的故障隔离性是故障虚拟机对其他正常虚拟机性能影响的一种量化表示,根据形式化定义可以进行量化计算。

本发明由于采用了以上技术方案,具有显著的技术效果:

本发明第一次实现了在多核处理器上,考虑缓存因素,对有故障虚拟机存在的情况下,进行缓存感知的故障隔离性优化方法,并且给出故障隔离性的量化方法。它的主要功能是保证在故障虚拟机存在的情况下,根据虚拟机负载对缓存的敏感特性,进行缓存感知的VM-Core多核处理器虚拟机故障隔离调度,从而减少了故障虚拟机对其他正常虚拟机的不良影响,提升系统整体的故障隔离性。

本发明还具有以下特点:

1、实时的故障虚拟机检测及故障类型智能判断:通过调用系统监控工具提供的接口对虚拟机的健康状态进行实时监控,包括虚拟机的CPU、内存、磁盘、网络等资源,根据资源使用情况判断故障类型。同时定时发送心跳信号,根据心跳信号的反馈情况,确定异常虚拟机。

2、半自动化的VM-core调度过程:在后台把VCPU到core的调度过程封装成一个调度程序,该调度程序根据接收到的故障虚拟机的三元组信息,即VM_ID、VCPU_Num、TAG,根据算法设定的步骤完成调度过程。

3、形象的故障隔离性比较:本发明通过对故障隔离性进行形式化定义,采集优化前后各虚拟机的性能数据,然后根据故障隔离性计算方法进行计算,直观的显示给用户,方便用户观察比较效果。

附图说明

图1是本发明的多核处理器虚拟机故障隔离调度示意图。

图2是本发明的模型图。

具体实施方式

下面结合附图1至图2与实施例对本发明作进一步详细描述:

实施例1

一种缓存感知的多核处理器虚拟机故障隔离保证方法,如图1至图2所示,包括如下步骤:

步骤a:故障检测器对所有运行中的虚拟机进行状态异常监控,监控指标包括虚拟机的CPU利用率、内存使用率、磁盘I/O操作、网络发包情况,并且发送心跳信息检测虚拟机正常与否;

步骤b:当检测到故障虚拟机存在时,调度分析器首先记录该故障虚拟机的ID,查询该故障虚拟机的VCPU个数,判断该故障虚拟机遭受的故障类型,并生成一个三元组标记,即VM_ID、VCPU_Num、TAG,并发送给隔离调度器,其中VM_ID是故障虚拟机在所有虚拟机中的编号,VCPU_Num是分配给该故障虚拟机的VCPU个数,TAG是指该故障虚拟机遭受的故障类型,0表示缓存消耗密集的故障,指CPU和内存密集的故障,1表示缓存消耗量较少的故障,指I/O密集的故障,TAG指可以通过故障检测器对每个虚拟机资源消耗情况的分析获得;

步骤c:隔离调度器收到三元组标记后,首先根据TAG值判断故障类型,当发现该故障类型属于缓存消耗密集的故障,隔离调度器查询该故障虚拟机所属的VCPU在处理器核上的分配情况,当发现有其他虚拟机负载跟该故障虚拟机共享一块L2缓存或者该故障虚拟机所属的VCPU被分配到多个L2缓存上时,隔离调度器把故障虚拟机迁移到一块独立缓存对应的物理核上去,其他正常虚拟机再根据缓存敏感性特征进行VM-core调度;

步骤d:按照所定义的故障隔离性计算公式,计算隔离调度器优化前后的故障隔离性;故障隔离性指的是,有故障虚拟机存在的情况下,正常虚拟机受到故障虚拟机的影响;它的形式化定义如下:

Ifault=Σi=1nωi(PiFault/PiNormal)

其中:Ifault表示故障隔离性;

表示第i个虚拟机负载在故障模式下,即某个虚拟机发生故障或受到攻击时所获得的负载性能数据;表示第i个虚拟机在正常模式下,即全部虚拟机都正常工作时所获得的负载性能数据;

ωi表示第i个虚拟机的权重系数,即该虚拟机负载在整个系统中的重要程度。

故障检测器能监控所有运行的虚拟机状态,并根据监控数据的分析确定故障的类型,通过发送心跳信号,检测并标示故障虚拟机。

隔离调度器是针对多核处理器,考虑缓存的竞争和污染情况及负载对缓存敏感特征进行VM-core调度,即缓存感知的隔离调度方法来提升系统整体的故障隔离性。

故障隔离性是故障虚拟机对其他正常虚拟机性能影响的一种量化表示,根据形式化定义可以进行量化计算。

本发明已在Xen虚拟化平台上实现。由于Xen提供一套完善的管理虚拟机的工具,因此可以很方便调用其管理接口,这里,我们主要使用了Xen提供的xm/xenoprof/xentop等管理及监控接口。其中DomainO和DomainU用的都是Ubuntu 8.10,内核版本为2.6.27。采用的物理机为Dell 2900 PowerEdge服务器,配置为双CPU,共8核,6GB内存,6MB二级缓存。每个虚拟机分配2个VCPU和1GB内存。

为模拟典型的服务器整合场景,创建了4个虚拟机,分别选用SPECjbb2005作为Java服务器,IOzone作为文件服务器,Sysbench作为数据库服务器,Webbench作为Web服务器。

为模拟故障虚拟机,用C语言写了一个fork炸弹程序来攻击某个虚拟机,遭受攻击的虚拟机即为故障虚拟机,它会不断占据和消耗大量系统资源。

故障检测器通过调用Xen监控接口xentop及Linux标准状态监控接口实现对运行中的虚拟机状态进行监控,监控指标包括虚拟机的CPU利用率、内存使用率、磁盘I/O操作、网络发包情况。同时,故障检测器每隔一段时间对每个虚拟机发送一个心跳信号来确定虚拟机是否异常。对那些持续、大量消耗系统资源(资源利用率维持在100%左右),并且对故障检测器发送的心跳信号没有反应的异常虚拟机进行标记,确定为故障虚拟机。

隔离调度器收到三元组标记后,首先根据TAG值判断故障类型,当发现该故障类型属于缓存消耗密集的故障,则需要进行隔离性调度。隔离调度器查询该故障虚拟机所属的VCPU在处理器核上的分配情况,当发现有其他虚拟机负载跟该故障虚拟机共享一块L2缓存或者该故障虚拟机所属的VCPU被分配到多个L2缓存上时,隔离调度器把故障虚拟机迁移到一块独立缓存对应的物理核上去,其他正常虚拟机根据缓存的敏感特性进行VM-core调度。

故障隔离性的量化按以下式子来计算:

Ifault=Σi=1nωi(PiFault/PiNormal)

其中:Ifault分别表示故障隔离性;表示第i个虚拟机负载在故障模式下(即某个虚拟机发生故障或受到攻击)的性能数据。表示第i个虚拟机在正常模式下(即全部虚拟机都正常工作)的负载性能数据;ωi表示第i个虚拟机的权重系数,即该虚拟机负载在整个系统中的重要程度,在本例中为了简化计算,假设每个虚拟机的权重相同。

根据故障隔离性的定义公式进行隔离性计算,比较采用本发明方法前后的隔离性。

采用本发明方法前后的虚拟机负载原始性能数据如表-1所示,case0是一个对比实验,表示故障虚拟机存在情况下,Xen的缺省调度,case1是根据缓存感知的虚拟机故障隔离调度方法进行调度后的结果,case2和case3是另两种调度方法的结果。可以看到,引入炸弹程序后Java服务器本身资源被炸弹程序抢占而无结果输出,即为0,在case1中File服务器性能和Web服务器性能比缺省调度情况下性能要好,Database服务器略微下降。表-2计算出了采用缓存感知调度方法前后的隔离性,可以看出,采用缓存感知调度方法后的故障隔离性优于其他调度方法,相比于缺省的调度方法(Case0)可以提升19.52%。

表-1 缓存感知调度方法前后虚拟机性能比较

注:Case0:故障虚拟机存在情况下,Xen缺省调度;Case1:故障虚拟机指派到核0,核1;Case2:故障虚拟机指派到核0,核2;Case3:故障虚拟机指派到核0,核4

表-2 缓存感知调度方法前后隔离性比较

  调度方式  Case0  Case1  Case2  Case3  隔离性  0.81825  0.97794  0.90228  0.81897

注:Case0:故障虚拟机存在情况下,Xen缺省调度;Case1:故障虚拟机指派到核0,核1;Case2:故障虚拟机指派到核0,核2;Case3:故障虚拟机指派到核0,核4

本发明第一次实现了在多核处理器上,考虑缓存因素,对有故障虚拟机存在的情况下,进行缓存感知的故障隔离性优化方法,并且给出故障隔离性的量化方法。它的主要功能是保证在故障虚拟机存在的情况下,根据虚拟机负载对缓存的敏感特性,进行缓存感知的VM-Core多核处理器虚拟机故障隔离调度,从而减少了故障虚拟机对其他正常虚拟机的不良影响,提升系统整体的隔离性。

总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号