CN104160377B - 异构平台的混合系统中运行分布式程序的方法和系统 - Google Patents
异构平台的混合系统中运行分布式程序的方法和系统 Download PDFInfo
- Publication number
- CN104160377B CN104160377B CN201380013717.3A CN201380013717A CN104160377B CN 104160377 B CN104160377 B CN 104160377B CN 201380013717 A CN201380013717 A CN 201380013717A CN 104160377 B CN104160377 B CN 104160377B
- Authority
- CN
- China
- Prior art keywords
- platform
- compatibility
- specifically
- platforms
- program
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
-
- 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
Abstract
在一个方面中,基于亲和性的优先调用技术可以在具有异构平台的混合系统中提高分布式应用的性能。可以在运行时拦截或捕获在处理器上执行的程序中的代码段。在所述混合系统中选择用于执行所述代码段的平台,所述平台被确定为在所述混合系统中的多个平台中以最佳效率运行所述代码段。在被确定为以最佳效率运行所述代码段的所选平台上动态执行所述代码段。
Description
技术领域
本申请一般地涉及具有异构处理器的计算机和混合计算系统,更具体地说,涉及在处理器上执行代码以便提高混合系统中的性能。
背景技术
计算系统可以包含异构处理器。例如,诸如图形处理单元(GPU)、现场可编程门阵列(FPGA)之类的通用和专用处理器可以共同组成计算系统。混合系统的另一个实例是来自位于纽约阿蒙克的国际机器公司的zEnterprise BladeCenter Extension(zBX)基础架构,该基础架构包括系统Z196、X86刀片和Power7刀片;Z196和刀片通过专用网络连接。随着处理海量数据和严苛CPU周期的商业工作负载的出现,越来越多的成功应用可以受益于在混合系统上运行。
在这些混合系统中,数据局部性是确定软件性能的一个因素。数据局部性指应用请求的数据优先地来自使用数据的位置的本地文件系统。存在利用数据局部性提高分布式软件性能的已知解决方案。但是,这些解决方案没有考虑与混合系统关联的其它类型的局部性。
发明内容
可以提供用于在具有异构平台的混合系统中运行分布式程序的方法和系统。在一个方面,一种用于在具有异构平台的混合系统中运行分布式程序的方法可以包括在处理器上执行的程序的运行时中捕获程序的方法调用。所述方法还可以包括针对一种或多种平台特定的实现,查找与所捕获的方法调用关联的符号引用。所述方法还可以包括基于与所述一种或多种平台特定的实现关联的亲和性度量,从所述一种或多种平台特定的实现中选择一种平台特定的实现,所述亲和性度量指示所述一种或多种平台特定的实现在所述混合系统中的相应一个或多个平台上运行的高效程度。所述方法还可以包括返回对所选择的平台特定的实现的直接引用。所述方法还还可以包括使用所返回的对所选择的平台特定的实现的直接引用替换与所捕获的方法调用关联的所述符号引用。
在另一个方面,一种用于基于亲和性的优先(preferential)调用技术的在具有异构平台的混合系统中提高分布式应用性能的方法可以包括在运行时拦截在处理器上执行的程序中的代码段。所述方法还可以包括确定所述混合系统中用于执行所述代码段的平台,所述平台被确定为在所述混合系统中的多个平台中以最佳效率运行所述代码段。可以在被确定为以最佳效率运行所述代码段的所述平台上动态地执行所述代码段。
在一个方面,一种用于在混合系统中运行分布式程序的系统可以包括所述混合系统中运行应用程序的处理器。基于亲和性的优先调用模块可以可操作以在运行时拦截程序的方法调用。所述基于亲和性的优先调用模块可以还可操作以针对一种或多种平台特定的实现,查找与所捕获的方法调用关联的符号引用。所述基于亲和性的优先调用模块可以还可操作以基于与所述一种或多种平台特定的实现关联的亲和性度量,从所述一种或多种平台特定的实现中选择一种平台特定的实现。所述亲和性度量指示所述一种或多种平台特定的实现在所述混合系统中的相应一个或多个平台上运行的高效程度。所述基于亲和性的优先调用模块可以还可操作以使用对所选择的平台特定的实现的直接引用替换与所捕获的方法调用关联的所述符号引用。
还可以提供一种存储指令程序的计算机可读存储介质,所述指令程序可由机器执行以便执行在此描述的一种或多种方法。
下面参考附图详细描述各种实施例的进一步特性以及结构和操作。在附图中,相同的参考标号指示相同或功能类似的元件。
附图说明
图1示出本公开的一个实施例中的优先方法调用的一个具体实例;
图2示出本公开的一个实施例中的亲和性表的一个实例数据结构;
图3示出其中将一个实施例中的本公开的优先方法调用应用于JavaTM加速原型的一个实例方案;
图4示出可以利用本公开的优先方法调用的另一个实例方案;
图5示出其中在运行时将数学密集型功能卸载到Power平台的一个实例方案;
图6示出可以在本公开的一个实施例中实现优先方法执行系统的一个实例计算机或处理系统的示意图。
具体实施方式
在本公开中,混合系统通常指包含通用和专用计算平台的异构分布式系统。因为混合系统可以用作灵活平台以便在性价比方面优化工作负载,所以软件应用可以受益于在混合系统中运行。例如,对于在上运行的应用,尽管在安全性和可靠性方面具有优先级的组件可以放在Z196芯片上,但在计算方面具有优先级的组件可以放在X86或Power7微处理器刀片上。
在一个实施例中,本公开通过考虑功能局部性提高混合系统中的性能。在本公开中,功能局部性指执行的功能(或代码)优先地是最适合于特定平台的版本。在本公开的一个实施例中,平台可以包含硬件和软件两者。在本公开的一个实施例中,“功能局部性”涉及平台。例如,一般而言 平台比平台更好地支持浮点计算。因此,在具有Z和Power平台的混合系统中,可以为具有重要浮点计算的功能提供两个版本,分别是一个用于Z而另一个用于Power。尽管Power版本具有用于浮点计算的直接调用,但Z版本可以使用某种浮点仿真加速。利用功能局部性可以明显提高混合系统中的软件性能。
在本公开的一个实施例中,公开一种在此称为“优先方法调用”的技术,其可以提高在混合系统中运行的软件性能。在一个方面,优先方法调用是“基于亲和性的优先方法调用”技术,其可以提高混合系统中的分布式应用的性能。在该技术中,可以基于比较方法在不同平台上的亲和性,进行优先方法调用。方法、功能或过程指用于在处理器或平台上执行的编程模块或一组指令。此外,本公开的方法可以应用于程序中的代码段、工作单元等;因此,在此描述的方法无需限于应用程序中的“方法”本身。
在一个实施例中,本公开中的亲和性指在一种类型的平台上运行代码段的效率,例如平台运行给定功能的良好程度如何。例如,方法在平台上的亲和性表征该方法在平台上执行的高效程度。可以由方法的固有模式和平台特征决定该效率。方法可以在其中该方法具有最佳亲和性的平台上动态执行。因此,例如软件方法调用可以在混合系统或具有异构平台的系统的不同处理器中动态执行。在本公开的一个实施例中,基于亲和性的方法确定应该在异构平台的哪一处理器上执行软件或代码段。这样,例如可以通过在分布式系统的应用级别解决优化,优化应用程序的运行。
这种基于亲和性的执行技术还可以应用于数据读取,其中优选读取具有更好局部性的数据。在本公开的一个实施例中,方法亲和性考虑数据局部性。在本公开的一个实施例中,可以以脱机和联机方式更新亲和性。在此公开的方法的优点包括利用混合系统中的隐式差异,以便在可以最适合工作项目的位置上执行工作项目。
例如,考虑是包括Z和Power平台的混合系统。需要访问存储在Z上的大量数据的方法可以通过因为数据局部性而在Z上执行,具有较高亲和性。如果这些方法在Power上运行,则可以在Z上调用它们,并且可以以更高效的方式为应用提供Z数据。需要强大的单线程性能的方法也在Z平台上具有高亲和性,因为当前Z具有行业中最快的线程。需要强大的安全性和独有的服务质量的方法也是在Z上具有高亲和性的方法。
在Power上具有高亲和性的方法可以包括具有很少或最低数据要求的长时间运行的应用、在Power上受益于SMT(同步多线程)的多个并行线程、需要大量主存储器的方法、需要存储带宽的方法,以及计算密集型的分析算法(例如,浮点运算)。
在实践中,可以以不同表示测定亲和性。它可以是布尔变量,其指示方法能够还是不能在平台上运行,或者方法如何一般地优选一个平台而不是另一个;它可以是数值性能度量(例如,吞吐量或响应时间);它还可以是模糊变量,其基于现有知识表明方法如何优选一个平台而不是其它平台;它还可以是基于性价比的值,其用于测定在每个平台上运行方法的相对收益。
在一个实施例中,本公开可以提供利用平台亲和性以提高混合系统中的软件性能和成本效率。可以利用混合系统中的隐式异构性,以便在具有最佳性价比的平台上放置和执行工作负载中的每个工作单元。在本公开的一个实施例中,当在运行程序中调用方法时,捕获该方法。该方法可以具有平台特定的实现的多个副本,并且可以在捕获该方法时执行每种实现。可以将用于这些多种实现的引用和关联亲和性存储在亲和性表等中。通过查找亲和性表,可以做出决策以针对该方法选择具有最佳亲和性的平台。此决策可以考虑亲和性和运行实现的开销。上述方法称为优先方法调用。
图1示出本公开的一个实施例中的优先方法调用的一个具体实例。在104,具有名为“foo()”的方法的应用编程102运行和调用该方法。当调用该方法时,可以拦截或捕获符号引用以及运行环境信息。可以将该信息传递到过程,该过程查找用于该方法的所有平台特定的实现。在106,查找方法foo()。例如,亲和性表108等可以存储亲和性度量、与该方法的每种不同平台实现关联的值或因素或此类指示。表108还可以存储其它信息,例如运行每种不同平台实现的开销。从在表108中查找的信息,确定具有最佳亲和性的特定平台实现。此外,可以考虑选择具有最小开销的实现。可以返回对具有最佳亲和性的实现的直接引用作为所捕获方法的代替者。在110,例如通过引用,被确定或选择为具有最佳亲和性并且可选地具有最小开销的特定平台实现替换对foo()的方法调用。在本公开的一个实施例中,使用符号引用替换实现应用软件一部分的运行时重新分发。
在本公开的一个实施例中,单独的软件等可以负责创建和更新亲和性表。
本公开的优先执行可以应用于代码段(程序102的一部分),例如上面描述为方法foo()。在本公开的一个实施例中,基于运行的程序中的方法等可能是优先调用技术的候选者的判定,可以拦截或捕获此类方法。在本公开的一个实施例中,配置可以标记或者以其它方式指定这些方法或代码段作为候选者。
在本公开的一个实施例中,优先方法调用可以最佳地应用于以受管代码(例如,JavaTM、PythonTM)编写的软件,因为此处的代码与平台无关,并且可以通过使用底层虚拟机更容易地在运行时捕获。但是,本公开并未将优先方法调用限于任何特定代码;相反,以任何编程语言等编写的程序都适用。在本公开的一个实施例中,可以通过引用替换进行方法捕获。例如,当捕获方法时,可以通过对具有最佳亲和性的平台特定的实现的直接引用来替换对该方法的符号引用。可以预先加载或动态地加载包含该实现的库。不需要程序中的每种方法都支持优先调用。例如,仅以下这些方法可以调用或启用优先方法调用:根据定义的阈值或准则,其亲和性跨平台变化,并且例如,其效率可以被视为对整体性能至关重要。基于定义的阈值或准则,判定方法的效率是否被视为至关重要。
在本公开的一个实施例中,亲和性表可以是数据结构,其存储针对优先方法调用考虑的所有方法的每种平台特定的实现的亲和性信息。图2示出本公开的一个实施例中的亲和性表的一个实例数据结构。表中的每个项可以对应于一种实现,即方法的独特平台特定的实现。例如,在JavaTM中,实现可以是包含在jar(JavaTM存档)文件中的类成员函数。一个类可以存在于多个jar文件中,针对一个平台优化每个jar文件。
在本公开的一个实施例中,一种方法可以具有多种平台特定的实现,每种实现对应于特别平台的一种实现,因此对应于亲和性表中的多个项。具有不同参数的相同方法可以对应于亲和性表中的不同项,其中每个项包含不同的亲和性值。项可以包括以下字段:方法名称202,例如“foo()”;对方法实现的引用204,例如实现方法的功能的名称;目标平台206,其指定实现针对的平台,例如X86、Power、Z等;亲和性度量208,其指示该实现在调用者的平台(即,目标平台)上运行的高效程度的度量;版本210,其指定该实现的版本;以及“固定或可变亲和性”字段212。“固定或可变亲和性”字段212指示亲和性度量是在运行时期间不变,还是应在每次捕获方法时更新其值。图2中所示的更多或更少字段可以充当亲和性表。例如,并非需要存在实例中所示的所有字段,和/或可以存在其它额外字段。
作为一个实例,在JavaTM应用的上下文中,平台特定的实现可以是jar库中的类成员函数。在一个实施例中,可以将支持本公开的优先方法调用的JavaTM类存储在多个jar库中,针对一个特定平台优化每个库。在运行时加载适当的jar文件,具体取决于亲和性比较结果。
在本公开的一个实施例中,可以在程序执行之前初始化亲和性表。最初,在一个实施例中,表可以包含支持本公开的优先方法调用的所有这些方法。在一个实施例中,该信息可以由开发人员确定,并且可以作为配置文件提供给本公开的亲和性管理过程(例如,管理图1中所示的程序和项目的过程)。一种方法可以包括为平台量身定制的多种实现,每种实现在亲和性表中具有一个记录。可以通过亲和性管理过程计算和分配亲和性度量。如果方法的平台特定的实现缺失其亲和性度量,则其在表中的对应亲和性度量字段可以留空或包括此类指示。
在本公开的一个实施例中,可以在运行时更新亲和性表。例如,当在运行时捕获方法时,如果其亲和性度量为空,或者如果根据字段“固定或可变亲和性”,其亲和性度量需要重新计算,则可以触发亲和性估计过程以便计算亲和性并且填充或更新项的字段。
如果首次调用方法并且因此表中没有项,则可以将其默认实现作为项插入到表中,并且在运行时动态测量亲和性值。默认实现可以是其上运行方法或运行调用方法的程序的平台的实现。在本公开的一个实施例中,对于多次调用的方法,每当其新测量的亲和性被确定为不同于存储在亲和性表中的亲和性度量时,可以更新表项中的亲和性字段。
响应于发生方法捕获,可以使用方法名称或类似标识作为进入亲和性表的键以便查找关联的项数据。例如,在本公开的一个实施例中,每当发生方法捕获时,使用方法名称作为关键字以便在亲和性表中查找所有项。这些项对应于多种平台特定的实现。通过比较亲和性度量(如果需要,则可以触发亲和性估计过程),选择具有最佳亲和性的实现,并且其引用替换原始符号引用。如果该字段中的项为空或需要更新,并且如果过程可用于获得测量,则例如可以动态地触发亲和性估计过程。
在本公开的一个实施例中,表中的每种方法均包含默认实现。如果由于亲和性估计失败而导致亲和性比较没有产生线索,则可以使用默认实现并且返回其引用。适当地具有和使用默认实现将确保程序可以始终运行,即使优先方法调用没有选择优先实现。
在本公开的一个实施例中,亲和性比较考虑执行选择的实现导致的开销。在一个实施例中,如果开销足够高以便抵消优选平台带来的潜在收益,则不应该选择该平台。当进行跨平台调用时,可以发生较大开销;例如,程序最初在平台A上运行,它进行在平台B上优选实现的方法调用。因此,该方法调用变成远程过程调用(RPC)型的调用。这种RPC引入额外网络延迟和额外CPU使用。在本公开的一个实施例中,在亲和性比较时需要考虑所有这些开销。如果开销高,则可以在亲和性计算时相应地减小亲和性度量。
亲和性估计
在本公开中,可以使用一种或多种亲和性估计方法或过程。具有各种亲和性估计方法,具体取决于实际方案和应用(程序)关注的SLA(服务水平协议)。例如,对于延迟关键的应用,可以使用方法执行时间作为亲和性;对于计算密集型应用,可以使用CPU周期使用作为亲和性;在高能效的方案中,可以使用能源消耗作为亲和性;可以使用它们的任何一个或多个组合,或者其它因素。可组合多个性能度量以便形成效用函数型的度量以测定亲和性。此外,如果关注性价比,则可以在亲和性度量中包括在平台上执行实现的成本。例如,ZCPU周期比Power CPU周期的成本更高昂。通过将CPU周期的单位价格引入到亲和性中,计算密集型方法将优选Power平台以便降低总成本。
亲和性可以随时间而有所变化,因为系统负载动态改变。一个实例是跨网络方法的延迟亲和性度量取决于随时间变化的后台网络业务。对于此类亲和性度量,例如最初可以将它们声明为变量,如上面通过亲和性表中的字段“固定或可变亲和性”讨论的那样。对于具有可变亲和性字段的项,每次查询亲和性时,可以按需重新计算亲和性。
方法级依赖性图
当初始化亲和性表时,可以指定支持优先调用的方法。开发人员可以根据平台特定的实现的可用性和方法之间的依赖性,手动创建这种指定。方法级依赖性图显示程序或应用中的方法之间的调用关系。依赖性图可以是用于加快手动过程的有用工具。具体地说,如果开发人员想要启用方法A的优先调用,并且在依赖性图中发现方法A调用方法B,则开发人员还应启用方法B以及方法B调用的任何其它方法的优先调用。因此,例如,如果方法B被确定为不能在平台上运行,则也不能在该平台上优先调用方法A。方法级依赖性图可以通过一个或多个软件工具自动产生。
依赖性包(dependency bundle)可以有助于相互关联的方法的优先执行。首先形成依赖性图以便表示相互关系。在本公开的一个实施例中,基于依赖性图,如果优先执行方法,则该方法所依赖于的所有方法可以作为包而优先执行。
使用方案
方案1:优先JavaTM类加载
方案1是在JavaTM加速原型中应用优先方法调用理念。图3描述该方案。两个服务器A 302和B 304是不同的平台。Java虚拟机(JVM)306在服务器A 302上运行以便处理JavaTM工作负载。在服务器B 304上,开发代理JVM 308(其可以是具有新增特性的另一个JVM)以便将JavaTM工作负载从服务器A 302卸载到B 304。将纯JavaTM调用卸载到B 304时,在服务器A302上进行的Java本机接口(JNI)调用依然在A 302上。在引导阶段,JVM 306和代理JVM 308均需要加载许多公共JavaTM类库,因为它们读取大量公共JavaTM类库。如果这些类库310仅保留在服务器A上,则代理JVM 308的引导极其低效,因为必须通过RPC(远程过程调用)将每个类库文件从A 302传送到B 304。平均上,加载的类生成大约120个RPC调用。每个RPC调用需要跨网络并且产生网络延迟。因此,代理JVM的引导阶段大约为1.5小时。
可以应用本公开的优先方法调用以便加快上面方案中的引导阶段。在本公开的一个实施例中的实现中,JavaTM类库可以具有本地副本。在此,本地指图3中的服务器B 304,远程指服务器A 302。在库的本地副本中,将布尔成员变量添加到每个JavaTM类以便指示类是否具有本地副本。然后,根据JavaTM成员函数是否启用优先调用,添加每个成员函数中的检查以便判定应调用本地还是远程成员函数。创建配置文件以便指定哪个类库文件具有本地副本。代理JVM开发人员创建该配置文件。此外,添加新类以便在引导阶段执行。添加的类将读入该配置文件,并且初始化每个类中的布尔变量。在上面的更改之后,在引导阶段执行优先类加载。在该方案中,优先方法调用证明是非常有效:代理JVM的引导时间从1.5小时减少到几分钟。
方案2:JavaTM中的优先字符文件读取
图4示出可以使用本公开的优先方法调用的另一个实例方案。可以将优先方法调用应用于JavaTM文件输入/输出(I/O)以便在混合系统中实现更快的文件读取。FileReader是用于读取字符文件的JavaTM类。该类的构造器接受文件名参数并且准备从该文件读取。如果文件位于远程服务器,则将跨底层分布式文件系统(例如,网络文件系统(NFS))读取该文件。除了大量网络延迟的缺点之外,该默认行为需要解决字符编码问题带来的不便。具体地说,不同平台上的字符文件可以以不同方案编码。因此,当调用FileReader构造器时,开发人员需要指定编码方案,其取决于存储文件的平台。
在本公开的一个实施例中,应用优先方法调用将解决网络延迟问题和字符编码的不便。参考图4,在406调用该FileReader构造器方法时,在408从亲和性表410等中查找输入参数文件名,并且在本公开的一个实施例中,如果如在412测试的那样存在本地副本,则在414优先地由本地副本替换该文件名。根据最终从中检索文件的平台(本地418或共享420),可以在416隐式调用另一种方法以进行字符编码/解码。在图4的实例中,EBCDIC是Z 404上的字符编码方案,ASCII是Power 402上的编码方案。这样,解决上面的两个问题,并且该过程的发生可以对JavaTM程序完全透明。该方案展示考虑数据局部性的收益。此外,基于运行编码/解码算法的效率,可以确定用于运行方法的适当平台。
方案3:优先数学密集型功能执行
在该方案中,在本公开的一个实施例中,可以应用优先方法调用以便将计算密集型工作负载从Z放置到Power。原理可以是Power平台一般比Z平台具有更好的浮点支持。图5示出其中在运行时将数学密集型功能卸载到Power平台的一个实例方案。例如,当在506调用或捕获Z 504上的方法foo()时,并且如果在508检测该方法具有大量数学计算(例如,这可以通过源代码分析进行),则可以在510搜索亲和性表512以便检测是否存在针对foo()的Power版本实现。如果存在,则可以在514返回Power版本实现。在518,可以调用Power版本实现而不是默认Z版本。在本公开的一个实施例中,可以在516使用RPC机制实现这种跨系统调用。在本公开的一个实施例中,当决定使用哪个版本的foo()时,考虑RPC开销。在本公开的一个实施例中,源代码分析可以执行检测方法是否具有数学计算。可以设置一个或多个准则以便确定方法是否是计算密集型的。例如,如果方法中的数学计算数量满足或超出阈值,则方法可以被确定是计算密集型的,从而保证优先方法调用选项。在本公开的一个实施例中,当在510在亲和性表中查找foo()时,可以抵消PowerPC特定的实现的亲和性,这是由于跨平台通信所致。
在本公开的另一个实施例中,提供在跨本地和远程系统运行的软件中应用优先方法调用的一个实例。本地和远程系统通过网络连接。对于性能收益,在这种方案中,功能调用应该优选在本地系统上执行,只要其所需资源是本地的。为了启用优先方法调用,首先分析软件中的每个方法调用以便判定它应该在本地还是远程运行。判定技术是在统计上分析方法实现的二进制/字节代码以及创建调用图。对于调用图中的每个功能调用,进行检查以便判定通过调用访问的资源在本地获得还是在远程获得。如果通过本机方法访问的所有资源在本地获得,则可以注释方法以便本地执行。如果否,则可以注释方法以便远程执行。这种确定可本地化的本机方法的方法可以用于确定亲和性度量或因素。例如,如果可以本地化本机方法,则亲和性度量倾向于“本地机器”;如果否,则亲和性倾向于“远程机器”。
在本公开的一个实施例中,提供在混合系统中的方法调用的优先执行。基于亲和性的优先方法调用技术例如可以通过在具有最佳效率因素(例如,性价比)的平台上动态执行工作负载中的每个工作单元,提高混合系统中的分布式应用的性能。例如,对方法调用的符号引用在运行时被捕获,并被代之以对具有最佳亲和性的平台特定的实现的直接引用。
一种利用功能局部性的方法可以明显提高混合系统中的软件性能。基于亲和性的优先方法调用技术提供可启用以便在其中方法具有最佳亲和性的平台上执行方法(例如应用于其中具有更好局部性的数据被优选读取的数据读取,或者所述方法使用其它本地资源)的特性、以脱机和联机方式更新亲和性的特性、用于利用混合系统中的隐式差异以便在最适合工作项目的位置上执行工作项目的特性。亲和性表可以存储有关方法调用的平台特定的实现和亲和性度量的信息。
在混合系统中运行分布式软件可以优先地在其中方法具有最佳亲和性的平台上调用方法,并且优先地在具有最佳局部性的服务器上访问数据,这可以包括(i)拦截方法调用和文件读取,并且对照表查找被请求项目,(ii)选择表中具有最佳亲和性或局部性的匹配项目,并且通过从步骤(ii)返回的名称替换原始方法名称或文件名称。
亲和性表可以涉及以静态和动态方式创建和更新亲和性表的亲和性管理系统。最初,亲和性表可以包含已知具有为平台量身定制的实现的方法的亲和性度量。在运行时,可以从有关方法在平台上执行的高效程度的测量获知方法的亲和性,并且亲和性计算方法可以知晓网络延迟和带宽(或其它开销或环境因素)并在决策过程中使用该信息。
尽管上面的描述根据在程序中执行方法解释了本公开的方法,但程序中的任何其它工作单元或项目或代码段均可以具有优先的平台特定的实现并使用该优先的平台特定的实现来执行。
图6示出可以在本公开的一个实施例中实现优先方法执行系统的实例计算机或处理系统的示意图。计算机系统仅是合适的处理系统的一个实例,并非旨在对在此描述的方法实施例的功能和使用范围带来任何限制。示出的处理系统可与众多其它通用或专用计算系统环境或配置一起操作。可以适于与图6中所示的处理系统一起使用的公知计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统或设备的分布式云计算环境,等等。
可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述计算机系统。通常,程序模块可以包括执行特定任务或者实现特定抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算机系统存储介质上。
计算机系统的组件可以包括但不限于:一个或者多个处理器或者处理单元12,系统存储器16,以及将不同系统组件(包括系统存储器16)连接到处理器12的总线14。处理器12可以包括执行在此描述的方法的优先方法执行模块10。模块10可以编程到处理器12的集成电路中,或者从存储器16、存储设备18或网络24或它们的组合加载。
总线14可以表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,使用多种总线结构中的任意总线结构的处理器或局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MCA)总线,增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统可以包括多种计算机系统可读介质。这些介质可以是能够被计算机系统访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器16可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)和/或高速缓冲存储器等。计算机系统还可以包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统18可以用于读写不可移动的、非易失性磁介质(例如“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线14相连。
计算机系统也可以与一个或多个外部设备26(例如键盘、指点设备、显示器28等)通信,还可与一个或者多个使得用户能与该计算机系统交互的设备通信,和/或与使得该计算机系统能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口20进行。
此外,计算机系统可以通过网络适配器22与一个或者多个网络24(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器22通过总线14与计算机系统的其它组件通信。应当理解,尽管图中未示出,但是其它硬件和/或软件组件可以与计算机系统一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言,一种描述性语言如Perl、VBS或类似语言,和/或功能性语言,如Lisp和ML以及逻辑目标语言如Prolog。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article ofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
计算机程序产品可以包括能够实现在此描述的方法的所有相应特性,并且当被加载到计算机系统中时,其能够执行这些方法。当前上下文中的计算机程序、软件程序、程序或软件是指一组指令的以任何语言、代码或符号表示的任何表达,旨在使具有信息处理能力的系统直接执行特定的功能,或者执行以下两者之一或全部后执行特定的功能:(a)转换为另一种语言、代码或符号;和/或(b)以不同的材料形式再现。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤(如果有)的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结构、材料或操作。出于示例和说明目的给出了对本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且当适合于所构想的特定使用时,使得所属技术领域的其它普通技术人员能够理解本发明的具有各种修改的各种实施例。
本公开的各个方面可以实现为包含在计算机或机器可用或可读介质中的程序、软件或计算机指令,当在计算机、处理器和/或机器上执行时,这些程序、软件或计算机指令导致计算机或机器执行所述方法步骤。还提供一种程序存储设备,其可由机器读取,有形地包含可由机器执行的指令程序以便执行本公开中描述的各种功能和方法。
本公开的系统和方法可以在通用计算机或专用计算机系统上实现和运行。可用于本申请的术语“计算机系统”和“计算机网络”可以包括固定和/或便携式计算机硬件、软件、外围设备和存储设备的各种组合。计算机系统可以包括联网或以其它方式链接以协作执行的多个单独组件,或者可以包括一个或多个独立的组件。本申请的计算机系统的硬件和软件组件可以包括并且可以包括在固定和便携式设备(例如台式计算机、膝上型计算机和/或服务器)中。模块可以是设备、软件、程序或系统的实现某种“功能”的组件,其可以实现为软件、硬件、固件、电子电路等。
上面描述的实施例是示例性实例,并且不应该解释为本发明限于这些特定的实施例。因此,所属技术领域的技术人员可以实现各种更改和修改,而不偏离在所附权利要求中限定的本发明的精神或范围。
Claims (25)
1.一种用于在具有异构平台的混合系统中运行分布式程序的方法,所述方法包括:
在处理器上执行的程序的运行时中捕获程序的方法调用;
针对一种或多种平台特定的实现,查找与所捕获的方法调用关联的符号引用;
基于与所述一种或多种平台特定的实现关联的亲和性度量,从所述一种或多种平台特定的实现中选择一种平台特定的实现,所述亲和性度量指示所述一种或多种平台特定的实现在所述混合系统中的相应一种或多种平台上运行的高效程度;
返回对所选择的平台特定的实现的直接引用;以及
使用所返回的对所选择的平台特定的实现的直接引用替换与所捕获的方法调用关联的所述符号引用;
其中所述混合系统至少包括通用处理器和专用处理器,所述一种或多种平台特定的实现至少包括在所述至少专用处理器上执行的程序代码。
2.根据权利要求1的方法,其中所述程序的所述运行时继续使用替换后的直接引用执行所述程序。
3.根据权利要求1的方法,其中返回步骤包括返回对所选择的平台特定的实现的所述直接引用以及与关联平台相关的信息。
4.根据权利要求1的方法,其中在包含所述亲和性度量的表中查找所述符号引用。
5.根据权利要求4的方法,其中在运行时动态地计算和更新所述表中的所述亲和性度量。
6.根据权利要求4的方法,其中在计算所述亲和性度量中使用与运行所述一种或多种平台特定的实现关联的开销。
7.根据权利要求4的方法,其中基于执行时间或资源使用或它们的组合,计算所述亲和性度量。
8.根据权利要求1的方法,其中所述程序的方法调用与多种不同的平台特定的实现关联。
9.根据权利要求1的方法,其中基于在所述程序的方法调用中指定的不同参数,将所述程序的方法调用与多种不同的平台特定的实现关联。
10.一种用于基于亲和性的优先调用技术的在具有异构平台的混合系统中提高分布式应用性能的方法,所述异构平台包括一种或多种平台,所述方法包括:
在运行时拦截在处理器上执行的程序中的代码段;
确定所述混合系统中用于执行所述代码段的平台,所述平台被确定为在所述混合系统中的所述一种或多种平台中以最佳效率运行所述代码段的平台,
其中在被确定为以最佳效率运行所述代码段的所述平台上动态地执行所述代码段;
其中所述混合系统至少包括通用处理器和专用处理器,所述程序中的代码段在所述一种或多种平台特定的实现至少包括在所述至少专用处理器上执行的程序代码。
11.根据权利要求10的方法,其中所述确定包括查找表,所述表包括指定与所述代码段和效率度量关联的一种或多种平台特定的实现的一个或多个表项。
12.根据权利要求11的方法,其中在运行时动态地确定所述效率度量,并且使用最近确定的效率度量更新所述表。
13.根据权利要求10的方法,其中如果确定所述代码段是用于所述基于亲和性的优先调用技术的候选者,则执行拦截步骤。
14.一种用于在混合系统中运行分布式程序的系统,所述系统包括:
所述混合系统中运行应用程序的处理器;以及
基于亲和性的优先调用模块,其可操作以在运行时拦截程序的方法调用,所述基于亲和性的优先调用模块还可操作以针对一种或多种平台特定的实现,查找与所捕获的方法调用关联的符号引用,所述基于亲和性的优先调用模块还可操作以基于与所述一种或多种平台特定的实现关联的亲和性度量,从所述一种或多种平台特定的实现中选择一种平台特定的实现,所述亲和性度量指示所述一种或多种平台特定的实现在所述混合系统中的相应一种或多种平台上运行的高效程度,所述基于亲和性的优先调用模块还可操作以使用对所选择的平台特定的实现的直接引用替换与所捕获的方法调用关联的所述符号引用;
其中所述混合系统至少包括通用处理器和专用处理器,所述一种或多种平台特定的实现至少包括在所述至少专用处理器上执行的程序代码。
15.根据权利要求14的系统,还包括存储表项的数据库,所述表项指定方法调用的一种或多种平台特定的实现以及关联的效率度量,所述关联的效率度量指示相应平台运行相应平台特定的实现的高效程度。
16.根据权利要求15的系统,其中在运行时动态地更新所述效率度量。
17.根据权利要求15的系统,其中使用与在相应平台上运行所述一种或多种平台特定的实现关联的开销作为选择所述平台特定的实现时的多个准则之一。
18.根据权利要求15的系统,其中所述数据库存储所述方法调用的多种平台特定的实现。
19.根据权利要求18的系统,其中基于所述方法调用中使用的不同参数,所述数据库存储所述方法调用的多种平台特定的实现。
20.一种存储指令程序的计算机可读存储介质,所述指令程序可由机器执行以便执行一种在具有异构平台的混合系统中运行分布式程序的方法,所述方法包括:
在处理器上执行的程序的运行时中捕获程序的方法调用;
针对一种或多种平台特定的实现,查找与所捕获的方法调用关联的符号引用;
基于与所述一种或多种平台特定的实现关联的亲和性度量,从所述一种或多种平台特定的实现中选择一种平台特定的实现,所述亲和性度量指示所述一种或多种平台特定的实现在所述混合系统中的相应一种或多种平台上运行的高效程度;
返回对所选择的平台特定的实现的直接引用;以及
使用所返回的对所选择的平台特定的实现的直接引用替换与所捕获的方法调用关联的所述符号引用;
其中所述混合系统至少包括通用处理器和专用处理器,所述一种或多种平台特定的实现至少包括在所述至少专用处理器上执行的程序代码。
21.根据权利要求20的计算机可读存储介质,其中所述程序的所述运行时继续使用替换后的直接引用执行所述程序。
22.根据权利要求20的计算机可读存储介质,其中返回步骤包括返回对所选择的平台特定的实现的所述直接引用以及与关联平台相关的信息。
23.根据权利要求20的计算机可读存储介质,其中在包含所述亲和性度量的表中查找所述符号引用。
24.根据权利要求23的计算机可读存储介质,其中在运行时动态地计算和更新所述表中的所述亲和性度量。
25.根据权利要求23的计算机可读存储介质,其中在计算所述亲和性度量中使用与运行所述一种或多种平台特定的实现关联的开销。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/417,878 | 2012-03-12 | ||
US13/417,878 US8843894B2 (en) | 2012-03-12 | 2012-03-12 | Preferential execution of method calls in hybrid systems |
PCT/US2013/028795 WO2013138096A1 (en) | 2012-03-12 | 2013-03-04 | Preferential execution of method calls in hybrid systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104160377A CN104160377A (zh) | 2014-11-19 |
CN104160377B true CN104160377B (zh) | 2018-03-02 |
Family
ID=49114139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380013717.3A Active CN104160377B (zh) | 2012-03-12 | 2013-03-04 | 异构平台的混合系统中运行分布式程序的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8843894B2 (zh) |
CN (1) | CN104160377B (zh) |
WO (1) | WO2013138096A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10027536B2 (en) * | 2014-06-25 | 2018-07-17 | Futurewei Technologies, Inc. | System and method for affinity-based network configuration |
US9582301B2 (en) * | 2014-09-17 | 2017-02-28 | International Business Machines Corporation | Method of defining javascript objects |
US10091058B2 (en) | 2014-11-10 | 2018-10-02 | Futurewei Technologies, Inc. | Method and apparatus for model-driven, affinity-based, network functions |
US9886367B2 (en) * | 2015-04-29 | 2018-02-06 | International Business Machines Corporation | Unified processing test structure |
US9800585B2 (en) | 2015-10-21 | 2017-10-24 | Red Hat, Inc. | Restricting access by services deployed on an application server |
US10025624B2 (en) * | 2016-03-30 | 2018-07-17 | International Business Machines Corporation | Processing performance analyzer and process manager |
US10643147B2 (en) | 2016-05-31 | 2020-05-05 | International Business Machines Corporation | Coordinated version control system, method, and recording medium for parameter sensitive applications |
US10310908B2 (en) | 2016-08-19 | 2019-06-04 | International Business Machines Corporation | Dynamic usage balance of central processing units and accelerators |
US10120665B1 (en) * | 2016-09-29 | 2018-11-06 | Amazon Technologies, Inc. | Latency-aware host-agnostic runtime |
CN106775616B (zh) * | 2016-11-10 | 2020-08-11 | 中国电子科技集团公司第二十八研究所 | 基于C++与Java混合编程的分布式服务系统 |
US10360067B1 (en) * | 2017-03-28 | 2019-07-23 | Amazon Technologies, Inc. | Dynamic function calls in an on-demand network code execution system |
US10503572B2 (en) * | 2017-04-18 | 2019-12-10 | Sap Se | Hybrid remote controller |
US10901783B2 (en) * | 2018-10-16 | 2021-01-26 | Vmware, Inc. | Reducing the startup latency of functions in a FaaS infrastructure |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890809B2 (en) * | 2003-05-01 | 2011-02-15 | Telecommunication Systems, Inc. | High level operational support system |
CN102184125A (zh) * | 2011-06-02 | 2011-09-14 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6424992B2 (en) | 1996-12-23 | 2002-07-23 | International Business Machines Corporation | Affinity-based router and routing method |
US6640289B2 (en) | 2000-11-15 | 2003-10-28 | Unisys Corporation | Software controlled cache line ownership affinity enhancements in a multiprocessor environment |
US20040064829A1 (en) | 2002-09-30 | 2004-04-01 | Kim Pallister | Method for identifying processor affinity and improving software execution |
US20070011682A1 (en) | 2003-01-02 | 2007-01-11 | Loboz Charles Z | Affinization of transaction types |
WO2005003969A1 (en) | 2003-06-27 | 2005-01-13 | Sun Microsystems, Inc. | Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same |
US7484209B2 (en) | 2003-08-12 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Instrumenting java code by modifying bytecodes |
US7426622B2 (en) | 2004-03-10 | 2008-09-16 | Hewlett-Packard Development Company, L.P. | Rapid locality selection for efficient memory allocation |
GB0405595D0 (en) | 2004-03-12 | 2004-04-21 | Ibm | Method and system for affinity management |
US8453132B2 (en) | 2006-07-28 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
US8176475B2 (en) | 2006-10-31 | 2012-05-08 | Oracle America, Inc. | Method and apparatus for identifying instructions associated with execution events in a data space profiler |
US8544014B2 (en) | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8136153B2 (en) | 2007-11-08 | 2012-03-13 | Samsung Electronics Co., Ltd. | Securing CPU affinity in multiprocessor architectures |
US8745622B2 (en) | 2009-04-22 | 2014-06-03 | International Business Machines Corporation | Standalone software performance optimizer system for hybrid systems |
US8577892B2 (en) | 2009-06-05 | 2013-11-05 | Microsoft Corporation | Utilizing affinity groups to allocate data items and computing resources |
US9117193B2 (en) | 2009-09-04 | 2015-08-25 | International Business Machines Corporation | Method and system for dynamic detection of affinity between virtual entities |
-
2012
- 2012-03-12 US US13/417,878 patent/US8843894B2/en active Active
- 2012-09-14 US US13/616,417 patent/US8869119B2/en active Active
-
2013
- 2013-03-04 CN CN201380013717.3A patent/CN104160377B/zh active Active
- 2013-03-04 WO PCT/US2013/028795 patent/WO2013138096A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7890809B2 (en) * | 2003-05-01 | 2011-02-15 | Telecommunication Systems, Inc. | High level operational support system |
CN102184125A (zh) * | 2011-06-02 | 2011-09-14 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
Also Published As
Publication number | Publication date |
---|---|
US20130235992A1 (en) | 2013-09-12 |
CN104160377A (zh) | 2014-11-19 |
US8843894B2 (en) | 2014-09-23 |
US20130239128A1 (en) | 2013-09-12 |
WO2013138096A1 (en) | 2013-09-19 |
US8869119B2 (en) | 2014-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104160377B (zh) | 异构平台的混合系统中运行分布式程序的方法和系统 | |
US11070617B2 (en) | Predicting cloud enablement from storage and data metrics harnessed from across stack | |
US20180203746A1 (en) | Analysis of application programming interface usage for improving a computer system | |
US20160171047A1 (en) | Dynamic creation and configuration of partitioned index through analytics based on existing data population | |
US10892944B2 (en) | Selecting and using a cloud-based hardware accelerator | |
CN107797820B (zh) | 用于生成补丁的方法和装置 | |
US11741147B2 (en) | Selecting balanced clusters of descriptive vectors | |
US9876853B2 (en) | Storlet workflow optimization leveraging clustered file system placement optimization features | |
US10452428B2 (en) | Application execution with optimized code for use profiles | |
CN110515647A (zh) | 一种静态资源管理方法、装置、设备和存储介质 | |
US11144357B2 (en) | Selecting hardware accelerators based on score | |
US20200410106A1 (en) | Optimizing Operating System Vulnerability Analysis | |
US11301223B2 (en) | Artificial intelligence enabled function logic infusion | |
US10535011B2 (en) | Predicting capacity based upon database elements | |
Ahmad et al. | Reproducible notebook containers using application virtualization | |
US20210034948A1 (en) | Metadata-based scientific data characterization driven by a knowledge database at scale | |
US9760655B2 (en) | Systems and methods for discovering temporal patterns in time variant bipartite graphs | |
US20220122038A1 (en) | Process Version Control for Business Process Management | |
JP7410269B2 (ja) | テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 | |
US20200142972A1 (en) | System and method for identifying open source repository used in code | |
US11853750B2 (en) | Subject matter expert identification and code analysis based on a probabilistic filter | |
JP6697486B2 (ja) | 特殊命令を使用しないガベージ・コレクション | |
US11157252B2 (en) | Assessment of the benefit of post-inlining program transformation in inlining decisions | |
US20160283521A1 (en) | Matching untagged data sources to untagged data analysis applications | |
Patel et al. | Preliminary Scaling Characterization of TPCx-AI |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |