一种用于虚拟机vCPU调度的资源池管理方法
【技术领域】
[0001] 本发明涉及云计算的虚拟化技术领域,具体地说,本发明涉及一种用于虚拟机 VCPU调度的资源池管理方法。
【背景技术】
[0002] 近年来,云计算技术获得产业界、学术界的广泛关注。国内外的很多电信运营商、 信息技术服务公司都搭建了自己的公共云计算平台和私有云计算平台,从而为用户提供相 关基于云计算的应用服务。虚拟化技术是云计算技术的基础,应用硬件资源虚拟化技术可 以在一台物理服务器上虚拟出多台虚拟机。这些虚拟机(VM)既共享底层的硬件计算资源, 同时又互相隔离。其中,以Xen、KVM为代表的典型虚拟化技术得到业界广泛应用。
[0003] 各类虚拟化技术中,通常都是通过将物理CPU资源进行调度,将其分配给各个VM 的VCPU (虚拟化CPU),从而实现计算资源的虚拟化共享。下文中以Xen技术为例进行说明。
[0004] 为实现计算资源的虚拟化共享,基于Xen的VM管理程序会给相应VM分配VCPU, vCPU是Xen为VM提供的虚拟CPU。只有当VM的vCPU被调度到物理CPU上时,VM才能运 行。也就是说,运行在VM上的操作系统是通过其分配的vCPU的调度来共享所有物理CPU 资源的。在基于Xen平台的vCPU默认的调度策略中,每一个物理CPU都有一个与其对应的 vCPU调度队列,vCPU任务在队列中排队等待调度。
[0005] 在实际运行过程中,基于云计算的应用既有网络通信方面的任务也有数据处理、 检索和查找等基本的计算任务,从而使得CPU具有同时处理计算型任务和网络型任务的双 重功能。目前,基于Xen的云计算平台采用的vCPU调度方法主要是Credit Scheduler算 法,即所有VM对应的vCPU公平地排队竞争物理CPU资源。然而,由于CPU同时具备处理计 算型任务和网络型任务的双重功能,这就导致时间片存在两种形式的竞争,一方面,两种任 务同时参与CPU时间片的竞争;另一方面,不同VM对应的不同任务参与CPU时间片的竞争。 上述两种情况均带来了 vCPU队列调度的资源竞争问题,往往导致VM的网络性能大幅下降。
[0006] 虽然现有技术中还存在BOOST机制,能够将VM调度队列中某个VM (例如执行网络 型任务的VM)的事件通知给Xen中的VM调度器,VM调度器给予该VM临时的BOOST优先级, 并使之抢占物理CPU立即运行。但是,在宿主机物理CPU负载较高的情况下会存在多个VM 将竞争CPU调度时间片,对于运行网络型任务的VM来说,即便利用BOOST机制来暂时提升 其优先级,仍然会存在较大的通信时延,进而造成较为严重的吞吐量降低及抖动大大增加 等情况。另一方面,如果频繁地为网络通信事件使用BOOST机制,也会大大降低其它计算任 务使用虚拟计算资源的公平性。
[0007] 因此,当前迫切需要一种在公平性原则的基础下,能够提高虚拟化环境的网络性 能进而提尚用户体验的解决方案。
【发明内容】
[0008] 本发明的任务是提供一种能够在公平性原则的基础下,提高虚拟化环境的网络性 能的解决方案。
[0009] 根据本发明的一个方面,提供了一种用于虚拟机vCPU调度的资源池管理方法,其 特征在于,包括下列步骤:
[0010] 1)根据当前统计分析周期内各个VM的数据传输延迟的波动程度,将各个VM识别 为网络敏感型VM和非网络敏感型VM ;
[0011] 2)根据各个VM在所述步骤1)被识别的类型,当前统计分析周期内的各个VM实际 所占的CPU负载值,以及各个VM当前被分得的物理计算资源,将物理计算资源分配至网络 敏感型VM资源分池和非网络敏感型VM资源分池;
[0012] 3)将网络敏感型VM分配至网络敏感型VM资源分池中进行调度,将非网络敏感型 VM分配至非网络敏感型VM资源分池中进行调度,进入下一个统计分析周期,将所述下一个 统计分析周期作为新的当前统计分析周期,重新执行步骤1)。
[0013] 其中,所述步骤1)包括下列子步骤:
[0014] 11)对于每个VM,在当前统计分析周期内,以一定采样间隔采集该VM的数据传输 延迟的样本值;
[0015] 12)根据每个VM在当前统计分析周期内的数据传输延迟的算数平均值以及各个 样本值,得出当前统计分析周期内各个VM的数据传输延迟的波动程度;
[0016] 13)将波动程度大于预先设置的波动阈值的VM识别为网络敏感型VM,将波动程度 不大于预先设置的波动阈值的VM识别为非网络敏感型VM。
[0017] 其中,所述步骤12)包括下列子步骤:
[0018] 121)计算每个VM在当前统计分析周期内的数据传输延迟的算数平均值
其中I1为第i个采样周期的数据传输延迟的样本值,i为采样周期的序号,M 为一个统计分析周期所包含的采样周期个数;
[0019] 122)计算该VM在T周期内数据传输延迟的平均波动率.所述数据 传输延迟的波动程度用所述平均波动率λ表征。
[0020] 其中,所述步骤11)还包括:对于每个VM,在当前统计分析周期内,以一定采样间 隔采集该VM的数据流量;
[0021] 所述步骤1)还包括子步骤:
[0022] 14)对于步骤13)所识别的网络敏感型VM,判断该VM在当前统计分析周期内的平 均流量是否超过预设的流量阈值,如果判断为否,则将该VM的类型改为非网络敏感型VM, 如果判断为是,则该VM的类型仍保持为网络敏感型VM。
[0023] 其中,所述步骤2)包括下列子步骤:
[0024] 21)根据各个VM当前实际所占的CPU负载值和当前被分得的物理计算资源,将各 个VM识别为计算资源饥饿型VM和非计算资源饥饿型VM ;
[0025] 22)对于每个非计算资源饥饿型VM,根据该非计算资源饥饿型VM是网络敏感型VM 还是非网络敏感型VM,将该非计算资源饥饿型VM当前实际所占的CPU负载值对应的物理计 算资源分配至网络敏感型VM资源分池或者非网络敏感型VM资源分池。
[0026] 其中,所述步骤2)还包括下列子步骤:
[0027] 23)计算所有非计算资源饥饿型VM当前实际所占的CPU负载值之和,将减去所述 CHJ负载值之和后的剩余的物理计算资源作为所有计算资源饥饿型VM的待分配物理计算 资源总数;
[0028] 24)基于步骤23)得出的所述所有计算资源饥饿型VM的待分配物理计算资源总 数,以及各个计算资源饥饿型VM是网络敏感型VM还是非网络敏感型VM,将相应的物理计算 资源分配至网络敏感型VM资源分池或者非网络敏感型VM资源分池。
[0029] 其中,所述步骤21)中,所述当前被分得的物理计算资源根据Weight权重数得出, 所述Weight权重数基于预置的调度算法得出。
[0030] 其中,所述步骤24)中,每个计算资源饥饿型VM所对应的待分配物理计算资源根 据它的Weight权重数和所述所有计算资源饥饿型VM的待分配物理计算资源总数得出。
[0031] 其中,所述步骤2)中,所述物理计算资源为物理CPU核的个数。
[0032] 其中,所述步骤2)还包括子步骤:
[0033] 25)当分配至网络敏感型VM资源分池和非网络敏感型VM资源分池的物理CPU核 的个数不是整数时,向下取整,并将剩余的1个物理CPU核以一定概率分配至网络敏感型VM 资源分池或者非网络敏感型VM资源分池。
[0034] 其中,所述步骤25)中,所述一定概率根据向下取整前的分配至网络敏感型VM资 源分池和非网络敏感型VM资源分池的物理CPU核的个数的小数部分的数值得出。
[0035] 其中,所述步骤3)还包括:在进行调度时,所述网络敏感型VM计算资源池的CPU 时间片调整周期小于非网络敏感型VM计算资源池的CPU时间片调整周期。
[0036] 其中,所述步骤3)还包括:在完成调度后,进入下一个统计分析周期,将所述下一 个统计分析周期作为新的当前统计分析周期,重新执行步骤1)。
[0037] 与现有技术相比,本发明具有下列技术效果:
[0038] 1、本发明可以大大提高执行网络敏感型任务VM的网络性能,同时也使得两种类 型的VM都能够较为公平的共享物理资源。
【附图说明】
[0039] 以下,结合附图来详细说明本发明的实施例,其中:
[0040] 图1示出了一个典型的基于Xen技术的虚拟化服务器硬件平台的示例;
[0041] 图2示出了本发明一个实施例中虚拟机网络敏感性能