一种基于共享I/O虚拟化环境的vCPU调度方法

文档序号:8922467阅读:389来源:国知局
一种基于共享I/O虚拟化环境的vCPU调度方法
【技术领域】
[0001]本发明涉及云计算领域,具体地说,本发明涉及一种基于共享I/O虚拟化环境的vCPU调度方法。
【背景技术】
[0002]近年来,云计算技术的得到了快速的发展。Amazon、Google、阿里巴巴等公司都搭建了公有的云计算平台,来为用户提供公共的云计算服务。与此同时,作为搭建云计算平台的主要方式,虚拟化技术得到不断成熟和完善。云计算服务提供商通过虚拟化技术来对物理的资源进行虚拟化,从而实现资源的共享与隔离。对计算资源、网络资源和存储资源的虚拟化是构建云计算平台的基础。其中,对计算资源的虚拟化是核心。Hypervisor是实现计算资源虚拟化的主要方法,其具体实现包括:Xen,KVM, Hyper-v等。其中,Xen是主流的开源Hypervisor,被国内外云计算服务提供商广泛使用。
[0003]vCPU是虚拟化平台(例如Xen)为虚拟机提供的虚拟CPU。只有当虚拟机的vCPU被调度到物理CPU上时,虚拟机才能运行。vCPU调度是指Xen把从属于虚拟机的vCPU调度到物理CPU上进行运行的过程。每一个物理CPU核都有一个与其对应的vCPU调度队列,vCPU任务在队列中排队等待调度。另一方面,Xen系统属于一种共享I/O的虚拟化环境,图1示出了 Xen虚拟机的联网模型示意图,如图1所示,Xen系统中采用前后端分离的网络驱动模型来为虚拟机提供网络服务。这种模型下,虚拟机的网络设备驱动被分为前端驱动及后端驱动两部分。前端驱动位于虚拟机内部,后端驱动位于Domain O (零域)内。前、后端设备驱动通过共享I/O环的方式交换控制信息,通过共享数据缓冲区(即共享内存)交换实际收发的数据,通过共享内存中的事件通道交换异步事件消息。后端驱动对应的虚拟接口设备通过虚拟网桥与物理网络设备相连接,为虚拟机提供与物理网络的连通性。另外,图1中xenbrO表示Domain O内的虚拟网桥设备,ethO表示Domain O内的物理网络设备接口,vif表示虚拟机虚拟网络设备的后端设备,NIC表示物理网卡设备,vm表示虚拟机,request表示前端驱动的接收或者发送请求,response表示后端驱动对接收或者发送请求的响应。
[0004]在这种结构下,虚拟机对网络相关任务的处理需要通过其vCPU的运行来执行,而现有的Xen的vCPU调度方案并不能保证每个虚拟机vCPU在任何时间都在运行,这往往会导致具有时间敏感性的网络相关任务不能得到及时处理。特别地,在宿主机物理CPU负载较高的情况下,vCPU调度不当会使得虚拟机出现较为严重的吞吐量降低及非正常延迟等网络性能降低的情况。
[0005]另一方面,为了优化资源配置、节省运营成本,云计算服务提供商在运营数据中心时会不时地调整虚拟机在数据中心内的分布。例如,将分布较分散的虚拟机迀移至虚拟机较密集的宿主机服务器上,并将空出的服务器休眠以节省电力。这种情况也会促使宿主机物理CPU负载升高,从而加剧VCPU调度对虚拟机网络性能的负面影响。
[0006]因此,当前迫切需要一种能够改善基于共享I/O的虚拟化环境下的虚拟机网络性能的解决方案。

【发明内容】

[0007]本发明的任务是提供一种能够克服上述现有技术缺陷的vCPU调度解决方案。
[0008]本发明提供了一种基于共享I/O虚拟化环境的vCPU调度方法,包括下列步骤:
[0009]a)根据实时监测的共享I/O请求环特征,识别出排队敏感型虚拟机;排队敏感型虚拟机是指在所有虚拟机中更易于因网络相关任务不能得到及时处理而造成阻塞现象的虚拟机;
[0010]b)提高步骤a)所识别出的排队敏感型虚拟机的vCPU调度优先级,以优先为排队敏感型虚拟机分配计算资源。
[0011]其中,所述步骤a)中,所述排队敏感型虚拟机包括数据接收方向上的排队敏感型虚拟机。
[0012]其中,所述步骤a)中,根据虚拟机的I/O请求环溢出频率识别数据接收方向上的排队敏感型虚拟机。
[0013]其中,所述步骤a)中,根据虚拟机的I/O请求队列过载频率识别数据接收方向上的排队敏感型虚拟机。
[0014]其中,所述步骤a)中,根据虚拟机的I/O请求环溢出频率和I/O请求队列过载频率识别数据接收方向上的排队敏感型虚拟机。
[0015]其中,所述步骤a)中,识别数据接收方向上的排队敏感型虚拟机的过程包括下列子步骤:
[0016]al)监测虚拟机的I/O请求环特征数据;
[0017]a2)根据I/O请求环特征数据统计I/O请求环溢出频率和I/O请求队列过载频率;
[0018]a3)当I/O请求环溢出频率和I/O请求队列过载频率中任意一项超出预设的阈值时,判断该虚拟机为数据接收方向上的排队敏感型虚拟机。
[0019]其中,所述步骤al)中,所述I/O请求环特征数据包括:当前接收数据包所需I/O请求个数,以及I/o请求环对应的共享内存当前剩余的I/O请求空间,所述步骤a2)中,根据当前接收数据包所需I/O请求个数以及I/O请求环对应的共享内存当前剩余的I/O请求空间,统计I/o请求环溢出频率。
[0020]其中,所述步骤al)中,所述I/O请求环特征数据还包括:当前I/O请求环内未被处理I/O请求队列的长度,所述步骤a2)中,根据当前I/O请求环内未被处理I/O请求队列的长度,统计I/O请求队列过载频率。
[0021]其中,所述步骤al)中,基于预设的监测周期监测虚拟机的I/O请求环特征数据;
[0022]所属步骤a2)中,基于预设的包含若干个监测周期的识别周期,统计该识别周期内虚拟机对应的I/o请求环溢出频率和I/O请求队列过载频率。
[0023]其中,所述步骤a)中,所述排队敏感型虚拟机包括数据发送方向上的排队敏感型虚拟机。
[0024]其中,所述步骤a)中,根据虚拟机的vCPU过载情况和I/O请求队列长度,识别数据发送方向上的排队敏感型虚拟机。
[0025]其中,所述步骤a)中,识别数据发送方向上的排队敏感型虚拟机的过程包括下列子步骤:
[0026]all)在每个监测周期内,判别该监测周期内vCPU是否过载,并得出该监测周期内的I/o请求队列长度特征;
[0027]al2)根据请求队列长度震荡特征识别数据发送方向上的排队敏感型虚拟机,所述请求队列长度震荡特征是:vCPU过载的监测周期内的I/O请求队列长度特征之和sum_rq_pattern与识别周期内CPU过载的监测周期个数count_cpu_ol的比值。
[0028]其中,所述识别数据发送方向上的排队敏感型虚拟机的过程还包括:在执行所述步骤al2)之前,根据识别周期内CPU过载的监测周期个数C0Unt_CpU_0l的大小,预先筛除非排队敏感型虚拟机。
[0029]其中,所述步骤al2)还包括:当所述请求队列长度震荡特征处于预设阈值附近的数值区间内时,判别当前虚拟机是排队敏感型虚拟机。
[0030]与现有技术相比,本发明具有下列技术效果:
[0031]本发明能够缓解因vCPU排队时间变长而导致的虚拟机网络性能下降,从而改善虚拟机的网络性能。
【附图说明】
[0032]以下,结合附图来详细说明本发明的实施例,其中:
[0033]图1不出了 Xen虚拟机的联网申旲型不意图;
[0034]图2示出了本发明一个实施例中的数据接收方向上的排队敏感型虚拟机识别方法的流程图;
[0035]图3示出了本发明一个实施例中的数据发送方向上的排队敏感型虚拟机识别方法的流程图;
[0036]图4示出了本发明中一个虚拟机网络敏感型识别及vCPU调度的场景图;
[0037]图5示出了在测试场景下基于本发明一个实施例中的某个虚拟机分别在空载、运行UDP流量及运行TCP流量时的I/O请求环特征相关数据。
【具体实施方式】
[0038]发明人对基于共享I/O的虚拟化环境下,吞吐量降低及非正常延迟等网络性能降低的情况进行了深入研宄。在共享I/o的虚拟化环境下,一方面,各虚拟机的虚拟I/O需要在共享I/o环中进行调度,以等待物理I/O资源分配给该虚拟1/0,另一方面,当物理I/O资源分配给该虚拟I/O时,还需要相应虚拟机的VCPU执行相应的I/O相关任务,如果此时VCPU并未被分配实际的物理计算资源,即该VCPU当前并不处于运行状态,那么具有时间敏感性的网络相关任务将不能得到及时处理,并且此时共享I/O环中还可能会出现阻塞,后续的虚拟I/o均排队等待物理I/O的分配,从
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1