CN113383319B - 目标驱动的动态对象放置优化 - Google Patents
目标驱动的动态对象放置优化 Download PDFInfo
- Publication number
- CN113383319B CN113383319B CN201980070665.0A CN201980070665A CN113383319B CN 113383319 B CN113383319 B CN 113383319B CN 201980070665 A CN201980070665 A CN 201980070665A CN 113383319 B CN113383319 B CN 113383319B
- Authority
- CN
- China
- Prior art keywords
- application
- network
- objects
- network nodes
- topology model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000005457 optimization Methods 0.000 title claims description 23
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000006870 function Effects 0.000 claims description 49
- 230000005012 migration Effects 0.000 claims description 36
- 238000013508 migration Methods 0.000 claims description 36
- 239000011159 matrix material Substances 0.000 claims description 31
- 238000004891 communication Methods 0.000 claims description 19
- 238000005265 energy consumption Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 11
- 230000001934 delay Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 21
- 238000007726 management method Methods 0.000 description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000036541 health Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/148—Migration or transfer of sessions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用于在网络架构中放置应用程序的多个应用程序对象的计算机实现的方法。所述方法包括:在所述应用程序运行期间,根据所述多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;根据所述网络架构中多个网络节点的资源指标,生成所述网络节点的资源拓扑模型;使用所述应用程序拓扑模型和所述资源拓扑模型生成将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐,其中,所述推荐标识所述应用程序对象和所述网络节点;将所述应用程序对象迁移到由所述推荐标识的所述网络节点。
Description
相关申请交叉引用
本申请要求于2018年10月24日提交的申请号为62/749,842、发明名称为“目标驱动的动态对象放置优化(Objective Driven Dynamic Object Placement Optimization)”的美国临时申请的优先权,以及于2018年12月19日提交的申请号为62/782034、发明名称为“目标驱动的动态对象放置优化(Objective Driven Dynamic Object PlacementOptimization)”的美国临时申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及在使用分布式主机的分布式计算环境中运行的应用程序和服务。一些方面涉及分布式计算环境中应用程序的多个对象的目标驱动的动态对象放置优化。
背景技术
应用程序和服务可以包括多个分布式微服务,这些微服务可以由与应用程序相关联的不同应用程序对象执行,而每个对象可以在多个网络节点的单个分布式网络节点运行。移动应用程序对象可以提高特定组件的性能,但可能会降低针对整个应用程序执行多个应用程序对象的网络系统(即,多个网络节点)的性能。
例如,将应用程序对象从手机移动到边缘服务器可以减少该对象的计算时间,但可能会增加该移动的应用程序对象与相邻应用程序对象之间的数据传输时间。因此,为在网络架构中运行的应用程序的每个应用程序节点找到全局最佳位置,可以提高资源利用率。
发明内容
现描述各种示例是为了以简化的形式引入概念的选择,这些概念将在以下具体实施方式中进行进一步描述。本发明内容的目的并非旨在识别所要求保护的主题的关键或必要特征,也并非旨在限定所要求保护的主题的范围。
根据本发明的第一方面,提供了一种用于在网络架构中放置应用程序的多个应用程序对象的计算机实现的方法。所述方法可以包括:在所述应用程序运行期间,根据所述多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;根据所述网络架构中多个网络节点的资源指标,生成所述网络节点的资源拓扑模型;使用所述应用程序拓扑模型和所述资源拓扑模型确定将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐,其中,所述推荐标识所述应用程序对象和所述网络节点。所述方法还包括:将所述应用程序对象迁移到由所述推荐标识的所述网络节点。
根据所述第一方面,在所述方法的第一种实现方式中,所述应用程序拓扑模型包括:执行时间矩阵,指示当所述多个应用程序对象中的每个应用程序对象在所述多个网络节点中的对应节点执行时,所述多个应用程序对象中的每个应用程序对象的执行时间;以及数据大小矩阵,指示在所述多个应用程序对象中的至少两个应用程序对象之间传输的数据的大小。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第二种实现方式中,所述资源拓扑模型包括:时延矩阵,指示与多个通信链路相关联的时延,其中,每个通信链路将所述多个网络节点中的两个网络节点耦合在一起;以及传输速率矩阵,指示与所述多个通信链路相关联的带宽信息。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第三种实现方式中,检索指示用于放置所述多个应用程序对象的优化目标的目标函数。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第四种实现方式中,所述优化目标为以下至少一项:与所述多个应用程序对象的执行时间相关联的应用程序对象耗时;以及与所述多个应用程序对象在所述多个网络节点的对应网络节点上运行时消耗的能量相关联的应用程序对象能耗。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第五种实现方式中,根据所述执行时间矩阵,选择所述多个应用程序对象中的所述应用程序对象。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第六种实现方式中,确定所述选择的应用程序对象的多个耗时值,其中,所述耗时值中的每个耗时值指示在所述多个网络节点中的对应节点执行所述选择的应用程序对象时的耗时。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第七种实现方式中,根据所述多个耗时值中的最小耗时值,选择所述多个网络节点中的所述网络节点进行迁移;生成用于将所述应用程序对象从其当前运行的节点迁移到所述选择的网络节点的推荐。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第八种实现方式中,检测与所述网络架构中的一个或多个网络节点相关联的网络配置变化。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第九种实现方式中,根据所述检测到的网络配置变化,为所述应用程序生成更新后的应用程序拓扑模型和生成所述多个网络节点的更新后的资源拓扑模型;根据所述更新后的应用程序拓扑模型和所述更新后的资源拓扑模型,提供用于迁移所述应用程序对象的更新后的推荐。
根据所述第一方面或所述第一方面的上述任何一种实现方式,在所述方法的第十种实现方式中,所述网络配置变化包括以下至少一项:所述网络架构中的所述多个网络节点中的至少网络节点的网络可用性变化和功耗配置变化。
根据本发明的第二方面,提供了一种系统,包括存储指令的存储器和与所述存储器通信的一个或多个处理器。所述一个或多个处理器执行所述指令以进行以下操作:根据与应用程序相关联的多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;根据所述网络架构中多个网络节点的资源指标,生成所述网络节点的资源拓扑模型;使用所述应用程序拓扑模型和所述资源拓扑模型确定将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐。所述推荐标识所述应用程序对象和所述网络节点。所述一个或多个处理器执行所述指令还将所述应用程序对象迁移到由所述推荐标识的所述网络节点。
根据所述第二方面,在所述系统的第一种实现方式中,所述应用程序拓扑模型包括:执行时间矩阵,指示当所述多个应用程序对象中的每个应用程序对象在所述多个网络节点中的对应节点执行时,所述多个应用程序对象中的每个应用程序对象的执行时间;以及数据大小矩阵,指示在所述多个应用程序对象中的至少两个应用程序对象之间传输的数据的大小。
根据所述第二方面或所述第二方面的上述任何一种实现方式,在所述系统的第二种实现方式中,所述资源拓扑模型包括时延矩阵,指示与多个通信链路相关联的时延,其中,每个通信链路将所述多个网络节点中的两个网络节点耦合在一起。所述资源拓扑模型还包括传输速率矩阵,指示与所述多个通信链路相关联的带宽信息。
根据所述第二方面或所述第二方面的上述任何一种实现方式,在所述系统的第三种实现方式中,检索指示用于放置所述多个应用程序对象的优化目标的目标函数。
根据所述第二方面或所述第二方面的上述任何一种实现方式,在所述系统的第四种实现方式中,所述优化目标为以下至少一项:与所述多个应用程序对象的执行时间相关联的应用程序对象耗时;以及与所述多个应用程序对象在所述多个网络节点的对应网络节点上运行时消耗的能量相关联的应用程序对象能耗。
根据所述第二方面或所述第二方面的上述任何一种实现方式,在所述系统的第五种实现方式中,根据所述执行时间矩阵,选择所述多个应用程序对象中的所述应用程序对象进行迁移。
根据所述第二方面或所述第二方面的上述任何一种实现方式,在所述系统的第六种实现方式中,确定所述选择的应用程序对象的多个耗时值,其中,所述耗时值中的每个耗时值指示在所述多个网络节点中的对应节点执行所述选择的应用程序对象时的耗时。
根据所述第二方面或所述第二方面的上述任何一种实现方式,在所述系统的第七种实现方式中,根据所述多个耗时值中的最小耗时值,选择所述多个网络节点中的所述网络节点进行迁移;生成用于将所述应用程序对象从其当前运行的节点迁移到所述选择的网络节点的推荐。
根据本发明的第三方面,提供了一种非瞬时性计算机可读介质,存储用于在网络架构中放置应用程序的多个应用程序对象的指令,其中,当所述指令由一个或多个处理器执行时,使得所述一个或多个处理器执行以下操作。所述操作包括:在所述应用程序运行期间,根据所述多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;根据所述网络架构中多个网络节点的资源指标,生成所述网络节点的资源拓扑模型;使用所述应用程序拓扑模型和所述资源拓扑模型确定将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐。所述推荐标识所述应用程序对象和所述网络节点。所述操作还包括:将所述应用程序对象迁移到由所述推荐标识的所述网络节点。
上述示例中的任一示例可以与上述其它示例中的任何一个或多个示例组合以产生本发明范围内的新实施例。
附图说明
在不一定按比例绘制的附图中,相似的附图标记在不同的视图中表示相似的部件。附图通常示例性地而非限制性地示出了在本文中讨论的各种实施例。
图1为根据一些示例性实施例的与在分布式网络环境中运行的应用程序相关联的应用程序对象的框图。
图2为根据一些示例性实施例的包括与应用程序相关联的多个对象的应用程序拓扑模型的框图。
图3A、图3B、图3C和图3D示出了根据一些示例性实施例的多个网络节点的示例性网络拓扑模型。
图4为根据一些示例性实施例的从多个主机中选择用于运行应用程序的网络主机的流程图。
图5为根据一些示例性实施例的根据目标函数选择生成对象放置推荐的高级框图。
图6为根据一些示例性实施例的用于生成对象放置推荐的系统的框图。
图7为根据一些示例性实施例的可与图6的系统结合使用的模型生成器的框图。
图8A为根据一些示例性实施例的可与图6的系统结合使用的计划生成器的框图。
图8B为根据一些示例性实施例的可由计划生成器执行的关于生成是否迁移应用程序对象的对象迁移推荐的一种方法的流程图。
图8C为根据一些示例性实施例的可由计划生成器执行的关于生成是否迁移应用程序对象的对象迁移推荐的另一种方法的流程图。
图9为根据一些示例性实施例的可与图6的系统结合使用的位置优化器执行的功能的框图。
图10为根据一些示例性实施例的可用于为应用程序对象放置推荐计算应用程序拓扑指标和网络拓扑指标的网络架构的框图。
图11为根据一些示例性实施例的适用于网络架构中应用程序的多个应用程序对象的方法的流程图。
图12为根据一些示例性实施例的可与本文描述的各种设备硬件结合使用的代表性软件架构的框图。
图13为根据一些示例性实施例的实现算法和执行方法的设备的电路的框图。
具体实施方式
首先应理解,尽管下文提供了一个或多个实施例的说明性实现方式,但结合图1至图13描述的所公开的系统和/或方法可使用任何数量的技术来实现,无论该技术是当前已知的还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等效物的完整范围内修改。
以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。为了使本领域技术人员能够实施本发明的主题,对这些实施例进行了充分的描述,并且应理解,在不脱离本发明范围的情况下,可以使用其它实施例且可以在结构、逻辑和电气方面进行更改。因此,以下描述的示例性实施例不应以限制性的意义来理解,且本发明的范围由所附权利要求书界定。
传统的应用程序调度器仅在应用程序提交时执行调度,而没有任何运行期间放置优化(即,在运行期间不迁移应用程序的应用程序对象,以提高效率和网络性能)。此外,传统的应用程序调度器仅确保单个主机(例如,将部署该应用程序的主机)具有足够的资源来运行该应用程序。另外,传统的应用程序调度器不接受用户指定的目标函数来进行运行期间应用程序对象迁移。如本文所使用的,术语“运行期间”指示软件程序正在运行的时间段(例如,与程序相关联的一个或多个应用程序对象正在执行或运行的时间段)。术语“运行期间”包括程序执行后但仍处于休眠(或非激活或低功耗)模式的时间。
本文公开的技术可以用于在运行期间动态调整应用程序对象放置,以最大化用户指定的目标函数(例如,耗时优化、能耗优化、计算资源成本优化等)。本文公开的用于应用程序对象调度和迁移的技术采用(1)模型生成器,为将要部署的目标应用程序构建模型(例如,资源拓扑模型和应用程序拓扑模型);(2)计划生成器,生成用于迁移该目标应用程序的一个或多个应用程序对象的各种对象放置计划;以及(3)位置优化器,选择对象迁移计划并发送(或执行)与该对象迁移计划相关联的应用程序对象迁移指令。
模型生成器使用应用程序和网络资源指标数据生成输出模型:一个模型用于捕获网络资源拓扑,第二个模型用于捕获应用程序拓扑,其中,该应用程序拓扑显示应用程序对象互连关系和对象之间链路的数据请求大小。当单独的对象在每个网络节点上运行时,计划生成器使用模型生成器的模型输出来确定每个应用程序对象的耗时信息(或与用户定义的目标函数相关联的其它指标)。然后,为一个或多个应用程序对象选择最佳节点,并且可以根据耗时信息为该一个或多个应用程序对象生成迁移推荐。
与在应用程序执行之前仅选择单个主机的现有应用程序调度方案不同,使用本文公开的技术可以在运行期间优化一个或多个单独的应用程序对象(以及将此类对象迁移到不同的网络节点)。
图1为根据一些示例性实施例的与在分布式网络环境100中运行的应用程序相关联的应用程序对象的框图。图1示出了应用程序108。该应用程序108可以被配置为在该分布式网络环境100中的一个或多个节点上运行。该分布式网络环境100可以包括,例如,多个移动设备102、多个边缘服务器104和多个下游服务器106。在某些方面,与该应用程序108相关联的不同应用程序模块可以部署在该网络环境100中的一个或多个不同的网络节点上。
该应用程序108可以是图像处理应用程序。该图像处理应用程序可以包括以下应用程序对象:图像对象110,用于获取图像;图像解码对象112,用于解码该图像;人脸检测对象114,用于检测解码后的图像内的人脸;人脸识别对象116,用于识别检测到的人脸;人脸跟踪对象118,用于跟踪识别到的人脸;以及通知发送对象120,用于生成与人脸跟踪相关的一个或多个通知。该应用程序108的一个或多个对象110至120可以采用本文公开的技术部署在该分布式网络环境100中。
网站可靠性工程师(site reliability engineer,SRE)在执行该应用程序108时可能不知道应该将该应用程序对象110至120部署在哪里可以获得最佳性能。应用程序对象可能在大量不可靠的分布式硬件上运行。由于硬件环境可能会动态改变(例如,节点或网络链路可能上线或下线),工作负载模式可能会发生改变,导致最佳应用程序对象放置可能会发生改变。因此,由SRE为应用程序对象作出的静态放置决策可能不是最佳的。本文公开的技术可以用于根据目标函数在分布式网络架构中优化放置应用程序对象(例如,根据应用程序性能优化、能耗优化、应用程序性能和能耗的组合优化或另一目标函数确定对象放置)。
图2为根据一些示例性实施例的包括与应用程序相关联的多个对象的应用程序拓扑模型200的框图。参考图2,该应用程序拓扑模型200可以包括应用程序对象202、204、206、208和210,分别由图顶点V1、V2、V3、V4和V5表示。在某些方面,该应用程序拓扑模型200可以用与应用程序节点相关联的附加信息(例如,对象之间传输的数据的大小)进一步表征和标注。例如,对象V1和V2之间传输的数据的大小表示为S12。图2中示出了剩余应用程序对象之间传输的数据大小的附加标注。
在某些方面,可以在运行期间为每个应用程序对象收集以下信息:该应用程序对象在设备(tdevice)上的执行时间、该应用程序对象在服务器(tserver)上的执行时间、在当前顶点和与其连接的其它顶点之间传输的输入和输出数据的大小的总和(Stotal)(例如,对于与顶点V2相关联的应用程序对象,Stotal=S12+S21+S23+S32+S25+S52)、该应用程序对象在设备(Edevice)上执行时的能耗、该应用程序对象远程(即,不在设备上)(Eremote)执行时的能耗。
在某些方面,将一个或多个应用程序对象202至210移动到不同的网络节点可以提高特定应用程序对象的性能,但可能会降低应用程序的整体系统性能。例如,将应用程序对象204从移动设备移动到边缘服务器可以减少计算时间,但可能会增加(例如,V2和V1之间)数据传输时间。本文公开的技术可以用于在运行期间确定是否可以根据目标函数提高系统性能,并生成用于将一个或多个应用程序对象迁移到两个不同网络节点的对象放置推荐。
传统的应用程序管理技术(例如,其中,服务和应用程序由SRE管理)包括从多个可用网络节点中(例如,根据计算能力和节点上的可用资源)选择单个主机/节点来运行整个应用程序(即,所有应用程序对象都在单个节点上执行)。在这方面,传统的应用程序管理技术不进行运行期间应用程序对象放置优化,也不使用目标函数来评估应用程序节点的当前放置并生成对象迁移和放置的推荐。相比之下,本文公开的技术可以用于动态调整应用程序在运行期间的应用程序对象放置,以便最大化用户指定的目标函数。在这方面,可以动态调整应用程序对象放置,并可以迁移应用程序对象,使得应用程序可以自我调整、进而提高可用性、性能、能效等。
如本文所使用的,术语“节点”包括网络设备或服务器,其中,每个节点包括具有预定义的CPU速率或可用/未使用的CPU容量的处理器。术语“链路”表示两个节点之间的通信路径。链路可以是有线或无线的,可以测量每个链路的往返时间(round-trip time,RTT)和传输速度。
图3A、图3B、图3C和图3D示出了根据一些示例性实施例的多个网络节点的示例性网络拓扑模型。图3A示出了网络拓扑模型300A。该网络拓扑模型300A包括通过单个链路306连接的节点302和304。图3B示出了网络拓扑模型300B。该网络拓扑模型300B包括通过多个链路314连接的节点310和312。图3C示出了网络拓扑模型300C。该网络拓扑模型300C包括通过单个链路326耦合的节点320、322和324。图3D示出了网络拓扑模型300D。该网络拓扑模型300D包括通过多个链路336耦合的节点330、332和334。在某些方面,使用本文公开的技术生成的对象放置推荐可以指示要迁移的应用程序对象、对象将被迁移到的节点以及用于迁移的通信链路(例如,在某些方面,节点通过多个链路连接)。
图4为根据一些示例性实施例的从多个主机中选择用于运行应用程序的网络主机的流程图。参考图4,方法400可以由应用程序调度器(例如,图6中的604)执行,并且可以在接收到用于部署的新应用程序时从操作402开始。在操作404中,定位具有足够资源来运行应用程序的一个或多个主机(例如,网络节点),并生成包括所定位的主机的主机列表。在操作406中,可以确定在操作404中生成的主机列表是否为空。如果主机列表为空,则方法400在操作410处结束。如果主机列表不为空,则在操作408中,可以从主机列表中选择具有足够资源的主机以运行应用程序。在某些方面,应用调度器(例如,图6中的604)可以根据使用本文公开的技术生成的对象放置推荐将与应用程序相关联的应用程序对象放置在单独的主机上。
图5为根据一些示例性实施例的根据目标函数选择生成对象放置推荐的系统500的高级框图。参考图5,系统500可以包括模块504,用于为应用程序(例如,108)生成与该包括多个应用程序对象的应用程序相关联的应用程序拓扑表示,以及模块506,用于为N个网络节点(例如,节点1......N)生成资源拓扑表示。系统500可用于使用目标函数502(例如,在操作508中选择的)来确定应用程序对象510的对象放置推荐516,下文将进一步描述。更具体地,目标函数502可以包括至少一个方程,该至少一个方程采用与模块504生成的应用程序拓扑表示和模块506生成的资源拓扑表示相关联的数据。
在操作510中,可以选择与该应用程序相关联的多个对象中的一个。在某些方面,与该应用程序相关联的对象可以根据耗时和/或能耗(或根据可以在运行期间预定义或可用的其它特征)进行排序。目标函数502可用于生成目标函数指标512......514。例如,假设所选择的应用程序对象510在N个节点中的每个节点上运行,可以生成N个目标函数指标。对象放置推荐516可以根据目标函数指标512......514生成。在某些方面,目标函数选择和应用程序对象选择可以由图6中的系统600的模型生成器模块608或其它模块执行。
图6为根据一些示例性实施例的用于生成对象放置推荐的系统600的框图。参考图6,系统600可以包括调度器604、数据库606、模型生成器模块608、位置优化器模块610、计划生成器模块612和多个主机(或网络节点)616、618......620。
模型生成器模块608可以包括合适的电路、逻辑、接口和/或代码,并且可以用于使用应用程序和网络资源指标数据来生成输出模型628(例如,网络资源拓扑模型和指示应用程序对象互连关系和对象之间链路的数据请求大小的应用程序拓扑模型。
计划生成器模块612可以包括合适的电路、逻辑、接口和/或代码;当单独的对象在每个网络节点上运行时,可以用于使用模型生成器模块608的模型输出(例如,628)来确定每个应用程序对象的耗时信息(或与用户定义的目标函数相关联的其它指标)。可以为一个或多个应用程序对象选择最佳节点,并且可以根据耗时信息为该一个或多个应用程序对象生成迁移推荐。在这方面,计划生成器模块612用于根据由模型生成器模块608生成的输出模型(例如,628)生成各种对象放置计划。
位置优化器模块610可以包括合适的电路、逻辑、接口和/或代码,并且可以用于选择由计划生成器模块612生成的对象放置计划中的一个,其中,该计划可以发送给调度器604,用于执行并在运行期间放置优化应用程序模块。
网络节点616、618......620中的每个网络节点都可以输出对应的资源信息622、624......626(在图6中统称为630),其中,这些资源信息可以发送给调度器604以存储在数据库606中。资源信息622、624......626可以包括对应节点上的可用资源、节点CPU特征、节点可用的网络链路的数量和类型、链路带宽等。在资源信息被存储到数据库606中之后,模块608、610和612可以使用资源信息生成对象放置推荐。
在操作中,应用程序602可以提交给调度器604以在节点616......620中的一个或多个节点上执行。此外,目标函数614可以由模型生成器模块608接收。最初,与应用程序602相关联的应用程序对象可以在单个主机上执行,而模型生成器模块608、计划生成器模块612和位置优化器模块610可以在应用程序运行期间生成一个或多个应用程序对象放置推荐。由于生成了应用程序对象推荐,因此调度器604可以根据该推荐将此类应用程序对象迁移到从节点616......620中选择的不同节点上,从而在运行期间动态更新应用程序对象放置。
图7为根据一些示例性实施例的可与图6的系统结合使用的模型生成器的框图。参考图7,框图700提供了模型生成器模块608的操作的更详细的视图。更具体地,模型生成器模块608可以接收输入的指标数据702和目标函数614。例如,输入的指标数据702可以包括资源信息622、624......626以及应用程序对象相关信息,例如接收到的应用程序602的对象的对象标识、单独的应用程序对象之间的连接、对象之间传输的数据大小等。
在某些方面,输入的指标数据702可以包括与应用程序的每个应用程序对象相关联的顶点状态信息,包括以下状态信息:IsOffloaded标志(如果应用程序对象在本地运行,则此标志可以为0,或如果应用程序对象远程运行,则此标志可以为1);平均能耗(如果该对象在移动设备上本地运行,则为Edevice,如果该对象在远程服务器上远程运行,则为Eremote);平均耗时(如果该对象在移动设备上本地运行,则为tdevice,如果该对象远程运行,则为tremote,其中,如果该对象在远程服务器上运行,则tremote可以基于平均耗时tserver)。远程执行时间可以估计为tremote=tserver+Stotal/R+L,其中,R为节点之间的传输速率,L为节点之间的时延,S为节点之间传输的数据的大小。在某些方面,如果应用程序对象仅在本地设备(而不是服务器)上执行,则可以使用比率tserver/tdevice=cpuserver/cpudevic来估计tserver,反之亦然。在某些方面,与在网络节点上运行的应用程序对象相关联的平均耗时可以使用下面提供的方程(1)确定。
模型生成器模块608可以生成输出704,输出704可以包括多个矩阵(例如,L、R、T和S矩阵),如下所述。输出704可以用于生成与可用网络节点(例如,616......620)相关联的资源拓扑模型706和与应用程序602的应用程序对象相关联的应用程序拓扑模型708。在某些方面,资源拓扑模型706和应用程序拓扑模型708可以由包括多个顶点的图模型表示,如图7所示。
在某些方面,对于给定的n个节点的集合(例如,Nl......Nn)和应用程序拓扑模块708的m个顶点的集合(即,应用程序602的m个应用程序对象),可以用以下矩阵表示模型生成器模块608的输出704:
包括网络节点的数据的输出矩阵:
矩阵其中,Lij为节点Ni和Nj之间的时延(滑动窗口平均并对称);
矩阵其中,Rij为节点Ni和Nj之间的传输速率(滑动窗口平均并对称);以及
矢量cpu=(cpu1,…,cpun),其中,cpui为节点Ni的CPU速率。
包括应用程序对象(例如,图708中的顶点)的数据的输出矩阵:
矩阵其中,Tij为顶点Vi在节点Nj上运行时的执行时间(滑动窗口平均)。如果顶点Vk在一个节点上的执行时间已知,则在所有节点上的执行时间可以根据比率Tki:Tkj=cpui:cpuj确定。
矩阵其中,Sij为从顶点Vi到顶点Vj传输的数据的大小(滑动窗口平均但非对称)。
矢量pos=(pos1,…,posm),其中,posi为顶点Vi运行的节点的ID。在某些方面,应用程序拓扑模型的所有顶点(即,所有对象)都从节点N1开始运行,即,对于所有i,posi=1。
矢量tcur=(t1 cur,…,tm cur),其中,ti cur为顶点Vi的当前耗时。在某些方面,所有顶点都以ti cur=Ti1开始。
在这方面,L和R矩阵与资源拓扑模型706相关联,T和S矩阵与应用程序拓扑模型708相关联。
图8A为根据一些示例性实施例的可与图6的系统结合使用的计划生成器的框图800。参考图8A,应用程序拓扑模型708和资源拓扑模型706(由来自模型生成器模块608的输出704的矩阵L、R、T和S表示)可以作为输入发送给计划生成器模块612。此外,计划生成器模块612还可以接收目标函数614作为输入。
图8B为根据一些示例性实施例的可由计划生成器模块612执行的关于生成是否迁移应用程序对象的对象迁移推荐802的一种方法810的流程图。方法810包括操作812、814和816,这些操作可以由计划生成器模块612以预定的时间间隔周期性地执行。
在操作812中,可以选择候选顶点(例如,与应用程序拓扑表示中的应用程序对象相对应的顶点),以评估是否迁移与这些顶点相对应的应用程序对象。例如,计划生成器模块612可以根据当前应用程序对象状态信息(例如,指标702)选择候选顶点。在某些方面,可以在操作812中选择耗时排序为前三的应用程序对象和能耗排序为前三的应用程序对象。
在操作814中,可以为每个候选顶点确定卸载(offloading)分数。例如,对于每个候选对象,计划生成器模块612可以用于确定与将应用程序对象卸载到远程服务器或移动回移动设备相关联的卸载分数。例如,如果候选对象在移动设备上本地运行,则卸载分数为wtdevice/tremote+(1–w)Edevice/Eremote。如果候选应用程序对象在远程运行,则卸载分数为wtremote/tdevice+(1–w)Eremote/Edevice,其中,0≤w≤1。
在操作816中,可以根据所确定的卸载分数,将与候选顶点相关联的一个或多个应用程序对象迁移到不同的网络节点。例如,可以迁移卸载分数大于阈值(即,如果卸载分数scoremax>a,其中,a的阈值可以设置为大于1的数字(例如,1.5))的应用程序对象。
在一个示例性实施例中,目标函数614可以由以下用于测量顶点Vk的耗时的方程表示:
其中,在某些方面,如果当前顶点(即应用程序对象)及其相邻顶点在不同节点上运行,上述方程(1)可以用于确定执行时间和状态/数据传输所需的时间。在这方面,由上述方程(1)表示的目标函数614主要用于执行时间效率方面。在其它方面,公式(1)的不同变体可以用作目标函数,其中,可以使用与在给定节点上运行应用程序对象相关联的能耗数据或成本来代替T矩阵数据。使用输入指标数据702的其它目标函数也可以由计划生成器模块612使用,以输出对象迁移推荐802。在某些方面,对象迁移推荐802可以包括用于迁移与应用程序相关联的多个对象的推荐。
图8C为根据一些示例性实施例的可由计划生成器执行的关于生成是否迁移应用程序对象的对象迁移推荐的另一种方法的流程图。方法820包括操作822、824、826和828,这些操作可以由计划生成器模块612以预定的时间间隔周期性地执行,以生成应用程序对象迁移推荐802。
在操作822中,候选应用程序对象可以从与应用程序相关联的多个应用程序对象中选择。例如,根据当前顶点状态(例如,耗时信息),可以选择候选应用程序对象进行卸载(例如,可以选择应用程序拓扑模型中耗时排序为前三的远程顶点)。
在操作824中,可以确定用于卸载的最佳节点。例如,对于每个候选应用程序对象Vc,可以根据以下技术确定将该对象卸载到的最佳节点:
(a)对于每个节点Np,如果顶点Vc被移动到该节点,计划生成器612可以按照以下公式估计执行时间:
(b)卸载应用程序对象的最佳节点是执行时间最小的网络节点。
(c)计划生成器模块612可以进一步计算以下分数指标:scorec=tc cur–tc move,其可用于操作826中。
在操作826中,可以(从候选应用程序对象中)选择最佳应用程序对象进行卸载。例如,计划生成器模块可以从候选应用程序对象中选择最佳应用程序对象作为具有最大分数scoremax=max scorec的对象。Vmax可以用于指示要卸载的顶点(即应用程序对象),Nmax可以用于指示要卸载到的节点。
在操作828中,如果最大分数大于阈值,即,scoremax>α,则可以生成对象迁移推荐802,以指示将顶点Vmax移动/迁移到节点Nmax,其中,α的值可以设置为大于零的整数。在卸载顶点方面,可以更新矢量[Vmax]=Nmax,也可以使用方程(1)更新顶点Vmax及其相邻顶点的tcur。
在一个示例性实施例中,位置优化器610可以用于与调度器604和计划生成器模块612交互,以便将对象迁移推荐802从计划生成器模块612发送到调度器604执行。
图9为根据一些示例性实施例的可与图6的系统结合使用的位置优化器610执行的功能900的框图。参考图9,当位置优化器模块610可以周期性地从休眠模式唤醒时,由位置优化器模块610执行的功能900可以从操作902开始。在操作904中,位置优化器模块610可以确定是否存在由计划生成器模块612生成的任何待定对象迁移计划。如果存在待定对象迁移推荐,则位置优化器模块610可以返回到低功耗或休眠模式,直到下一次周期性唤醒。如果不存在待定对象迁移推荐,则位置优化器模块610在操作906中可以调用或从计划生成器模块612请求新的对象迁移推荐。
在操作908中,位置优化器模块610可以确定来自计划生成器模块612的新的对象迁移推荐802是否最佳。例如,可以使用如结合图8B和图8C所示的最大卸载分数和阈值确定新的对象迁移推荐是否最佳。如果新的对象迁移推荐802不是最佳的,该处理过程可以返回到操作906。如果新的对象迁移推荐802是最佳的,则当位置优化器模块610可以将新的推荐通知给调度器604以便调度器可以继续执行该迁移推荐(例如,将应用程序对象迁移到新的网络节点,其中,该对象和节点由该推荐指示)时,该处理过程继续执行操作910。
在一个示例性实施例中,位置优化器模块610可以在检测到一个或多个网络变化时执行从操作904开始的功能,以代替操作902中的周期性唤醒。例如,位置优化器模块610可以在检测到网络可用性变化、与一个或多个网络节点相关的电源可用性变化、网络设备功耗变化等时从操作904开始执行。
图10是一些示例实施例提供的网络架构1000的框图,所述网络架构1000可出于应用程序对象放置推荐的目的,计算应用程序拓扑指标和网络拓扑指标。参考图10,网络架构1000可以包括节点1002、1004、1006、1008和1010,节点1002、1004、1006、1008和1010可用于托管一个或多个应用程序对象。网络架构1000还可以包括对象管理系统(objectmanagement system,OMS)节点1030,所述对象管理系统节点可用作架构1000内所有应用程序对象和节点的注册表。OMS节点1030还存储与对象和节点相关联的关系信息,例如应用程序拓扑模型和资源拓扑模型。
网络架构1000还可以包括与一个或多个应用程序对象相关联的多个部署管理器(deployment manager,DM),例如DM 1012、1014、1016、1018、1020、1022、1024、1026和1028。在某些方面,DM可以包括一个或多个客户端DM(例如,并置于客户端计算机上,并用于拦截从客户端到服务器的所有呼叫)、一个或多个服务器DM(例如,并置于服务器计算机上,并通过该服务器计算机路由所有客户端呼叫)以及一个或多个组DM(例如,与注册表节点1030并置于同一计算机上)。对于复制的对象,OMS节点1030可用于作为一个整体管理副本组(例如,监控副本组的健康状态,并在必要时替换崩溃的副本)。如图10所示,客户端DM包括1012、1014、1020和1022。服务器DM包括1016、1018、1024和1026。DM 1028是一个组DM。
如本文所使用的,术语“部署管理器”可以表示用于执行以下模块中的一个或多个的功能的模块:调度器604、模型生成器模块608、计划生成器模块612和位置优化器模块610,如结合图6所讨论。
在某些方面,架构1000中的网络节点可用于处理远程过程调用(RemoteProcedure Call,RPC)。过程调用可以包括请求和响应。在某些方面,onRPC()是当客户端和服务器之间拦截RPC时,在客户端DM和服务器DM中触发的过程/方法(这些节点接收有关过程调用的所有信息(过程名称、参数等))。
在一个示例实施例中,可以使用本文公开的一种或多种技术获得架构1000内节点的以下信息:
(1)节点上每个对象的执行时间可以在服务器DM(1016、1018、1024和1026)上通过测量onRPC()过程/方法中的经过时间来测量,并可能减去在客户端DM测量的经过的下游时间(例如,如下面第(3)点所述)。
(2)客户端链路的时延和带宽:
(a)可以在客户端DM 1012和1014处测量(并且转发到服务器DM或直接发送OMS节点1030)。
(b)可以在服务器DM 1016和1018处估计(例如,通过在RPC调用中携载V(客户端)处的本地时间,并在RPC到达时从V(服务器)处的本地时间中减去该时延和带宽)。
(3)到下游节点1008和1010的时延、带宽和执行时间:
(a)时延、传输时间和执行时间的总和可以在客户端DM 1020和1022(在onRPC()中)测量。
(b)执行时间可以在服务器DM 1024和1026处测量,并与RPC响应一起返回到客户端DM 1020和1022。
(c)通过在客户端DM 1020和1022处减去时延和传输时间计算得出。
在这方面,生成对象放置推荐所需的所有数据都可以由节点1006周围的DM测量或计算、平均和存储在该节点上。
在某些方面,出于健康检查的原因,节点1006上的内核服务器可以定期与OMS节点1030签入以报告其健康状况。OMS节点1030包括组DM 1028,因此,根据上述技术在节点1006上收集的数据可以在定期节点健康报告上携载到OMS节点1030,组DM 1028正在所述OMS节点1030上运行。然后,组DM 1028可以为对象运行代码卸载算法,并执行所需的对象迁移。
在某些方面,并结合图6的系统600,还可以包括以下模块(图6中未示出)用于执行与对象放置推荐相关的功能:收集时延和带宽数据的网络分析器;收集CPU速率数据的节点(机器)分析器;收集执行时间和数据大小数据的应用程序(对象)分析器,用于传输应用程序对象的状态;统计模块,用于收集与之前对象重新定位相关的统计数据(例如,对象被重新定位的频率、哪些节点被用于托管对象等);以及决策模块。
在某些方面,网络分析器、节点分析器和应用程序分析器可以用作系统600内执行指标收集的模块。更具体地,网络分析器、节点分析器和应用程序分析器可用于收集指标数据并将收集的指标数据保存在数据库606中。收集的指标数据可由模型生成器模块608用于生成资源拓扑模型和应用程序拓扑模型。
在某些方面,所有节点之间的时延和带宽的初始值由配置文件或使用心跳调用提供。在某些方面,可以组合一个或多个分析器,RPC调用可以用于测量时延和吞吐量。
在某些方面,执行时间可以由服务器DM测量,收集的数据可以包括{V_current,执行时间,位置}。数据大小、带宽和时延可以由客户端DM测量,收集的数据可以包括{V_current,V_downstream,Location_current,Location_downstream,DataSize_out,DataSize_in,时延,带宽}。
在某些方面,出于决策目的,所有收集的数据都可以传输到OMS节点,并可以存储计算平均值所需的最小数据量。
在某些方面,统计模块可以是模型生成器模块608内的模块。统计模块可用于从分析器接收数据并更新输入数据矩阵。当统计模块接收到元组{V1,V2,Location1,Location2,DataSize_out,DataSize_in,时延,带宽}时,所述统计模块可以通过计算新的平均值,更新状态传输SV1,V2和SV2,V1、时延LLocation1,Location2和带宽RLLocation1,Location2。当统计模块接收到元组{V,T,位置}时,可以用于使用比率Timeki:Timekj=cpui:cpuj估计其它节点上的执行时间,并通过计算新的平均值来更新一行矩阵T。
在某些方面,数据可以根据以下功能进行平均:
(1)通过使用简单移动平均法(simple moving average,SMA)(只能存储n条最新的数据记录,其中n表示窗口宽度)。当达到新记录Dnew时,SMAnew=SMAcurrent+Dnew/n–Doldest/n,可以从存储的记录中删除Doldest,并可以添加Dnew。
(2)在某些方面,可以使用加权移动平均法(weighted moving average,WMA)逐步消除旧事件影响的方面(可能只需要存储n条最新数据记录,其中n表示窗口宽度)。最新事件的权重为n,次新事件的权重为-n–1,以此类推,最后减小为1。
WMA=[nDlatest+(n–1)Dsecond latest+...+Doldest]/[n+(n–1)+...+1],其中,n+(n–1)+...+1=n(n+l)/2。总和=Dlatest+Dsecond latest+...+Doldest。当到达新记录Dnew时,可以使用以下公式更新平均值:Totalnew=Totalcurrent+Dnew–Doldest,Numeratornew=Numeratorcurrent+nDnew–Totalcurrent,WMAnew=Numeratornew/[n+(n–1)+...+1]从存储的记录中删除Doldest,并添加Dnew。
(3)在某些方面,决策模块的功能可以由计划生成器模块612和位置优化器模块610执行。决策模块可用于:使用由统计模块产生的数据;周期性地更新每个应用程序对象的当前时间消耗;检查三个最耗时的节点;做出对象卸载决策。换句话说,决策模块的输出可以与计划生成器模块612生成的对象放置推荐相同。
图11是一些示例实施例提供的适用于网络架构中应用程序的多个应用程序对象的方法流程图。方法1100包括操作1102、1104、1106和1108。作为示例而非限制,描述方法1100由设备1300使用图13的模块1360、1365和1370或结合图6至图8A所示的任何模块来执行。
在操作1102中,根据多个应用程序对象的应用程序指标,在应用程序的运行期间生成应用程序(例如,602)的应用程序拓扑模型(例如,708)。例如,模型生成器模块608根据输入指标数据702,生成应用程序拓扑模型708。在操作1104中,根据网络架构中多个网络节点的资源指标,生成网络节点的资源拓扑模型。例如,模型生成器模块608还根据输入指标数据702,生成资源拓扑模型706。在操作1106中,使用应用程序拓扑模型和资源拓扑模型确定将多个应用程序对象中的应用程序对象迁移到多个网络节点中的网络节点的推荐。推荐可以标识应用程序对象和网络节点。例如,计划生成器模块612根据应用程序拓扑模型708和资源拓扑模型706(例如,如结合图8A至8C描述的)生成对象迁移推荐802,其中,推荐802标识应用程序对象和该对象可以迁移到的节点。在操作1108中,应用程序对象可以迁移到由推荐标识的网络节点。例如,对象迁移推荐802可以被传送到调度器604,并且调度器604可以使应用程序对象迁移到由推荐802标识的网络节点。
图12为一些示例实施例提供的代表性软件架构1200的框图,该代表性软件架构1200可以与本文描述的各种设备硬件结合使用。图12仅仅是软件架构1202的非限制性示例,应理解,可以实现许多其它架构来有利于实现本文所描述的功能。软件架构1202可以在图13的设备1300等硬件中执行,该硬件包括处理器1305、内存1310、存储器1315和1320以及I/O组件1325和1330。示出了代表性硬件层1204,该硬件层1204可以表示图13的设备1300等。代表性硬件层1204包括具有相关联的可执行指令1208的一个或多个处理单元1206。可执行指令1208表示软件架构1202的可执行指令,包括实现图1至图11的方法、模块等。硬件层1204还包括内存和/或存储器模块1210,所述内存和/或存储器模块1210也具有可执行指令1208。硬件层1204还可以包括其它硬件1212,所述其它硬件1212表示硬件层1204的任何其它硬件,如图示为设备1300的一部分的其它硬件。
在图12的示例性架构中,软件架构1202可以概念化为各层的堆栈,其中每个层具有特定功能。例如,软件架构1202可以包括操作系统1214、库1216、框架/中间件1218、应用程序1220和表示层1244等层。在操作上,应用程序1220和/或层内的其它组件可以通过软件堆栈调用应用程序编程接口(application programming interface,API)调用1224,并响应API调用1224接收以消息1226示出的响应、返回值等。图12所示的层实际是代表性的,并非所有软件架构1202都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件1218,而其它操作系统可以提供这种层。其它软件结构可以包括附加的或不同的层。
操作系统1214可以管理硬件资源并提供公共服务。例如,操作系统1214可以包括内核1228、服务1230、驱动器1232、计划生成器模块1260、位置优化器模块1265和模型生成器模块1270。内核1228可以用作硬件与其它软件层之间的抽象层。例如,内核1228可以负责内存管理、处理器管理(例如,调度)、组件管理、组网、安全设置等。服务1230可以为其它软件层提供其它公共服务。驱动器1232可以负责控制底层硬件或与底层硬件连接。例如,根据硬件配置,驱动器1232可以包括显示器驱动器、摄像机驱动器、蓝牙驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(Universal Serial Bus,USB)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
在某些方面,计划生成器模块1260、位置优化器模块1265和模型生成器模块1270可以执行类似于由计划生成器模块612、位置优化器模块610和模型生成器模块608执行的功能的功能,分别如结合图1至图9所述。
库1216可提供可供应用程序1220和/或其它组件和/或层使用的公共基础设施。库1216的功能通常是使其它软件模块可以以比与底层操作系统1214的功能(例如,内核1228、服务1230、驱动器1232和/或模块1260至1270)直接连接更容易的方式执行任务。库1216可以包括系统库1234(例如,C标准库),所述系统库1234可以提供如内存分配功能、字符串操作功能、数学功能等功能。此外,库1216可以包括API库1236,如媒体库(例如,支持各种媒体格式(如MPEG4、H.264、MP3、AAC、AMR、JPG PNG)的呈现和操作的库)、图形库(例如,可用于在显示器上呈现2D和3D图形内容的OpenGL框架)、数据库(例如,可以提供各种关系数据库功能的SQLite)、网页库(例如,可以提供网页浏览功能的WebKit)等。库1216还可以包括多种其它库1238,以向应用程序1220和其它软件组件/模块提供许多其它API。
框架/中间件1218(有时也称为中间件)可以提供可供应用程序1220和/或其它软件组件/模块使用的高级公共基础设施。例如,框架/中间件1218可提供各种图形用户界面(graphic user interface,GUI)功能、高级资源管理、高级位置服务等。框架/中间件1218可以提供可供应用程序1220和/或其它软件组件/模块使用的各种其它API,其中一些API可以是特定操作系统814或平台专用的。
应用程序1220包括内置应用程序1240和/或第三方应用程序1242。代表性内置应用程序1240的示例可以包括但不限于联系人应用程序、浏览器应用程序、阅读器应用程序、定位应用程序、媒体应用程序、消息应用程序和/或游戏应用程序。第三方应用程序1242可以包括任何内置应用程序1240以及各种其它应用程序。在具体示例中,第三方应用程序1242(例如,由除特定平台的供应商以外的实体使用AndroidTM或iOSTM软件开发工具包(software development kit,SDK)开发的应用程序)可以是在如iOSTM、AndroidTM、 Phone等移动操作系统或其它移动操作系统上运行的移动软件。在该示例中,第三方应用程序1242可以调用由移动操作系统(如操作系统1214)提供的API调用1224,以便有利于实现本文描述的功能。
应用程序1220可以利用内置操作系统功能(例如,内核1228、服务1230、驱动器1232和/或模块1260至1270)、库(例如,系统库1234、API库1236和其它库1238)以及框架/中间件1218创建用户界面,从而与系统用户交互。或者或另外,在一些系统中,可以通过表示层(如表示层1244)与用户进行交互。在这些系统中,应用程序/模块“逻辑”可以和与用户交互的应用程序/模块的各方面分开。
某些软件架构使用虚拟机。在图12的示例中,虚拟机由虚拟机1248示出。虚拟机创建软件环境,在软件环境中,应用程序/模块可以如同在硬件机器(例如,图9的设备900)中执行一样。虚拟机1248由主机操作系统(操作系统1214)托管,并且通常(尽管并不总是)具有虚拟机监控器1246。该虚拟机监控器1246用于管理虚拟机1248的操作以及与主机操作系统(即操作系统1214)的连接。软件架构1202在操作系统1250、库1252、框架/中间件1254、应用程序1256和/或表示层1258等虚拟机1248内执行。在虚拟机1248内执行的这些软件架构层可以与前述对应层相同,也可以不同。
图13为根据一些示例性实施例的实现算法和执行方法的设备的电路的框图。在各实施例中不需要使用所有组件。例如,客户端、服务器和基于云的网络设备可以各自使用不同的组件集合,或者在服务器中,例如,可以使用更大的存储设备。
以计算机1300形式存在的一个示例性计算设备(也称为计算设备1300、计算机系统1300或计算机1300)可以包括处理器1305、内存/存储器1310、可移动存储器1315、不可移动存储器1320、输入接口1325、输出接口1330和通信接口1335,均通过总线1340连接。尽管示例性计算设备被描述为计算机1300,但是计算设备在不同实施例中可以表现为不同的形式。
内存/存储器1310可以包括易失性存储器1345和非易失性存储器1350,并且可以存储程序1355。计算机1300可以包括或可以访问包括各种计算机可读介质(例如易失性存储器1345、非易失性存储器1350、可移动存储器1315以及不可移动存储器1320)的计算环境。计算机存储器包括随机存取存储器(random access memory,RAM)、只读存储器(readonly memory,ROM)、可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM)和电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)、闪存或其它存储技术、光盘只读存储器(compact disc read-only memory,CDROM)、数字通用磁盘(digital versatile disk,DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁存储设备,或能够存储计算机可读指令的任何其它介质。
存储在计算机可读介质中的计算机可读指令(例如,存储在内存1310中的程序1355)可由计算机1300的处理器1305执行。硬盘驱动器、CD-ROM和RAM是包括非瞬时性计算机可读介质(例如,存储设备)的物品的一些示例。由于载波过于短暂,因此术语“计算机可读介质”和“存储设备”不包括载波。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应理解,软件可以安装在计算机中并可以随计算机一同出售。或者,可以获得软件并将软件加载到计算机中,包括通过物理介质或分布式系统获得软件,例如,包括从软件创作者拥有的服务器或从非软件创作者拥有但被软件创作者使用的服务器获得软件。例如,软件可以存储在服务器上,以便通过互联网分配。如本文所使用的,术语“计算机可读介质”和“机器可读介质”是可互换的。
程序1355可以使一个或多个模块执行与在网络架构中放置应用程序的多个应用程序对象相关的功能。例如,程序1355可以包括计划生成器模块1360、位置优化器模块1365和模型生成器模块1370。计划生成器模块1360、位置优化器模块1365和模型生成器模块1370可以分别与如结合图6所描述的计划生成器模块612、位置优化器模块610和模型生成器模块608相同(并执行本文描述的相同功能)。
本文描述的任何一个或多个模块可以使用硬件(例如,机器的处理器、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或其任何合适的组合)来实现。此外,这些模块中的任何两个或多个模块可以组合成单个模块,并且本文描述的单个模块的功能可以细分给多个模块执行。另外,根据各种示例性实施例,本文描述为在单个机器、数据库或设备内实现的模块可以跨多个机器、数据库或设备分布。
在某些方面,模块1360至1370中的一个或多个模块可以集成为单个模块,执行集成模块的相应功能。
虽然上面已经详细描述了一些实施例,但还可以进行其它修改。例如,图中所示的逻辑流程不需要按照所示的特定顺序或先后顺序来获得理想的结果。可以在所描述的流程中提供其它步骤,或可以从所描述的流程中删除步骤,并且可以将其它组件添加到所描述的系统中或从所描述的系统中删除。其它实施例可以包括在以下权利要求的范围内。
还应理解,包括一个或多个计算机可执行指令的软件可以安装在与本发明一致的一个或多个计算设备中并与计算机设备一起销售,其中,所述一个或多个计算机可执行指令有助于执行上文结合本发明的任何一个或所有步骤描述的处理和操作。或者,可以获得软件并将软件加载到一个或多个计算设备中,包括通过物理介质或分布式系统获得软件,例如,包括从软件创作者拥有的服务器或从非软件创作者拥有但被软件创作者使用的服务器获得软件。例如,软件可以存储在服务器上,以便通过互联网分配。
此外,本领域技术人员将理解,本发明在应用中并不限于具体实施方式中所描述的或附图中示出的部件的结构和排列的细节。本文的实施例可以是其它实施例,并且能够以各种方式实践或执行。此外,应理解,本文使用的措辞和术语是为了描述的目的,不应被视为限制。本文使用“包括”、“包含”或“具有”及其变体,旨在包括其后列出的项目及其等效物以及附加项目。除非另有限制,术语“连接”、“耦合”、“安装”及其变体在本文中的用法应广义地理解,包括直接和间接连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。另外,上、下、底部和顶部等术语是相对的,用于说明而非限制。
所示实施例采用的示意性设备、系统和方法的组件可以至少部分地在数字电子电路、模拟电子电路或计算机硬件、固件、软件或其组合中实现。这些组件可以,例如,实现为计算机程序产品如有形地体现在信息载体中的计算机程序、程序代码或计算机指令,或在机器可读存储设备中实现,由数据处理装置,如可编程处理器、计算机或多台计算机执行或控制数据处理装置,如可编程处理器、计算机或多台计算机的操作。
计算机程序可以以任何形式的编程语言编写,包括编译或解释的语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其它适合在计算环境中使用的单元。计算机程序可以部署在一台计算机上或一个站点的多台计算机上执行,也可以分布在多个站点上,并通过通信网络互连。此外,用于实现本文描述的技术的功能程序、代码和代码段可以容易地被本文描述的技术所属的领域的编程人员视为包括在权利要求书的范围内。与示意性实施例相关联的方法步骤可以由一个或多个可编程处理器执行,该处理器执行计算机程序、代码或指令,以(例如,通过操作输入数据和/或生成输出)执行功能。方法步骤也可以由用于执行方法的装置可以实现为的专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)执行。
结合本文公开的实施例描述的各种示意性逻辑块、模块和电路可以通过设计用于执行本文所述功能的通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其它可编程逻辑器件、离散门或晶体管逻辑、分立硬件组件、或其任何组合实现或执行。通用处理器可以是微处理器,但可替代地,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器的组合、一个或多个微处理器与DSP核的组合,或任何其它此类配置。
适用于执行计算机程序的处理器,例如,包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个处理器。通常,处理器从只读存储器或随机存取存储器或两者接收指令和数据。计算机的所需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还包括,或可操作地耦合以从一个或多个用于存储数据的大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或向一个或多个大容量存储设备传输数据。适合体现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,例如,包括半导体存储设备,例如,电可编程只读存储器或ROM(electricallyprogrammable read-only memory,EPROM),电可擦除可编程ROM(electrically erasableprogrammable ROM,EEPROM)、闪存设备和数据存储磁盘(例如,磁盘、内部硬盘或可移动磁盘、磁光盘、CD-ROM和DVD-ROM磁盘)。处理器和存储器可以由专用逻辑电路补充,或集成在专用逻辑电路中。
本领域技术人员理解,信息和信号可以使用各种不同技术中的任何一种来表示。例如,在上述描述中可以参考的数据、指令、命令、信息、信号、比特、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任何组合表示。
如本文所使用的,“机器可读介质”(或“计算机可读介质”)是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其它类型的存储器(例如,可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EEPROM))和/或其任何合适的组合。术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应理解为包括能够存储由一个或多个处理器1305执行的指令的任何介质或多个介质的组合,使得当指令由一个或多个处理器1305执行时,使一个或多个处理器1305执行本文描述的任何一个或多个方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的基于“云”的存储系统或存储网络。本文使用的术语“机器可读介质”不包括信号本身。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。显示或论述为相互耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明范围的情况下可以进行本发明的各种修改和组合。例如,其它组件可以添加到所描述的系统中,或从所描述的系统中删除。说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且旨在包含本发明范围内的任何和所有修改、变体、组合或均等物。其它方面可以包括在以下权利要求的范围内。
Claims (20)
1.一种用于在网络架构中放置应用程序的多个应用程序对象的计算机实现的方法,其特征在于,所述方法包括:
在所述应用程序运行期间,根据所述多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;
根据所述网络架构中多个网络节点的资源指标,生成所述多个网络节点的资源拓扑模型;
使用所述应用程序拓扑模型和所述资源拓扑模型确定将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐,其中,所述推荐标识所述应用程序对象和所述网络节点;以及
将所述应用程序对象迁移到由所述推荐标识的所述网络节点;
其中,所述应用程序拓扑模型包括执行时间矩阵,所述执行时间矩阵用于指示当所述多个应用程序对象中的每个应用程序对象在所述多个网络节点中的对应节点执行时,所述多个应用程序对象中的每个应用程序对象的执行时间。
2.根据权利要求1所述的计算机实现的方法,其特征在于,所述应用程序拓扑模型还包括:
数据大小矩阵,指示在所述多个应用程序对象中的至少两个应用程序对象之间传输的数据的大小。
3.根据权利要求2所述的计算机实现的方法,其特征在于,所述资源拓扑模型包括:
时延矩阵,指示与多个通信链路相关联的时延,其中,每个通信链路将所述多个网络节点中的两个网络节点耦合在一起;以及
传输速率矩阵,指示与所述多个通信链路相关联的带宽信息。
4.根据权利要求3所述的计算机实现的方法,其特征在于,还包括:
检索指示用于放置所述多个应用程序对象的优化目标的目标函数。
5.根据权利要求4所述的计算机实现的方法,其特征在于,所述优化目标为以下至少一项:
与所述多个应用程序对象的执行时间相关联的应用程序对象耗时;以及
与所述多个应用程序对象在所述多个网络节点的对应网络节点上运行时消耗的能量相关联的应用程序对象能耗。
6.根据权利要求3所述的计算机实现的方法,其特征在于,还包括:
根据所述执行时间矩阵,选择所述多个应用程序对象中的所述应用程序对象。
7.根据权利要求6所述的计算机实现的方法,其特征在于,还包括:
确定所述选择的应用程序对象的多个耗时值,其中,所述耗时值中的每个耗时值指示在所述多个网络节点中的对应节点执行所述选择的应用程序对象时的耗时。
8.根据权利要求7所述的计算机实现的方法,其特征在于,还包括:
根据所述多个耗时值中的最小耗时值,选择所述多个网络节点中的所述网络节点进行迁移;以及
生成用于将所述应用程序对象从其当前运行的节点迁移到所述选择的网络节点的推荐。
9.根据权利要求1所述的计算机实现的方法,其特征在于,还包括:
检测与所述网络架构中的一个或多个网络节点相关联的网络配置变化。
10.根据权利要求9所述的计算机实现的方法,其特征在于,还包括:
根据所述检测到的网络配置变化,为所述应用程序生成更新后的应用程序拓扑模型和生成所述多个网络节点的更新后的资源拓扑模型;以及
根据所述更新后的应用程序拓扑模型和所述更新后的资源拓扑模型,提供用于迁移所述应用程序对象的更新后的推荐。
11.根据权利要求9所述的计算机实现的方法,其特征在于,所述网络配置变化包括以下至少一项:
所述网络架构中的所述多个网络节点中的至少网络节点的网络可用性变化和功耗配置变化。
12.一种系统,其特征在于,包括:
存储指令的存储器;以及
与所述存储器通信的一个或多个处理器,其中,所述一个或多个处理器执行所述指令以进行以下操作:
根据与应用程序相关联的多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;
根据网络架构中多个网络节点的资源指标,生成所述多个网络节点的资源拓扑模型;
使用所述应用程序拓扑模型和所述资源拓扑模型确定将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐,其中,所述推荐标识所述应用程序对象和所述网络节点;以及
将所述应用程序对象迁移到由所述推荐标识的所述网络节点;
其中,所述应用程序拓扑模型包括执行时间矩阵,所述执行时间矩阵用于指示当所述多个应用程序对象中的每个应用程序对象在所述多个网络节点中的对应节点执行时,所述多个应用程序对象中的每个应用程序对象的执行时间。
13.根据权利要求12所述的系统,其特征在于,所述应用程序拓扑模型还包括:
数据大小矩阵,指示在所述多个应用程序对象中的至少两个应用程序对象之间传输的数据的大小。
14.根据权利要求13所述的系统,其特征在于,所述资源拓扑模型包括:
时延矩阵,指示与多个通信链路相关联的时延,其中,每个通信链路将所述多个网络节点中的两个网络节点耦合在一起;以及
传输速率矩阵,指示与所述多个通信链路相关联的带宽信息。
15.根据权利要求14所述的系统,其特征在于,所述一个或多个处理器执行所述指令以进行以下操作:
检索指示用于放置所述多个应用程序对象的优化目标的目标函数。
16.根据权利要求15所述的系统,其特征在于,所述优化目标为以下至少一项:
与所述多个应用程序对象的执行时间相关联的应用程序对象耗时;以及
与所述多个应用程序对象在所述多个网络节点的对应网络节点上运行时消耗的能量相关联的应用程序对象能耗。
17.根据权利要求14所述的系统,其特征在于,所述一个或多个处理器执行所述指令以进行以下操作:
根据所述执行时间矩阵,选择所述多个应用程序对象中的所述应用程序对象进行迁移。
18.根据权利要求17所述的系统,其特征在于,所述一个或多个处理器执行所述指令以进行以下操作:
确定所述选择的应用程序对象的多个耗时值,其中,所述耗时值中的每个耗时值指示在所述多个网络节点中的对应节点执行所述选择的应用程序对象时的耗时。
19.根据权利要求18所述的系统,其特征在于,所述一个或多个处理器执行所述指令以进行以下操作:
根据所述多个耗时值中的最小耗时值,选择所述多个网络节点中的所述网络节点进行迁移;以及
生成用于将所述应用程序对象从其当前运行的节点迁移到所述选择的网络节点的推荐。
20.一种非瞬时性计算机可读介质,其特征在于,存储用于在网络架构中放置应用程序的多个应用程序对象的计算机指令,其中,当所述指令由一个或多个处理器执行时,使得所述一个或多个处理器执行以下步骤:
在所述应用程序运行期间,根据所述多个应用程序对象的应用程序指标,为所述应用程序生成应用程序拓扑模型;
根据所述网络架构中多个网络节点的资源指标,生成所述多个网络节点的资源拓扑模型;
使用所述应用程序拓扑模型和所述资源拓扑模型确定将所述多个应用程序对象中的应用程序对象迁移到所述多个网络节点中的网络节点的推荐,其中,所述推荐标识所述应用程序对象和所述网络节点;以及
将所述应用程序对象迁移到由所述推荐标识的所述网络节点;
其中,所述应用程序拓扑模型包括执行时间矩阵,所述执行时间矩阵用于指示当所述多个应用程序对象中的每个应用程序对象在所述多个网络节点中的对应节点执行时,所述多个应用程序对象中的每个应用程序对象的执行时间。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862749842P | 2018-10-24 | 2018-10-24 | |
US62/749,842 | 2018-10-24 | ||
US201862782034P | 2018-12-19 | 2018-12-19 | |
US62/782,034 | 2018-12-19 | ||
PCT/CN2019/083341 WO2020082702A1 (en) | 2018-10-24 | 2019-04-19 | Objective driven dynamic object placement optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113383319A CN113383319A (zh) | 2021-09-10 |
CN113383319B true CN113383319B (zh) | 2024-05-03 |
Family
ID=70330789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980070665.0A Active CN113383319B (zh) | 2018-10-24 | 2019-04-19 | 目标驱动的动态对象放置优化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11671317B2 (zh) |
CN (1) | CN113383319B (zh) |
WO (1) | WO2020082702A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220413987A1 (en) * | 2021-06-28 | 2022-12-29 | Dell Products L.P. | System and method for accelerator-centric workload placement |
WO2024032239A1 (zh) * | 2022-08-12 | 2024-02-15 | 华为云计算技术有限公司 | 应用调度方法、云服务平台以及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159736A (zh) * | 2015-10-23 | 2015-12-16 | 武汉大学 | 一种支持性能分析的SaaS软件部署方案的构建方法 |
CN106663034A (zh) * | 2014-05-09 | 2017-05-10 | 亚马逊技术股份有限公司 | 基于企业的网络与多租户网络之间的应用程序迁移 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301742B2 (en) * | 2008-04-07 | 2012-10-30 | International Business Machines Corporation | Systems and methods for coordinated management of power usage and runtime performance in performance-managed computing environments |
US8364908B2 (en) * | 2008-04-28 | 2013-01-29 | International Business Machines Corporation | Migrating program objects in a multi-node computer system |
CN100570569C (zh) * | 2008-06-13 | 2009-12-16 | 南京邮电大学 | 网格计算环境下的作业跨域控制方法 |
US9239740B2 (en) * | 2009-06-16 | 2016-01-19 | Microsoft Technology Licensing, Llc | Program partitioning across client and cloud |
US8165386B1 (en) * | 2009-08-18 | 2012-04-24 | Hankyu Moon | Apparatus and method for measuring audience data from image stream using dynamically-configurable hardware architecture |
US9207993B2 (en) * | 2010-05-13 | 2015-12-08 | Microsoft Technology Licensing, Llc | Dynamic application placement based on cost and availability of energy in datacenters |
US8935317B2 (en) * | 2010-06-23 | 2015-01-13 | Microsoft Corporation | Dynamic partitioning of applications between clients and servers |
US8554919B2 (en) * | 2011-09-09 | 2013-10-08 | Microsoft Corporation | Automatic preemption in multiple computer systems |
US20140215035A1 (en) * | 2013-01-25 | 2014-07-31 | Amazon Technologies, Inc. | Distribution of application components among devices |
US10623481B2 (en) * | 2015-04-27 | 2020-04-14 | Microsoft Technology Licensing, Llc | Balancing resources in distributed computing environments |
US10909018B2 (en) * | 2015-09-04 | 2021-02-02 | International Business Machines Corporation | System and method for end-to-end application root cause recommendation |
CN106603592B (zh) * | 2015-10-15 | 2019-10-01 | 中国电信股份有限公司 | 一种用于基于服务模型的应用集群迁移的方法和迁移装置 |
US20180329700A1 (en) * | 2015-11-30 | 2018-11-15 | Hewlett Packard Enterprise Development Lp | Application migration system |
US10656970B2 (en) * | 2016-09-28 | 2020-05-19 | Futurewei Technologies, Inc. | Scheduling graph computing on heterogeneous processing resources based on energy efficiency |
US10778599B2 (en) * | 2017-03-30 | 2020-09-15 | Home Box Office, Inc. | Predictive scaling of computing resources |
US10896160B2 (en) * | 2018-03-19 | 2021-01-19 | Secure-24, Llc | Discovery and migration planning techniques optimized by environmental analysis and criticality |
-
2019
- 2019-04-19 CN CN201980070665.0A patent/CN113383319B/zh active Active
- 2019-04-19 WO PCT/CN2019/083341 patent/WO2020082702A1/en active Application Filing
-
2020
- 2020-04-24 US US15/929,317 patent/US11671317B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106663034A (zh) * | 2014-05-09 | 2017-05-10 | 亚马逊技术股份有限公司 | 基于企业的网络与多租户网络之间的应用程序迁移 |
CN105159736A (zh) * | 2015-10-23 | 2015-12-16 | 武汉大学 | 一种支持性能分析的SaaS软件部署方案的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113383319A (zh) | 2021-09-10 |
US20200252275A1 (en) | 2020-08-06 |
WO2020082702A1 (en) | 2020-04-30 |
US11671317B2 (en) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11190425B2 (en) | Anomaly detection in a network based on a key performance indicator prediction model | |
US10977068B2 (en) | Minimizing impact of migrating virtual services | |
US11403125B2 (en) | Optimizing the deployment of virtual resources and automating post-deployment actions in a cloud environment | |
JP6526907B2 (ja) | 分散型記憶システムの性能監視 | |
US20220090930A1 (en) | Autonomous vehicle positioning for trip optimization | |
US20150154262A1 (en) | Platform for Continuous Graph Update and Computation | |
US10592398B1 (en) | Generating a test script execution order | |
US20110276649A1 (en) | Method for Efficient Partition and Replication of Social-Based Applications | |
US11574254B2 (en) | Adaptive asynchronous federated learning | |
US20170279697A1 (en) | Control device for estimation of power consumption and energy efficiency of application containers | |
US20180315306A1 (en) | Analyzing big data to manage traffic flow | |
CN113383319B (zh) | 目标驱动的动态对象放置优化 | |
US20190043348A1 (en) | Identification of traffic control mechanisms using machine learning | |
US9154984B1 (en) | System and method for estimating network performance | |
US10649670B2 (en) | Data block processing | |
US9875137B2 (en) | Intelligent application back stack management | |
US20170118286A1 (en) | Non-transitory computer-readable storage medium, exclusive switching method and exclusive switching apparatus | |
CN115269108A (zh) | 一种数据处理方法、装置及设备 | |
US11900170B2 (en) | Cloud-based systems for optimized multi-domain processing of input problems using multiple solver types | |
Weerasinghe et al. | From Traditional Adaptive Data Caching to Adaptive Context Caching: A Survey | |
CN111047107B (zh) | 公路通行时间预测方法、装置、电子设备和存储介质 | |
US10594620B1 (en) | Bit vector analysis for resource placement in a distributed system | |
US8656368B1 (en) | System, method, and computer program product for abstract software performance profiling | |
WO2023018599A1 (en) | Cloud-based systems for optimized multi-domain processing of input problems using multiple solver types | |
US11586491B2 (en) | Service issue source identification in an interconnected environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220301 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |