设备集合中的资源利用优化的制作方法

文档序号:6485121阅读:157来源:国知局
设备集合中的资源利用优化的制作方法
【专利摘要】本文描述了用于对具有分级网络层的设备集合中的资源利用进行优化的技术。一些示例技术可以识别在多个服务器计算机集合上执行的处理之间交换的包。分级网络层可以将多个服务器计算机集合耦合。技术可以基于所识别的包来确定虚拟机组。每个虚拟机组可以识别配置在多个服务器计算机集合上以执行一个或多个处理的一个或多个虚拟机。虚拟机组可配置为提高分级网络层中的较低层的数据通信量并且降低分级网络层中的较高层的数据通信量。这些技术可以根据虚拟机组在多个服务器计算机集合之间迁移虚拟机。
【专利说明】设备集合中的资源利用优化
【背景技术】
[0001]除非在此处进行说明,否则此处所描述的材料不是本申请权利要求的现有技术并且不因包含在该部分中而承认是现有技术。
[0002]商用数据中心可以实现为Clos连接网络。典型的Clos连接网络可实现为多层网络体系结构,诸如两层网络体系结构或三层网络体系结构。例如,三层网络体系结构可布置为倒置树,其中核心层构成树的根部,汇聚层构成树的中部,并且边缘层构成树的叶子。核心层、汇聚层和边缘层可以包括多个网络元件,诸如以太网开关。
[0003]在Clos连接网络中,汇聚层内或边缘层内的相邻网络元件之间的通信可通过核心层中的网络元件路由。结果,核心层会经受显著的拥塞,而诸如汇聚层或边缘层的较低层会具有可用的带宽。
[0004]
[0005]本公开大体描述了用于优化具有分级网络层的设备集合中的资源利用的技术。一些示例方法可以识别在多个服务器计算机集合上执行的处理之间交换的包。分级网络层可以将所述多个服务器计算机集合耦合。示例方法可以基于所识别的包来确定虚拟机组。每一个所述虚拟机组可以识别在所述服务器计算机集合上配置以执行一个或多个处理的一个或多个虚拟机。虚拟机组可配置为提高所述分级网络层中的较低层的数据通信量并且降低分级网络层中的较高层的数据通信量。示例方法可以根据虚拟机组而在所述多个服务器计算机集合之间迁移所述虚拟机。
[0006]本公开进一步大体描述了适于优化具有多个分级网络层的设备集合中的资源利用的一些计算机可读存储媒体。所述计算机可读存储媒体可以包括存储于其中的计算机可执行指令,当通过计算机执行时,所述计算机可执行指令使所述计算机执行一个或多个操作。一些示例的计算机可执行指令可以使计算机识别在多个服务器计算机集合上执行的处理之间交换的包。分级网络层可以将多个服务器计算机集合耦合。示例性的计算机可执行指令可以使计算机基于所识别的包来确定虚拟机组。每一个所述虚拟机组可以识别配置在多个服务器计算机集合上以执行一个或多个处理的一个或多个虚拟机。虚拟机组可配置为提高分级网络层中的较低层的数据通信量并且降低分级网络层中的较高层的数据通信量。示例性的计算机可执行指令可以使计算机根据虚拟机组而在多个服务器计算机集合之间迁移虚拟机。
[0007]本公开还大体描述了适于优化具有多个分级网络层的设备集合中的资源利用的一些计算机系统。一些示例的计算机系统可以包括处理器以及与所述处理器耦合的存储器。示例的计算机系统还可以包括从存储器能够通过处理器执行的程序模块,当通过处理器执行时,所述程序模块使计算机系统执行一个或多个操作。一些示例的程序模块可以使计算机系统识别在多个服务器计算机集合上执行的处理之间交换的包。分级网络层可以将服务器计算机集合耦合。每个包可以包括源识别符、目的地识别符和数据大小。示例的程序模块可以使计算机系统基于源识别符、目的地识别符和数据大小来确定虚拟机组。每个虚拟机组可以识别配置在多个服务器计算机集合上以执行一个或多个处理的一个或多个虚拟机。虚拟机组可配置为提高分级网络层中的较低层的数据通信量并且降低分级网络层中的较高层的数据通信量。示例的程序模块可以使计算机系统根据虚拟机组而在多个服务器计算机集合之间迁移虚拟机。
[0008]前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方案、实施例和特征之外,另外的方案、实施例和特征将变得清晰可见。
【专利附图】

【附图说明】
[0009]通过下面结合附图给出的详细说明和随附的权利要求,本公开的前述特征以及其它特征将变得更加清晰。应理解的是,这些附图仅描绘了依照本公开的多个实施例,因此,不应视为对本公开范围的限制,将通过利用附图结合附加的具体描述和细节对本公开进行说明,在附图中:
[0010]图1是示出适于优化设备集合中的资源利用的示例性的Clos连接网络体系结构的功能框图;
[0011]图2是示出适于优化设备集合中的资源利用的示例处理的流程图;
[0012]图3是示出矩阵的一部分的示例实现的图;
[0013]图4是示出图问题的示例性的概念化表示的图;
[0014]图5是示出用于示例的计算系统的计算机硬件体系结构的框图;以及
[0015]图6是示出包括用于在计算设备上执行计算机处理的计算机程序的计算机程序广品的不意图;
[0016]所有图都是依照本文提供的至少一些实施例而布置。
【具体实施方式】
[0017]在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的部件。在详细说明和附图中所描述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本文呈现的主题的精神或范围。将易于理解的是,如本文大致描述且如图中所图示的,本公开的方案能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。
[0018]本公开大体上尤其涉及适于降低网络的核心层的通信量且提高网络的诸如汇聚层或边缘层的较低层的通信量的技术。这些技术可适于识别在网络体系结构内的服务器计算机之间传输的数据包,所述服务器计算机可表示数据中心或一些其他设备集合。可以通过由服务器计算机上的虚拟机执行的处理来发送和接收数据包。这些技术可适于基于所识别的数据包来生成矩阵。矩阵可以指定在网络中的虚拟机对之间传输的通信量。
[0019]这些技术可适于基于矩阵来确定虚拟机组。虚拟机组可以包含布置成使得网络的较低层的通信量下降而网络的核心层的通信量保持不变或提高的多组虚拟机。这些技术可适于根据所确定的虚拟机组而在服务器计算机之间迁移虚拟机。
[0020]图1是示出依照本文提供的至少一些实施例布置的适于优化设备集合中的资源利用的示例的Clos连接网络体系结构100的功能框图。网络体系结构100可以是根据一些实施例的数据中心的配置。网络体系结构100可以包括第一服务器计算机集合102A、第二服务器计算机集合102B、第三服务器计算机集合102C以及第四服务器计算机集合102D。服务器计算机集合102A-102D可以统称为服务器计算机集合102。服务器计算机集合102中的每一个可以包括一个或多个服务器计算机。为简明起见,在图1中仅示出了四个服务器计算机集合,本领域技术人员将理解在网络体系结构100中可存在不同数量的服务器计算机集合。如本文所使用,术语“耦合”可以是指任何配置成使能两个以上部件之间的直接或间接通信的机理。这些部件可以或者可以不彼此物理接触。
[0021]第一服务器计算机集合102A可以与第一边缘网络元件104A耦合。第二服务器计算机集合102B可以与第二边缘网络元件104B耦合。第三服务器计算机集合102C可以与第三边缘网络元件104C耦合。第四服务器计算机集合102D可以与第四边缘网络元件104D耦合。边缘网络元件104A-104D可统称为边缘网络元件104。边缘网络元件104可统一地构成网络体系结构100的边缘层106。
[0022]第一边缘网络元件104A和第二边缘网络元件104B可以与第一汇聚网络元件108A耦合。第三边缘网络元件104C和第四边缘网络元件104D可以与第二汇聚网络元件108B耦合。第一汇聚网络元件108A和第二汇聚网络元件108B可以统称为汇聚网络元件108。汇聚网络元件108可统一地构成网络体系结构100的汇聚层110。
[0023]第一汇聚网络元件108A可以与第一核心网络元件112A和第二核心网络元件112B耦合。第二汇聚网络元件108B也可以与第一核心网络元件112A和第二核心网络元件112B耦合。第一核心网络元件112A和第二核心网络元件112B可以与网络(图1中未示出)耦合。第一核心网络元件112A和第二核心网络元件112B可统称为核心网络元件112。核心网络元件112可统一地构成网络体系结构的核心层114。
[0024]根据一些实施例,核心层114、汇聚层110和边缘层106可以构成三层网络体系结构。在一些其他实施例中,边缘层106可以不存在,并且核心层114和汇聚层110可以构成两层网络体系结构。还可以构思其他多层网络体系结构。此外,在构成多层和将多层互连的各种布置中,网络体系结构100的实现可以包括任意数量的边缘网络元件,汇聚网络元件或核心元件。
[0025]核心层114、汇聚层110和边缘层106在本文还可以称为网络体系结构100的分级网络层。核心层114通常可称为分级网络层的较高层,而汇聚层110和边缘层106通常可称为分级网络层的较低层。
[0026]在数据中心的一些示例配置中,每个服务器计算机集合102可布置在机架中。多个机架可以并排布置成行。多个行可以彼此平行布置而构成过道。边缘网络元件104可以布置在机架顶部上。每个边缘网络元件104可以将布置在机架中的服务器计算机耦合。汇聚网络元件108可布置在行的末尾。每个汇聚网络元件108可以将每个行中的多个机架耦合。核心网络元件112可以布置在过道的末尾。每个核心网络元件112可以将数据中心中的多行耦合。可以构思边缘网络元件104、汇聚网络元件108和核心网络元件112的其他配置和布置。
[0027]如图1所示,多个服务器计算机集合102之间的一些通信可穿过边缘层106和汇聚层110。多个服务器计算机集合102之间的一些通信量还可以穿过核心层114。在所说明的示例中,第一服务器计算机集合102A可以运行第一虚拟机116A,并且第二服务器计算机集合102B可以运行第二虚拟机116B。第三服务器计算机集合102C可以运行第三虚拟机116C,并且第四服务器计算机集合102D可以运行第四虚拟机116D。虚拟机116A-116D可统称为虚拟机116。
[0028]在一些实施方式中,第一虚拟机116A可适于执行生成路由到第二虚拟机116B的数据包的处理。数据包可以从第一服务器计算机集合102A路由到第一边缘网络元件104A,从第一边缘网络元件104A路由到第一汇聚网络元件108A,从第一汇聚网络元件108A路由到第二边缘网络元件104B,并且从第二边缘网络元件104B路由到第二服务器计算机集合102B。在该情况下,数据包穿过边缘层106和汇聚层110,但是避开核心层114。结果,数据包的传输不会增加核心层114的通信量。
[0029]在一些其他实施方式中,第一虚拟机116A可适于执行生成路由到第三虚拟机116C的数据包的处理。数据包可以类似地从第一服务器计算机集合102A路由到第一边缘网络元件104A并且从第一边缘网络元件104A路由到第一汇聚网络元件108A。然而,从第一汇聚网络元件108A,该通信随后可以路由到其中一个核心网络元件112,从其中一个核心网络元件112到第二汇聚网络元件108B,从第二汇聚网络元件108B到第三边缘网络元件104C,并且从第三边缘网络元件104C到第三服务器计算机集合102C。在该情况下,数据包穿过边缘层106、汇聚层110和核心层114。结果,数据包的传输增加了核心层114中的通信量。
[0030]为了减少核心层114的通信量,本文提供的各个实施例描述了适于识别在多个服务器计算机集合102之间交换的数据包的优化技术。多个服务器计算机集合102可以操作虚拟机,诸如虚拟机116,其适于执行生成在处理之间传输的数据包的处理。通过分析数据包,优化技术可适于生成虚拟机组,虚拟机组适于布置虚拟机使得通过核心层114路由的通信量减少并且通过诸如汇聚层110和核心层114的较低层路由的通信量保持不变或增力口。优化技术可以进一步适于依照虚拟机组而在服务器计算机集合102之间迁移虚拟机。[0031 ] 在一些实施例中,优化技术可通过多个服务器计算机集合102中的一个或多个优化模块118来实现。优化模块118可布置且配置在适于实现优化技术的分布式计算框架中。通过这种方式,与优化资源利用有关的任务能够遍布多个计算节点。在一些其他的实施例中,优化技术可以实现在与多个服务器计算机集合102耦合的集中式优化系统(未示出)上。
[0032]在优化技术的说明性示例中,分析的数据包可以指示,第一虚拟机116A和第三虚拟机116C所执行的大部分的处理可以彼此通信,从而提高核心层114中的通信量。此外,分析过的数据包可以指示,第二虚拟机116B和第四虚拟机116D所执行的大部分的处理可以彼此通信,从而也增加核心层114中的通信量。在该示例中,优化模块118可适于生成包含第一虚拟机116A和第三虚拟机116C的第一虚拟机组和包含第二虚拟机116B和第四虚拟机116D的第二虚拟机组。
[0033]依照虚拟机组,优化模块118可以将第三虚拟机116C从第三服务器计算机集合102C到第二服务器计算机集合102B迁移并且将第二虚拟机116B从第二服务器计算机集合102B到第四服务器计算机集合102D迁移。通过这种方式,第一虚拟机116A与第三虚拟机116C之间以及第二虚拟机116B与第四虚拟机116D之间的通信能够无需通过核心层114路由报务来实现。下文参考图2-4来更详细地描述关于优化模块118的操作的额外细节。
[0034]图2是示出依照本文提供的至少一些实施例布置的适于优化设备集合中的资源利用的示例处理200的流程图。处理200可以包括如一个或多个块202-208所示的各种操作、功能或动作。
[0035]处理200可以开始于块202 (识别在多个服务器计算机集合之间交换的数据包),其中优化模块118可配置为识别在多个服务器计算机集合102之间交换的数据包。在一些实施例中,优化模块118可以配置为捕获传输到或传输自其相应的服务器计算机集合102的数据包。在一些实施例中,优化模块118可配置为接收来自基于硬件或基于软件的嗅探器(sniffer)的捕获的数据包。例如,服务器计算机集合102可以包括适于捕获数据包的网络处理器。
[0036]每个数据包可以包括以下中的一个或多个:源识别符、目的地识别符和数据包大小。例如,源识别符、目的地识别符和数据包大小可包含在每个数据包的包头中。源识别符可以指定已经从其发送数据包或者将要从其发送数据包的源地址。目的地过程识别符可以指定已经在其处接收数据包或者将要在其处接收数据包的目的地地址。源地址和目的地地址可以是因特网协议(”IP “)地址、媒体访问控制(”MAC “)地址、或其他能够识别数据包的源或目的地的适合的网络地址。数据包大小可以指定数据包的大小。
[0037]优化模块118可配置为对在通过在服务器计算机集合102中运行的虚拟机执行的处理之间传输的数据包进行识别。也就是说,这些数据包可以在数据中心内传输。优化模块118可配置为对那些源识别符和目的地识别符指定在服务器计算机集合102中运行的虚拟机的数据包进行识别。优化模块118还可以配置为忽视那些目的地识别符指示数据包要离开数据中心的数据包。继块202之后是块204。
[0038]在块204中(基于所识别的数据包来生成矩阵),优化模块118可配置为基于所识别的数据包来生成矩阵。矩阵可以包括多个行、多个列和多个值。每个值可对应于一行和一列。根据各个实施例,行可对应于通过服务器计算机集合102执行的虚拟机的有序列表。类似地,列也可以对应于通过服务器计算机集合执行的虚拟机的同一有序列表。
[0039]在一些实施方式中,沿着每行和每列的虚拟机可表示从其发送数据包的源虚拟机或在其处接收到数据包的目的地虚拟机。结果,矩阵可以包括与矩阵下对角中的相同的矩阵上对角中的值。优化模块118可配置为选择上对角部分或下对角部分中的一个。优化模块118可进一步配置成忽视将矩阵的上对角和下对角进行划分的对角线,因为这些值可以表示与其自身通信的虚拟机。下文将参考图3更加详细地描述矩阵的示例配置。
[0040]对于具有源识别符、目的地识别符和数据大小的每个所识别的数据包,优化模块118可配置为将源识别符与其中一行(或列)中的其中一个虚拟机匹配并且将目的地识别符与其中一列(或行)中的其中另一个虚拟机匹配。匹配的行和匹配的列可对应于其中一个值。在识别与匹配的行和匹配的列对应的值时,优化模块118可配置为通过将所识别的数据包的数据大小与该值相加来增大该值。通过将该值增大所识别的包的数据大小,矩阵可以保持在服务器计算机集合102中运行的虚拟机对之间传输的通信量的记录。
[0041]在一些实施例中,优化模块118可以配置为在增大所述值之前将矩阵的值初始化为零值或者某其他初始值。优化模块118还可配置成将这些值周期性地复位回到初始值。例如,通过虚拟机执行的处理可以在估算时间帧内启动和停止。此处,优化模块118可以配置为根据估算的时间帧来周期性地复位这些值,从而能够忽视与极可能不再执行的处理对应的值。复位还可以通过诸如虚拟机发动或终止的事件或其他状态或环境的变化来触发。继块204之后可以是块206。[0042]在块206中(基于矩阵中的值来确定虚拟机组),优化模块118可以配置为基于矩阵的所选对角中的值来确定虚拟机组。每个虚拟机组可以包含两个或多个的虚拟机。优化模块118可配置为确定虚拟机组使得网络体系结构100的较低级中的通信量最大化并且使得网络体系结构100的核心层114中的通信量最小化。
[0043]根据各个实施例,优化模块118可以配置为通过求解图问题来确定虚拟机组。图问题可概念化描述如下。可呈现多个核心级存储桶(bucket)。每个核心级存储桶可以表示核心网络元件和与核心网络元件耦合的多个服务器计算机集合。核心网络元件可以与多个汇聚网络元件、多个边缘网络元件和多个服务器计算机集合耦合。结果,核心级存储桶可以是最大的存储桶,从而表示与其他存储桶相比而言为最大量的计算力。
[0044]每个核心级存储桶可以包括多个聚合级存储桶。每个聚合级存储桶可以表示汇聚网络元件以及与汇聚网络耦合的服务器计算机集合。汇聚网络元件可以与多个边缘网络元件和多个服务器计算机集合耦合。结果,聚合级存储桶可以是小于其相应的聚合级存储桶的边缘级存储桶,从而表示较少量的计算力。
[0045]每个聚合级存储桶可以包括多个边缘级存储桶。每个边缘级存储桶可以表示边缘网络元件以及与边缘网络元件耦合的服务器计算机集合。因此,边缘级存储桶可以小于其相应的聚合级存储桶,从而表示较少量的计算力。
[0046]优化模块118可配置为将虚拟机置于每个边缘级存储桶中。每个边缘级存储桶以及因此每个聚合级存储桶和每个核心级存储桶,可适于仅保持阈值数量的虚拟机,其对应于与边缘级存储桶相关联的服务器计算机集合的计算能力的量。放置在给定边缘级存储桶中的虚拟机可构成虚拟机组。
[0047]通过将边缘层106中的通信量最大化,同时也将汇聚层110和核心层114中的相加通信量最小化,可以解决图问题。示例的解决方案可以基于功率、计算能力或其他的放置约束和度量来观察可能的限制。可以通过指定在两个虚拟机之间传送的数据通信量的交叉值来限定一对虚拟机之间的通信。该交叉值可通过诸如下文参考图3更加详细描述的矩阵300的矩阵来限定。
[0048]在一些示例实施方式中,优化模块118可配置为将虚拟机对放置于一个或多个边缘级存储桶中。由于优化模块118将虚拟机对放置到边缘级存储桶中,优化模块118可配置为计算每个边缘级存储桶的边缘级得分。可以通过将包含在边缘级存储桶中的每对虚拟机的交叉值求和来计算既定的边缘级存储桶的边缘级得分。
[0049]优化模块118可配置为使得每个边缘级存储桶的边缘级得分最大化。以此方式,优化模块118能够使得边缘层106中的通信量最大化。优化模块118还可以配置为使得汇聚层110和核心层114内的通信量最小化。下文参考图4来提供关于优化模块118将聚合级存储桶和核心级存储桶内的通信量最小化的操作的额外细节。
[0050]优化模块118可配置为经由线性规划、贪婪算法、动态规划和其他能够解决复杂图问题的技术来求解图问题。在一些实施例中,优化模块118可配置为利用MAP-REDUCE和HADOOP技术,从而经由分布式计算框架来求解图问题。继块206之后可以是块208。
[0051]在块208中(根据虚拟机组在多个服务器计算机集合之间迁移虚拟机),优化模块118可配置成根据所确定的虚拟机组而在多个服务器计算机集合102之间迁移虚拟机。例如,放置在既定边缘级存储桶中的虚拟机可布置成使得虚拟机共同定位在由不多于边缘网络元件分离的多个服务器计算机集合102中。
[0052]在一些实施例中,优化模块118可配置为执行延迟迁移(lazy relocation)。在延迟迁移中,优化模块118可配置为当由虚拟机执行的处理睡眠时将虚拟机迁移。通过这种方式,虚拟机能够被迁移,而无需对处理的执行造成破坏。在一些其他的实施例中,优化模块118可配置成执行主动(aggressive)迁移(relocate)。在主动迁移中,优化模块118可配置为即使当处理正在执行时也对虚拟机进行迁移。优化模块118可配置成暂停处理的执行,将虚拟机迁移,以及恢复处理的执行。根据各个实施例,延迟迁移以及其他类型迁移之间的选择可取决于核心层的拥塞级别或其他紧急指示符。在块208之后,处理200重复(例如,周期性地、连续地或根据需要立即响应)或者终止。
[0053]图3是示出依照本文提供的至少一些实施例布置的矩阵300的一部分的示例实施方式的图。矩阵300可以包括多个行302A-302E以及多个列304A-304E。矩阵300可以进一步包括多个值,诸如值306A-306Y。值306A-306Y中的每一个可以对应于行302A-302E中的一个以及列304A-304E中的一个。行302A-302E可以对应于标记为虚拟机A至虚拟机E的虚拟机的有序列表。列304A-304E可对应于标记为虚拟机A至虚拟机E的虚拟机的相同的有序列表。
[0054]对于具有源识别符、目的地识别符和数据包大小的每个所识别的数据包,优化模块118可配置为识别行302A-302E中的匹配源识别符的一个以及列304A-304E中的匹配目的地识别符的一个。例如,匹配的行可以是行302B,匹配的列可以是列304D。匹配的行302B和匹配的列304D可对应于值306Q。优化模块118可配置为将数据包大小添加到值306Q。
[0055]此外,优化模块118可配置为识别列304A-304E中的匹配源识别符的一个以及行302A-302E中的匹配源识别符的一个。在前面的示例之后,匹配的列可以是304B,并且匹配的行可以是302D。匹配的列304B和匹配的行302D可对应于值3061。优化模块118可配置为将数据包大小添加到值3061。
[0056]如图3所示,值3021和值302Q可以冗余。特别地,矩阵300可以按下对角和上对角进行划分。通过图3中的垂直阴影线所识别的下对角可以包括值306B-306E、306H-306J、306N-3060和306T。通过图3中的水平阴影线识别的上对角可以包括值306F、306K_306L、306P-306R和306U-306X。因为下对角和上对角可以包括冗余值,所以优化模块118可以配置为当优化模块118分析矩阵300而生成虚拟机组时忽视下对角或上对角。优化模块118还可以配置为忽视沿着矩阵的对角线的值306A、306G、306M、306S和306Y,因为这些值可表示与其自身通信的虚拟机。
[0057]图4是示出依照本文提供的至少一些实施例布置的图问题的示例概念化表示400的图。概念化表示400可以对应于图1的网络体系结构100。概念化表示400可以包括核心级存储桶402。核心级存储桶402可以包括第一聚合级存储桶404A和第二聚合级存储桶404B。聚合级存储桶404A-404B可统称为聚合级存储桶404。
[0058]第一聚合级存储桶404A可对应于第一汇聚网络元件108A,并且第二聚合级存储桶404B可对应于第二汇聚网络元件108B。第一聚合级存储桶404A可以包括第一边缘级存储桶406A和第二边缘级存储桶406B。第一边缘级存储桶406A可对应于第一边缘网络元件104A,并且第二边缘级存储桶406B可对应于第二边缘网络元件104B。第二聚合级存储桶404B可以包括第三边缘级存储桶406C和第四边缘级存储桶406D。第三边缘级存储桶406C可以对应于第三边缘网络元件104C,并且第四边缘级存储桶406D可以对应于第四边缘网络元件104D。边缘级存储桶406A-406A可以统称为边缘级存储桶406。
[0059]在图示的示例中,优化模块118可以将第一虚拟机408A和第二虚拟机408B放置到第一边缘级存储桶406A中。由于空间考量,每个虚拟机在图3中被标记为”VM “。优化模块118可以将第三虚拟机408C和第四虚拟机408D放置在第二边缘级存储桶406B中。优化模块118可以将第五虚拟机408E和第六虚拟机408F放置在第三边缘级存储桶406C中。优化模块118可以将第七虚拟机408G和第八虚拟机408H放置到第四边缘级存储桶406D中。虚拟机408A-408H可统称为虚拟机408。
[0060]如之前参考图2所描述的,优化模块118可配置为使得边缘层106中的通信量最大化。为了使得边缘层106中的通信量最大化,优化模块118可配置为使得每个边缘级存储桶406的边缘级得分最大化。例如,第一边缘级存储桶406A的边缘级得分可以是指定第一虚拟机408A和第二虚拟机408B之间的数据通信量的交叉值。如果额外的虚拟机对放置在第一边缘级存储桶406A中,则第一边缘级存储桶406A的边缘级得分可增加额外虚拟机对的交叉值。根据一些实施例,优化模块118可配置为从矩阵300中取回交叉值。
[0061]如之前参考图2所描述的,优化模块118还可以配置成使得汇聚层110和核心层114中的增加的通信量最小化。为了使得汇聚层110中的通信量最小化,优化模块118可配置为使得每个聚合级存储桶404的聚合级得分最小化。例如,第一聚合级存储桶404A的聚合级得分可以是虚拟机对之间的交叉值之和,其中一个虚拟机(例如,第一虚拟机(例如,第一虚拟机408A))从第一边缘级存储桶406A中选择,另一虚拟机(例如,第三虚拟机408C)从第二边缘级存储桶406B选择。
[0062]为了使得核心层114中的通信量最小化,优化模块118可配置为使得核心级存储桶402的核心级得分最小化。例如,核心级存储桶402的核心级得分可以是虚拟机对之间的交叉值之和,其中一个虚拟机(例如,第二虚拟机408B)从第一聚合级存储桶404A选择,另一虚拟机(例如,第八虚拟机408H)从第二聚合级存储桶404B选择。优化模块118可配置为以使得聚合级存储桶404的聚合级得分和核心级存储桶402的核心级得分最小化的方式使得边缘级存储桶406的边缘级得分最大化。通过这种方式,优化模块118能够使得边缘层106中的通信量最大化,同时也使得汇聚层110和核心层114中增加的通信量最小化。
[0063]图5是示出依照本文提供的至少一些实施例布置的用于示例的计算系统的计算机硬件体系结构的框图。图5包括计算机500,其包括处理器510、存储器520和一个或多个驱动器530。计算机500可以实现为常规的计算机系统、嵌入式控制计算机、膝上型计算机或服务器计算机、移动设备、机顶盒、电话亭、车辆信息系统、移动电话、定制机或其他硬件平台。处理器510可配置为实现在图1中所描述的包括优化模块118的逻辑。优化模块118可以配置为实现先前参考图2所描述的处理。
[0064]驱动器530及其关联的计算机存储媒体提供计算机可读指令、数据结构、程序模块和其他用于计算机500的数据的存储。驱动器530能够包括操作系统540、应用程序550、程序模块560和数据库580。计算机500还包括用户输入设备590,用户可以经由用户输入设备来输入命令和数据。输入设备可以包括电子数字化器、麦克风、键盘和指针设备、统称为鼠标、跟踪球或触摸板。其他输入设备可以包括操纵杆、游戏板、卫星天线、扫描仪等等。
[0065]这些以及其他的输入设备能够通过与系统总线耦合的用户输入接口而与处理器510耦合,但是可以通过诸如并行端口、游戏端口或通用串行总线(“USB”)的其他接口和总线结构耦合。诸如计算机500的计算机还可以包括诸如扬声器的其他外围输出设备,其可通过输出外围接口 594或类似物耦合。
[0066]计算机500可以利用到一个或多个计算机的逻辑连接而在网络化环境中运行,所述计算机诸如与网络接口 596耦合的远程计算机。远程计算机可以是个人计算机、服务器、路由器、网络PC、对等设备或其他普通网络节点,并且可以包括上文结合计算机500所描述的多个或全部的元件。网络化环境常见于办公室、企业广域网(“WAN”)、局域网(“LAN”)、内联网和因特网。
[0067]当在LAN或WLAN网络化环境中使用时,计算机500可以通过网络接口 596或适配器来与LAN耦合。当在WAN网络化环境中使用时,计算机500通常包括调制解调器或其他用于建立经由诸如因特网或网络508的WAN的通信的装置。WAN可以包括因特网、图示的网络508、各种其他网络或其任意组合。将理解的是,可以使用其他在计算机之间建立通信链路、环、网、总线、云或网络的机理。
[0068]根据一些实施例,计算机500可与网络化环境耦合。计算机500可以包括与驱动器530或其他存储设备相关联的一个或多个实体计算机可读存储媒体的一个或多个实例。系统总线可以使处理器510能够从计算机可读存储媒体中读取代码和/或数据以及将代码和/或数据读入计算机可读存储媒体。媒体可以代表利用任何适合的技术实现的存储元件形式的装置,包括但不限于半导体、磁性材料、光学媒体、电存储设备、电化学存储设备或任何其他此类存储技术。媒体可以代表与存储器520相关联的部件,无论是否特征化为RAM、ROM、闪存或其他类型的易失性或非易失性存储器技术。媒体还可以代表辅助存储设备,无论是否实现为存储驱动器530。硬件驱动实现方式可特征化为固态,或者可以包括存储磁编码信息的旋转媒体。
[0069]存储媒体可以包括一个或多个程序模块560。程序模块560可以包括软件指令,当加载到处理器510中并执行时,软件指令将通用计算系统变换成专用计算系统。如本说明书中详细说明的,程序模块560可以提供计算机500可借以利用本文所论述的部件、逻辑流程和/或数据结构而参与在总体系统或操作环境内的各种工具或技术。
[0070]处理器510可以由任意数量的晶体管或其他电路元件来构造,其可以单独地或统一地呈现出任何数量的状态。更具体地,处理器510可以作为状态机或有限状态机而运行。通过加载包含在程序模块560内的可执行指令,这种机器可以变换成第二机器、或者专用机器。这些计算机可执行指令可以通过指定处理器510如何在状态之间变换来变换处理器510,从而将构成处理器510的晶体管或其他电路元件从第一机器变换成第二机器。还可以通过从一个或多个用户输入设备590、网络接口 596、其他外围设备、其他接口或者一个或多个用户或其他行动者接收输入来变换任一机器的状态。任一机器还可以变换诸如打印机、扬声器、视频显示器或其他各种输出设备的状态或各种物理特性。
[0071]将程序模块560编码也可以变换存储媒体的物理结构。在本说明书的不同实现方式中,物理结构的具体变换可取决于各种因素。这些因素的例子可以包括但不限于:用于实现存储媒体的技术、存储媒体是否特征化为主存储设备或辅存储设备,等等。例如,如果存储媒体实现为基于半导体的存储器,则当软件被编码于半导体存储器520中时程序模块560可以变换半导体存储器520的物理状态。例如,软件可以变换构成半导体存储器520的晶体管、电容器或其他离散电路元件的状态。
[0072]作为另一示例,存储媒体可以利用诸如驱动器530的磁或光技术来实现。在这种实现方式中,当软件被编码在磁或光媒体中时,程序模块560可以变换磁或光媒体的物理状态。这些变换可以包括改变既定磁媒体内特定位置的磁特性。这些变换还可以包括改变既定光媒体内的特定位置的物理特征或特性,从而改变那些位置的光特性。应当理解的是,物理媒体的各种其他变换是可能的,而不偏离本说明书的范围和精神。
[0073]图6是示出了依照本文提供的至少一些实施例布置的包括用于在计算设备上执行计算机处理的计算机程序的计算机程序产品600的示意图。示例的计算机程序产品的示例性实施例利用信号承载媒体602来提供,并且可以包括如下至少一条指令604:用于识别在多个服务器计算机集合上执行的处理之间交换的包的一条或多条指令;基于所识别的包来确定虚拟机组的一条或多条指令;或者根据虚拟机组而在多个服务器计算机集合之间迁移虚拟机的一条或多条指令。在一些实施例中,一个或多个计算机程序产品600的信号承载媒体602包括计算机可读媒体606、可记录媒体608和/或通信媒体610。
[0074]虽然本文所描述的主题是在结合计算机系统上操作系统和应用程序的执行而执行的程序模块的总体背景下呈现的,本领域技术人员将认识到其他的实现方式可以结合其他类型的程序模块来实现。通常,程序模块包括例程、程序、部件、数据结构以及执行特定任务或实现特定抽象数据类型的其他类型的结构。而且,本领域技术人员将理解,本文所描述的主题可以借助其他计算机系统配置来实践,包括手持式设备、多核处理器系统、基于微处理器或可编程消费者电子设备、微型计算机、主计算机等。
[0075]本公开不限于本申请中所描述的特定实施例,这些实施例意在各方案的示例。能够在不偏离其精神和范围的情况下做出多种改进和变型,这对于本领域技术人员而言是显而易见的。通过前面的说明,除了本文所列举的那些之外,在本公开的范围内的功能上等同的方法和装置对于本领域技术人员而言将是显而易见的。旨在使这些改进和变型落在所附权利要求书的范围内。本公开仅受所附权利要求书以及这些权利要求所给予权利的等同方案的整个范围所限制。应当理解的是,本公开不限于特定的方法、试剂、化合物组成或生物系统,当然这些会变化。还应理解的是,本文所使用的术语是仅仅是为了描述特定实施例的目的,而不意在限制。
[0076]关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。
[0077]本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。在使用类似于“A、B或C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B或C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。
[0078]另外,在根据马库什组(Markush group)描述本公开的特征或方案的情况下,本领域技术人员将理解的是本公开也因此以马库什组的任何独立成员或成员的子组来描述。
[0079]本领域技术人员将理解的是,为了任何以及全部的目的,诸如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,诸如“多达”、“至少”、“大于”、“小于”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有I个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有I个、2个、3个、4个、或5个单元的组,等等。
[0080]通过前面的论述,将理解到本文已经为了示例的目的描述了本公开的各实施例,并且可以在不偏离本公开的范围和精神的情况下进行各种改进。因此,本文所公开的各个实施例不意在限制,真正的范围和精神是通过随附的权利要求表示的。
【权利要求】
1.一种用于优化具有多个分级网络层的设备集合中的资源利用的方法,所述方法包括: 识别在多个服务器计算机集合上执行的多个处理之间交换的多个包,其中所述多个分级网络层将所述多个服务器计算机集合耦合; 基于所识别的多个包来确定多个虚拟机组,其中所述多个虚拟机组中的每一个都识别一个或多个虚拟机,所述一个或多个虚拟机配置在所述多个服务器计算机集合上以执行所述多个处理中的一个或多个,并且其中所述多个虚拟机组配置为提高所述多个分级网络层中的较低层的数据通信量并且降低所述多个分级网络层中的较高层的数据通信量;以及 根据所述多个虚拟机组而在所述多个服务器计算机集合之间迁移所述虚拟机。
2.如权利要求1所述的方法,其中所述多个包中的每一个都包括源识别符、目的地识别符和数据大小,并且其中基于所识别的多个包来确定所述多个虚拟机组包括:基于所识别的多个包中的所述源识别符、所述目的地识别符和所述数据大小来确定所述多个虚拟机组。
3.如权利要求1所述的方法,其中所述较低层包括边缘层,所述边缘层具有与所述多个服务器计算机集合耦合的第一多个网络元件;并且其中,所述较高层包括核心层,所述核心层具有与所述第一多个网络元件耦合且与网络耦合的第二多个网络元件。
4.如权利要求1所述的方法,其中所述较低层包括边缘层和汇聚层,所述边缘层具有与所述多个服务器计算机集合耦合的第一多个网络元件,所述汇聚层具有与所述第一多个网络元件耦合的第二多个网络元件;并且其中,所述较高层包括核心层,所述核心层具有与所述第二多个网络元件耦合且与网络耦合的第三多个网络元件。
5.如权利要求1所述的方法,其中识别在所述多个服务器计算机集合上执行的所述多个处理之间交换的所述多个包包括:经由在所述多个服务器计算机集合上运行的软件来捕获所述多个包。
6.如权利要求1所述的方法,其中识别在所述多个服务器计算机集合上执行的所述多个处理之间交换的所述多个包包括:经由配置在所述多个服务器计算机集合上的硬件来捕获所述多个包。
7.如权利要求2所述的方法,还包括:从所述多个包中的所述每一个中的包头取回所述源识别符、所述目的地识别符和所述数据大小。
8.如权利要求2所述的方法,其中基于所识别的多个包中的所述源识别符、所述目的地识别符和所述数据大小来确定所述多个虚拟机组包括: 生成具有多个行、多个列和多个值的矩阵,所述多个值中的每一个与所述多个行中的一个和所述多个列中的一个对应,所述多个行与多个源识别符相关联,所述多个列与多个目的地识别符相关联; 对于所述多个包中的所述每一个,将所述数据大小添加到所述多个值中的与所述源识别符和所述目的地识别符对应的值;以及 确定所述多个虚拟机组使得所述多个虚拟机组中的每一个包含小于阈值的量的虚拟机并且使得所述多个虚拟机组使得分最大化,其中所述得分汇集与由所述多个虚拟机组中的所述每一个中的所述虚拟机执行的通信处理对应的值。
9.如权利要求8所述的方法,其中所述阈值包括所述多个服务器计算机集合中的一个能够运行的虚拟机的最大数量。
10.如权利要求8所述的方法,其中确定所述多个虚拟机组使得所述多个虚拟机组中的每一个包含小于阈值的量的虚拟机并且使得所述多个虚拟机组使得分最大化包括:经由线性规划、动态规划或贪婪算法来确定所述多个虚拟机组。
11.如权利要求8所述的方法,还包括将所述矩阵中的所述多个值周期性地复位。
12.如权利要求1所述的方法,其中根据所述多个虚拟机组而在所述多个服务器计算机集合之间迁移所述虚拟机包括:当所述虚拟机空闲时,执行使虚拟机移动的延迟迁移。
13.如权利要求1所述的方法,其中基于所识别的多个包来确定所述多个虚拟机组包括:经由分布式计算框架来确定所述多个虚拟机组。
14.一种其上存储有计算机可执行指令的计算机可读媒体,当通过计算机执行时,所述计算机可执行指令使所述计算机: 识别在多个服务器计算机集合上执行的多个处理之间交换的多个包,其中多个分级网络层将所述多个服务器计算机集合耦合; 基于所识别的多个包来确定多个虚拟机组,其中所述多个虚拟机组中的每一个都识别一个或多个虚拟机,所述一个或多个虚拟机配置在所述多个服务器计算机集合上以执行所述多个处理中的一个或多个,并且其中所述多个虚拟机组配置为提高所述多个分级网络层中的较低层的数据通信量并且降低所述多个分级网络层中的较高层的数据通信量;以及 根据所述多个虚拟机组而在所述多个服务器计算机集合之间迁移所述虚拟机。
15.如权利要求14所述的计算机可读媒体,其中所述多个包中的每一个都包括源识别符、目的地识别符和数据大小;并且其中为基于所识别的多个包来确定所述多个虚拟机组,所述计算机可读媒体包括存储于其中的另外的计算机可执行指令,当通过所述计算机执行时,所述另外的计算机可执行指令使所述计算机基于所识别的多个包中的所述源识别符、所述目的地识别符和所述数据大小来确定所述多个虚拟机组。
16.如权利要求15所述的计算机可读媒体,其中为基于所识别的多个包中的所述源识别符、所述目的地识别符和所述数据大小来确定所述多个虚拟机组,所述计算机可读媒体包括存储于其中的另外的计算机可执行指令,当通过所述计算机执行时,所述另外的计算机可执行指令使所述计算机: 生成具有多个行、多个列和多个值的矩阵,所述多个值中的每一个与所述多个行中的一个和所述多个列中的一个对应,所述多个行与多个源识别符相关联,所述多个列与多个目的地识别符相关联; 对于所述多个包中的所述每一个,将所述数据大小添加到所述多个值中的与所述源识别符和所述目的地识别符对应的值;以及 确定所述多个虚拟机组使得所述多个虚拟机组中的每一个包含小于阈值的量的虚拟机并且使得所述多个虚拟机组使得分最大化,其中所述得分汇集与由所述多个虚拟机组中的所述每一个中的所述虚拟机执行的通信处理对应的值。
17.如权利要求16所述的计算机可读媒体,其中所述阈值包括所述多个服务器计算机集合中的一个能够运行的虚拟机的最大数量。
18.如权利要求16所述的计算机可读媒体,其中为确定所述多个虚拟机组使得所述多个虚拟机组中的每一个包含小于阈值的量的虚拟机并且使得所述多个虚拟机组使得分最大化,所述计算机可读媒体包括存储于其中的另外的计算机可执行指令,当通过所述计算机执行时,所述另外的计算机可执行指令使所述计算机经由线性规划、动态规划或贪婪算法来确定所述多个虚拟机组。
19.一种计算机系统,包括: 处理器; 存储器,其与所述处理器耦合;以及 程序模块,其从所述存储器能够由所述处理器执行并且当通过所述处理器执行时所述程序模块使所述计算机系统: 识别在多个服务器计算机集合上执行的多个处理之间交换的多个包,其中多个分级网络层将所述多个服务器计算机集合耦合,并且其中所述多个包中的每一个包括源识别符、目的地识别符和数据大小; 基于所述源识别符、所述目的地识别符和所述数据大小来确定多个虚拟机组,其中所述多个虚拟机组中的每一个都识别一个或多个虚拟机,所述一个或多个虚拟机配置在所述多个服务器计算机集合上以执行所述多个处理中的一个或多个,并且其中所述多个虚拟机组配置为提高多个分级网络层中的较低层的数据通信量并且降低所述多个分级网络层中的较高层的所述数据通信量;以及 根据所述多个虚拟机组而在所述多个服务器计算机集合之间迁移所述虚拟机。
20.如权利要求19所述的计算机系统,其中为基于所识别的多个包中的所述源识别符、所述目的地识别符和所述数据大小来确定所述多个虚拟机组,所述程序模块进一步使所述计算机系统: 生成具有多个行、多个列和多个值的矩阵,所述多个值中的每一个与所述多个行中的一个和所述多个列中的一个对应,所述多个行与多个源识别符相关联,所述多个列与多个目的地识别符相关联; 对于所述多个包中的所述每一个,将所述数据大小添加到所述多个值中的与所述源识别符和所述目的地识别符对应的值;以及 确定所述多个虚拟机组使得所述多个虚拟机组中的每一个包含小于阈值的量的虚拟机并且使得所述多个虚拟机组使得分最大化,其中所述得分汇集与由所述多个虚拟机组中的所述每一个中的所述虚拟机执行的通信处理对应的所述值。
【文档编号】G06F15/173GK103917966SQ201180074333
【公开日】2014年7月9日 申请日期:2011年12月23日 优先权日:2011年12月23日
【发明者】E·克鲁格里克 申请人:英派尔科技开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1