多重处理环境中透明动态优化的方法和系统技术方案

技术编号:2872513 阅读:157 留言:0更新日期:2012-04-11 18:40
一种多重处理系统中透明动态优化的方法,包括:    使用运行于该系统的另一个处理器上的执行监视器,监视在一个第一处理器上的应用二进制程序的执行。    使用在该系统的所述另一个处理器上执行的运行时优化器,透明地优化原始的应用二进制程序的一个或多个段。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术一般而言涉及软件系统,具体地涉及用于改进对此种系统的调整(tuning)以提高其性能的方法。
技术介绍
建造一个典型的软件系统包括若干步骤,并最终产生一个绑定模块(或“可执行的二进制程序”,executable binary),该模块已被调整(调优),从而在一个特定的硬件和软件配置上执行。这个称为“静态优化”的处理过程可能包括以下步骤带优化地编译程序,插入插截(instrumentation),与预先建造的运行时程序库(runtime library)进行静态或动态绑定,在某种预期用户配置的样本上使用一定范围的预期用户输入进行测试,以及基于测试过程中收集的数据带优化地再次编译(这称为“通过剖面法(profile)指导的反馈进行的优化”)。人们期望,由此产生的程序在预期的用户配置和输入数据的范围内既是健壮的,也是最优化的。然而,在现实中,用户环境的范围是如此宽广,以至于这样的程序无法在所有情况下都获得最佳性能。人们很早就认识到,静态技术(即在操作环境之外搜集关于代码执行的信息,以便为随后的执行微调代码)不适于产生有效的代码,因为要生成代表所有可能的最终用户数据和硬件配置的测试数据是很困难的,如果不是不可能的话。此外,随着指令级别上的并行性增加以及流水线加深,这种不适合就变得逾加令人烦恼了。与静态优化技术不同的另一种方法是“动态优化”。动态优化与带有剖面法指导的反馈(profile-directed feedback)的静态优化的相似之处在于,它也包括在将被优化的代码中插入插截、编译它,并将其与运行时程序库静态或动态的绑定起来。然而,动态优化与静态优化的不同之处在于,被插截的代码(instrumented code)是在使用实际用户数据、实际执行程序时被观察的,而执行代码是被当场再优化的(即如此搜集的关于程序运行的信息被用于在同一运行中对代码进行再优化,用于随后的(同一次运行中)的执行)。动态优化所产生的优化代码常常比静态优化技术所能取得的效率更高,因为能够集中关注于例如代码的那些被频繁使用的部分,这些部分的效率的提高可以影响到如实际的程序使用所表现的整体性能。此外,使用动态优化时,不需要客户执行繁重的生成假设数据集的任务。然而,在上述动态优化系统中,动态优化的缺点是必须进行的信息的收集和编译工作是相继散布在应用代码的执行中的,这样就增加了应用的执行时间。应用的运行时间方面因优化得到的改善必须超过此附加成本,才能从动态优化中获得任何益处。动态优化的例子包括人们提出的通过对Java字节代码进行动态编译和优化来优化Java应用的执行的技术。此项技术的关键是,由于典型的字节代码执行显著慢于大多数编译的应用,运行时优化处理的开销可以由执行过程中的不大的改善而吸收。而这样的机会在已高度优化的非Java(二进制代码)应用中是很少存在的。此外,该方法所采用的很多技术,如优化方法调用,并不是普遍适用的。其它项目,如V.Bala等人的“Transparent Dynamic Optimizationthedesign and implementation of Dynamo”(HPL 1999-1978 990621)中所描述的技术,通过重新安排代码布局来改善指令缓存局部性,来解决动态改善运行时性能的问题,它所基于的假设是,开销可以由所产生的执行时间方面的改善来补偿。然而,Dynamo技术没有利用插截信息(instrumentation information),而且由于它是为单处理器系统设计的,也没有考虑多处理器应用。然而,今天的计算机系统通常包含不止一个处理器。即使在低端,单片多处理器也正在变得普遍起来。常见的情况是,在许多这些配置中,至少其中的一个处理器被利用不足。利用多处理器能力以改善程序执行的早期努力集中于诸如应用的自动并行化的技术。这些技术只取得有限的成功,这是由于多种原因,其中最显著的一点是自动并行化最适用于数值计算密集的应用,特别是哪些使用Fortran编写的应用;而通常以C语言编写的商业事务处理应用,事实证明不那么适于这种方法;而且,即使对于较常规类型的代码,自动并行化也已证明在实践中难以实施。因此,显然需要一种优化处理过程,它可以利用多处理器系统的独有特性,并面向更广泛类别的代码。
技术实现思路
鉴于传统方法和结构的上述和其它问题、障碍和缺点,本专利技术的一个目的是,通过抓住时机地利用一个或多个空闲的或利用不足的处理器,而提高多处理器系统中的程序执行效率。本专利技术的另一个目的是通过了解软件系统的执行特征,并应用此种知识,以对系统的用户透明的方式,来调整和提高在当前主机系统上的执行行为,而改善该软件系统的性能。具体而言,本专利技术试图通过利用对称或分布式多处理器系统中的可用周期,实现此性能提高,而不妨碍被优化应用的执行,从而对传统方法和系统进行改进。在本专利技术的第一个方面中,一种在多重处理环境中进行透明动态优化的方法(和系统),包括使用运行于系统的另一个处理器上的执行监视器,来监视一个第一处理器上的应用的执行,并使用运行于系统的该另一个处理器上的运行时优化器,来透明地优化原始应用的一个或多个片段。在本专利技术的第二个方面中,一种用于多处理器计算环境对应用进行相对于其执行环境的同时的、动态的优化的方法,包括在系统的一个第一处理器上执行该应用的被插截的(instrumented,被加入检测代码的)复本;使用运行于该系统的另一个处理器上的执行监视器监视该应用的执行,该监视是参照执行特征而进行的,该执行特征是通过执行包含于该应用的被插截的复本中的插截代码而产生的;使用执行于该系统的另一个处理器上的运行时优化器对原始应用的一个或多个片段进行优化,该优化是参照该执行监视器所收集的执行特征而进行的,并且不会影响并行执行的应用的性能;通过使用新近优化的片段代替一个或多个片段而修改原始执行应用,该修改是以对该应用的用户透明的方式进行的。在本专利技术的第三个方面中,一种用于在多处理器系统中对应用进行相对于其执行环境的同时的、动态的优化的方法,包括使用运行于一个单独的处理器上、或作为单独的处理过程运行于多个处理器上的执行监视器,监视运行于一个第一处理器上的一个程序或应用的每次执行;由二进制代码在其执行时,创建二进制代码的执行特征的简表数据(profile data),该二进制代码包含用于监视性能的插截代码;执行监视器不断地评估该简表数据;并当一个给定阈值条件满足时,调用动态优化器,来优化频繁执行的代码片段,优化后的代码片段被插入执行的指令流中,用于其后续的执行。在本专利技术的第四个方面中,一种在共享多重处理(sharedmultiprocessing,SMP)系统中进行透明动态优化的方法,包括在一个第一处理器上执行应用二进制程序;在该系统的另一个处理器上监视该执行的行为,并在应用二进制程序执行的同时,对应用二进制程序的执行进行优化。在本专利技术的第五个方面中,一种在多重处理系统中进行透明动态优化的系统,包括一个执行监视器,用于监视在一个第一处理器上一个应用二进制程序的执行,该执行监视器运行于该系统的另一个处理器上,该执行监视器包括一个动态优化器,用于与监视同时地优化该原始应用二进制程序的一个或多个片段,该优化器执行于该系统的该另一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:R·奈尔J·K·奥布赖恩K·M·奥布赖恩P·H·奥登D·A·普莱纳
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1