一种用于虚拟机vCPU调度的资源池管理方法_3

文档序号:9326753阅读:来源:国知局
各个子步骤的实现方式并不是唯一的,在本发明的另外的实施例中,在进行虚拟机当 前计算负载(computing load)情况监测与分析时,只要能够按一定方式区分出计算资源饥 饿型VM和非计算资源饥饿型VM即可。
[0074] 步骤三、进行VM计算资源统计与分配
[0075] 本步骤中,基于步骤一和步骤二的分析结果,进一步计算各种类型的VM所需的 CPU资源,包括下列子步骤:
[0076] 步骤1 :利用Xen提供的工具,将所有物理CPU初始化两个分池,即网络敏感型VM 计算资源分池和非网络敏感型VM计算资源分池。系统运行的初始状态下,网络敏感型VM 计算资源分池中的VM数量为零,且分得的物理CPU数也置为零。
[0077] 步骤2 :从步骤一中的VM性能分析列表以及步骤二中的虚拟机计算负载分析结果 列表中选取属于 Network Sensitive 型的 VM,包括 Network Sensitive 型且 Hunger 型(SH 型),数量为Nsh;Network Sensitive型且非Hunger型(SNH型),数量为N snh,该部分VM组 成待调整网络敏感型VM组,数量为Ns,即Ns= N sh+Nsnh,该部分VM对应的vCPU后续将放置 在网络敏感型VM计算资源分池中。
[0078] 相应地,其余两种类型虚拟机对应为非Network Sensitive型且Hunger型(NSH 型),数量为 Nnsh_ Network Sensitive 型且非 Hunger 型,(NSNH 型),数量SNnsnh。这两 种类型VM组成另一组待调整非网络敏感型VM组,数量为Nns,该部分VM对应的vCPU后续 将放置在非网络敏感型VM计算资源分池中。显然有N ns= N nsh+Nnsnh。表3示出了根据表1 和表2所记录的统计分析结果所得出的各个VM所属的类型。
[0079] 表 3
[0080]
[0081] 步骤3 :利用步骤二中统计出的非Hunger型VM所占的CPU数量(包括SNH型所占 CPU数量Csnh和NSNH型所占的CPU总数量C nsnh),计算出所有非Hunger型VM所占 CPU的数 量Cnh算法如下:
[0085] 其中,Lk为每个SNH型VM对应占用的实际物理CPU数量,L为每个NSNH型VM对 应占用的实际物理CPU数量。
[0086] 在表1至3所示的统计分析周期的例子中,
[0088] 该例子中,由于本实施例中的非Hunger型VM同时也是非网络敏感型VM,因此,所 有非网络敏感型VM占用的物理CPU数量与非Hunger型VM -致,约为I. 1个。
[0089] 步骤4 :余下物理CPU数量即为Hunger型VM应分得的CPU数量,计算方法为
[0090] Ch= C-Cnh
[0091] 在表1至3所示的统计分析周期的例子中,所有Hunger型VM所占的物理CPU数 Ch= C-Cnh= 6-1. 1 = 4.9。由于本实施例中不存在非Network Sensitive型且Hunger型 VM(NSH型),因此,所有网络敏感型VM所占用的CPU数量Cs= Ch= 4.9。需说明的是,在 表1至3所示的统计分析周期中,由于Hunger型与Sensitive型VM完全一致,因此此时不 需要再具体计算每个Hunger型VM所占的CPU数量值。
[0092] 然而,在一般化的情况下,Hunger型与Sensitive型VM可能不完全一致,也就是 说,Hunger型VM中可能既有网络敏感型VM,又有非网络敏感型VM,此时就需要进一步计算 各个Hunger型VM所占的CPU数量值,即执行下面的步骤5。
[0093] 步骤5 :利用上述步骤2的统计结果计算各个Hunger型VM应分得的物理CPU值 ,其中j代表各个VM在Hunger型VM集合中的编号。依据当前Hunger型VM分得的 Weight值MY来按照比例确定(各个VM的Weight值可以基于调度算法得出),其中 为当前Hunger型VM的Weight值,计算方法如下:
[0095] 其中Nh = N sh+Nnsh为当前统计周期内所有Hunger型VM数量。
[0096] 在然后根据每种类型的VM对应的ID来分别计算出SH型VM应该所需的物理CPU 数量Csh和NSH型VM应该所需的物理CPU数量C nsh,计算方法如下:
分别为C1J中对应计算出的SH型VM和NSH型VM所应 分配的物理CPU数量。p代表Hunger型且Sensitive型(SH型)的VM集合中的VM编号, q代表Hunger型且非Sensitive型(NSH型)的VM集合中的VM编号。
[0100] 步骤四、VM计算资源动态分池调度
[0101] 完成了各种类型VM所需的CPU资源计算和分配以后,立刻进行资源的分池调度, 将网络敏感型VM和非网络敏感型VM对应的CPU资源分隔成两个资源池(Pool)进行分开 调度,不同的资源池内设置不同的CPU时间片调整周期(Slice Time),VM计算资源动态分 池调度具体包括如下子步骤:
[0102] 步骤1 :按照步骤三计算的结果,利用Xen平台提供的功能命令分别向网络敏感性 VM资源分池中分配Cs个物理CPU,同时将网络敏感型VM对应的vCPU分配到该池进行调度, 其中C s= |C sh+Csnh I为所有网络敏感型VM所需要物理CPU数的计算值,然后向下取整。
[0103] 同时,向非网络敏感型VM资源分池中分配Cns个物理CPU,将非网络敏感型VM对 应的VCPU分配到该池进行调度,其中C ns= |Cnsh+Cnsnh|为所有非网络敏感型VM所需要物理 CHJ数的计算值,然后向下取整。
[0104] 需要说明的是,由于初始分配时网络敏感型VM资源分池 CPU数量为零,所有物理 CPU都在非网络敏感型VM资源分池中,因此第一次分配的时候相当于从总CPU中分出一部 分CPU资源至网络敏感型VM资源分池,以后每个分池分配周期对两个分池同时进行更新调 整。
[0105] 在表1至3所示的统计分析周期的例子中,利用Xen平台提供的功能命令(xl cpupool-numa-split)分别向网络敏感型VM资源分池中分配4个CPU,向非网络敏感型VM 计算资源分池中分配1个CPU。同时将网络敏感型VM(VM4、VM5、VM6)对应的vCPU分配到 网络敏感型VM资源分池进行调度;将非网络敏感型VM(VM1、VM2、VM3)对应的vCPU分配到 非网络敏感型VM资源分池进行调度。
[0106] 步骤2 :由于Xen的分池操作只能针对整数个物理CPU,因此上述步骤2中进行了 取整操作,实际情况下计算出来的CnJP C s很可能不是整数,其小数部分之和约为1。为了 有效利用资源,采用随机数取概率的方式进行余下的这一个CPU的分配。
[0107] 1)假设Cns取整之前的小数部分为δ (保留一位小数),(^取整之前的小数部分为 η。分别计算此时从属于CnJP Cs的余数分配百分比λ ns和λ s。其中,
[0110] 2)设定一个随机数程序,其中随机数数目为ιο*δ+ι〇*η,每次进行一次随机数 的生成,以概率λ ns将余下的1个物理CPU分配给非网络敏感型计算资源池,以概率λ 3将 余下的1个物理CPU分配给非网络敏感型计算资源池。
[0111] 利用随机数程序,随机生成1~10中的一个数值,当随机数为1~9中的任意一 个数值时,将余下的1个CPU分配给网络敏感型VM计算资源分池,这样余下的1个CPU分 配给网络敏感型VM的分配概率λ 3为90%,;当随机数值为10时,将余下的1个CPU分配 给非网络敏感型VM计算资源分池,本实施例中将余下的vCPU分配给网络敏感型VM计算资 源池,这样余下的1个CPU分配给非网络敏感型VM的分配概率λ ns为10 %。图5示出了 对于表1至3所示的统计分析周期,基于本发明一个实施例的虚拟机资源池管理方法进行 vCPU调度的计算资源分配状态的示意图。作为对比,图4示出了在不使用本发明的动态分 池管理技术时,对于表1至3所示的统计分析周期,采用基于传统虚拟机资源池的vCPU调 度的计算资源分配状态的示意图。
[0112] 上述表1至3所示的统计分析周期中,VM的类型只有nsnh和sh两种,这实际上 是一种特例。为了更好地理解本发明的实质,下面再给出另一统计分析周期的示例,其中, 表4示出了另一个统计分析周期的网络敏感性VM列表。
[0113] 表 4
[0116] 表5示出了另一个统计分析
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1