一种制定虚拟机部署策略的方法及装置的制造方法_3

文档序号:9648987阅读:来源:国知局
所述最大流的信息更新所述最大流树。所述每个线 程重复该步骤直到最大流树中全部叶子节点均被进程选取,从而构造出所述虚拟机流量需 求最大流树。
[0065] 具体的,将叶子节点编号为2至n,选取的叶子节点为S,相邻节点为t;
[0066] 根据所述最大流,将最大流标注在所述叶子节点S与相邻节点t的链路上,并得到 所述叶子节点S与相邻节点t的最小割;依次判断编号大于所述叶子节点S编号的其他叶 子节点,若所述其他叶子节点与所述相邻节点t相邻,且所述其他叶子节点与所述叶子节 点S在同一个割集中,则删除所述最大流树中所述其他叶子节点与所述节点t之间的链路, 增加所述其他叶子节点与所述节点S之间的链路。
[0067] 下面结合图5给出并行方式构造虚拟机之间的流量需求的最大流的最大流树的 一种更为具体的实现方式。
[0068] 启动主线程;
[0069]S5001、主线程创建一棵星型树,W-个虚拟机作为中屯、节点,其他虚拟机作为叶 子节点,并将叶子节点编号为2至n。
[0070] 启动子线程,并行执行如下的步骤:
[0071]S5002、选取2至n个叶子节点中未被计算过的节点为源节点S,
[0072]S5003、判断S5002步骤能否取到未被计算过节点,若取不到则退出线程。
[0073]S5004、设置标志位flag为false。
[0074]S5005、判断flag是否为true,如果是,贝认为所选取的节点S计算完成,,重新执 行步骤S5002,否则执行S5006 ;
[0075]S5006、在星型树中选择一个与S节点相邻的节点为目的节点t,计算S与t之间的 最大流,并由此得到最小割。
[0076]S5007、进入临界区,锁定星型树,使得其他子线程在锁定期间不能对星型树进行 修改。
[0077]S5008、判断节点S与节点t是否相邻。如果S,t不相邻,则重新执行步骤S5005。 由于并行计算时,星型树可能会被其他子线程修改,需要重新判定W确定S与t是否仍然相 邻。
[0078]S5009、将最大流标注在星型树中S节点与t节点间的链路上
[0079]S5010、将flag标记为true。对于每一个编号大于源节点S的节点i,如果在星形 树中t与i是邻居,但是i与S在同一个割集中,则去除星型树中i与t之间的链路,增加 i与S之间的链路。
[0080]S5011、退出临界区,解锁星型树,重新执行步骤巧005。
[0081]S5012、当所有线程退出后,得到的树就是最大流树。
[0082] 在本实现方式中,每个线程并行的计算所选取的节点与相邻节点的最大流,并在 临界区中将星型树锁定后进行更新,从而在提高了计算效率的同时,保证了星型树不会并 行修改而产生冲突。
[0083] 为了方便理解,现结合图6,给出结合上述算法的一次具体的流程。如图所示,假设 一共有6个虚拟机节点,节点之间双向流量需求均为1,则601为节点1-6之间的的流量需 求图,该流量需求图对应的流量需求矩阵为一个6X6的所有元素均为1的矩阵。结合上述 算法,构造出星型树如602所示。
[0084] 选择一个非中屯、节点,节点2,计算节点2到与之相连接的节点的最大流,此处为 与节点1的最大流,计算结果为3,并得到最小割集节点1、3、5和节点2、4、6 ;
[0085] 选择编号大于2的节点,如果该节点与节点2是邻居,且在同一个割集中,则去除 该节点与节点I的连接,增加给节点与节点2的连接。选择完全部节点后,可得到树603;
[0086] 再一次选择未计算的非中屯、节点,直到全部节点都进过上述两个步骤的计算,可 得到最后的最大流树604。
[0087] 则在该最大流树中,相邻节点之间存在流量需求的最大流,可用于根据该最大流 树进行虚拟机的部署。在后文中给出了根据该树进行部署的具体方式。
[0088]S403、当判断采用串行方式时,根据所述流量需求矩阵采用串行方式计算出多个 虚拟机中每个虚拟机与其他虚拟机之间流量需求的最大流。
[0089] 串行方式计算虚拟机之间流量需求的最大流,是指应用算法来计算虚拟机之间的 流量需求的最大流时,启用单个线程串行的执行算法,从而节省系统的运算资源。
[0090] 在一种具体的实现方式中,参考S402的介绍,可W采用最大流树作为数据结构存 储虚拟机之间的流量需求的最大流。结合图7,给出了在一种可列举的方式中,串行计算构 造存储虚拟机之间的流量需求的最大流的最大流树的一种更为具体的实现方式。
[0091] S601 :创建一棵星型树,W第1个节点为中屯、,其他节点为叶子节点并编号2至n。
[0092]S602:依次选取编号为2至n的节点为源节点(S),重复做步骤S603和S604。
[009引S603:在星型树中选择一个与S节点相邻的节点为目的节点(t),计算S与t之间 的最大流,并由此得到最小割。将最大流标注在星型树中S节点与t节点间的链路上。
[0094]S604:对于每一个编号大于源节点S的节点i,如果在星形树中t与i是邻居,但 是i与S在同一个割集中,则去除星型树中i与t的连接,增加i与S的连接。
[0095] 将2至n个节点全部执行完上述S603、S604步骤,得到的树就是虚拟机之间的流 量需求的最大流的最大流树。
[0096] 本步骤的实现方式与前述实现方式中的原理类似,可W参照前述的流程进行理 解。
[0097] 在本实现方式中,只需要要一个线程即可完成最大流树的构建,对于流量需求矩 阵密度比较小的情况,能够节约计算资源。
[0098] 可见,在本实施例中,通过根据流量需求矩阵的密度,动态的选择串行或者并行方 式计算储虚拟机之间的流量需求的最大流的最大流树,从而使得当流量需求矩阵的密度比 较大从而造成算法复杂度比较高时,可W采用并行方式提高运算效率,减少生成最大流树 所需要的时间;当流量需求矩阵的密度比较小时,相应算法复杂度也比较低,则可W采用串 行方式构造最大流树,从而节省运算资源。
[0099]图8是本发明实施例中一种根据当前网络状态构造网络代价矩阵的实施例的流 程图。
[0100] S801、获取物理机网络拓扑信息;
[0101] 物理机的网络拓扑信息包含在前述的网络状态信息之中,可W通过外部进行设定 或者通过软件定义网络(SoftwareDefined化twork,SDN)来获得。
[0102] S802、根据所述物理机网络拓扑信息,获得所述多个物理机之间的最短路径信息, 所述最短路径信息包括物理机之间的链路数量;
[0103] 最短路径信息是指两个物理机之间进行通信的最短路径上的路径信息。最短路径 是指两台物理机进行通信时最小的物理路径。根据不同的判定标准,最短路径可能是不同 的,例如,W链路长度作为路径长度时,链路长度最短的物理路径为最短路径,而W节点数 作为路径长度时,链路中节点数最少的路径为最短路径。
[0104] S803、根据所述物理机之间的链路数量和所述链路的链路带宽信息,确定所述多 个物理机之间的通信代价,根据所述通信代价,构造网络代价矩阵。
[0105] 在一种实现方式中,所述最短路径信息包括链路数量m和每条条链路的带宽C,所 述链路带宽信息包含每条链路的剩余带宽b,所述物理机两两之间的通信代价R根据如下 公式获得:
[0106]技=Wlx+ (。2乙;"斯,化)
[0107] 其中,化为所述最短路径上第k条链路的剩余带宽,化为所述最短路径上第k条 链路的带宽,为预设的加权系数。根据所获得的物理机之间的通信代价构造通信代价矩阵。 [010引图9是本发明实施例中一种根据所述流量需求最大流和所述网络代价矩阵,获得 将所述多个虚拟机部署在所述多个物理机中的部署策略的方法的流程示意图。
[0109] S901、根据所述流量需求最大流,选择虚拟机之间的网络流量需求的最大流最大 两个虚拟机中的一个虚拟机,根据所述网络代价矩阵,选择物理机之间最短网络路径的通 信代价最小的两个物理机中的一个物理机,将所述虚拟机部署在所述物理机中。
[0110] 具体的,根据最大流所存储的数据结构的不同,可W有多种选择虚拟机之间的网 络流量需求的最大流最大两个虚拟机中的一个虚拟机的方法。例如,当最大流存储在最 大流树的数据结构中时,选择最大流树中最大流值最大的链路上的两个虚拟机节点中的一 个;或者,当最大流已矩阵方式存储,且保存了虚拟机两两之间的最大流时,可W选择两两 之间最大流值最大的一组虚拟机中的一个,或者选择跟其他虚拟机之间的最大流值之和为 最大的虚拟机。
[0111] S902、选取一个已经部署的虚拟机A,获取所述与虚拟机A之间的网络流量需求的 最大流最大的虚拟机B,将所述虚拟机B部署到可部署的物理机中与部署了所述虚拟机A的 物理机通信代价最小的物理机中。
[0112] 重复S902步骤,直到所有的虚拟机均部署到物理机中,从而获得将所述多个虚拟 机部署在所述多个物理机中的部署策略。
[0113] 在一种实现方式中,在将所述虚拟机B部署到可部署的物理机中与部署了所述虚 拟机A的物理机通信代价最小的物理机中时,可W获取部署了所述虚拟机A的物理机的剩 余资源信息,如果所述物理机剩余资源足W部署所述虚拟机B,将所述虚拟机B部署在所述 物理机中,如果所述物理机剩余资源不足W部署所述虚拟机B,则将所述虚拟机B部署在于 所述物理机通信代价最小的其他物理机中。
[0114] 前述实施方式可W有多重具体的实现方式。在选取一个已经部署的虚拟机A时, 可W每次选取上一次完成部署的虚拟机,如果该虚拟机已经没有与之相连的未部署的虚拟 机,则选择上上一次完成部署的虚拟机,由此,可W通过深度优先遍历完成全部虚拟机的部 署;或者,可W在优先将与已经部署的虚拟机相连接的全部虚拟机部署完成后,从而通过广 度优先遍历完成全部虚拟机的部署。或者,可W根据虚拟机之间的最大流关系,综合决策出 能尽可能的将两两之间最大流更大的虚拟机部署到网络代价较小的物理机中。
[0115] 图10是本发明上述实施例中所设及的一种制定虚拟机部署策略设备1000的结构 示意图。所所述装置部署在虚拟机网络平台上,可W是多个承载虚拟机的物理机中的一个, 也可W是单独的物理机。物理机(或者称为服务器)包括计算机软件(包括操作系统、虚 拟化软件等)和硬件(包括计算硬件,例如x86、ARM,存储硬件,网络硬件等)组成,每个计 算节点上允许运行多台虚拟机。所述设备部署在化enstack云计算平台上,化enStack包 含两个主要模块:Nova和Swift,Nova为虚拟服务器部署和业务计算模块。其中,本发明所 述装置可W集成在融合调度器Sche化Ier中,用于根据业务的输入的虚拟机资源请求、月良 务器的资源情况和网络拓扑,计算出虚拟机的最佳放置位置。融合调度器与硬件资源管理 器HardwareMgt相连接,硬件资源管理主要负责采网络状态,包括集服务器硬件资源信息、 采集或者注入系统的网络拓扑信息,并将网络状态上报给融合调度器。融合调度器和硬件 资源管理器可WW插件的方式集成或者拓展在Nova模块中。
[0116] 因此,所述设备可W独立的硬件的方式来实现,也可W是由物理机的处理器执行 软件指令的方式来实现。软件指令可W由相应的软件模块组成,软件模块可W被存放于RAM 存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1