用于通过优化性能模型提高软件执行时间的方法和系统的制作方法

文档序号:6350884阅读:163来源:国知局
专利名称:用于通过优化性能模型提高软件执行时间的方法和系统的制作方法
技术领域
本发明涉及一种用于根据软件片段可用的资源来管理该软件片段的行为的方法和系统。
背景技术
根据设计阶段认可的功能测试(FVT)案例的结果来预测在客户生产环境中的应用的确切行为是极其具有挑战性的,即使其合并在软件开发实验室中普遍使用的附加测试 (容量规划、系统测试)中。最可能的是这种测试案例从功能的观点鉴别有意义的测试,但是其是在与生产阶段的确切客户执行环境不可能匹配的操作条件下执行的。大量应用解决此问题的广泛使用的方法是所谓的“容量规划”或“性能负载”测试,其中应用的一些特定 (例如准确的硬件资源需求)和有关的(例如可靠性)方面在不同的场景中测试。在这些场景中,操作环境与“理想”测试案例不同,因为在客户端生产期间对于软件应用可用的计算资源量不可预知在真实条件下,应用经常部署在大群集数据中心中,且其调度与其他并发应用一起发生,这样可用资源中可发生相当大的改变。这些是应用可用的计算资源相比于理想的单机系统或模拟测试可能改变的一部分原因。期望“容量规划”比当前可能的提供更精确的预测当前最好的实践是容量规划阶段的结果是应用在最坏条件下正确操作所需的硬件需求的定义。换句话说,“性能负载”或“容量规划”工具经常提供正确运行所需的操作资源的测量,即从功能的观点在“最坏情况”下。US5655074描述了一种用于大型软件系统的系统工程的软件工具。该处理开始于步骤针对每个可唯一识别的软件组件,收集关于软件系统的大量特征的观测数据(包括历史的和计划的系统调节)。还收集的是关于每个软件组件的缺陷或问题的历史数据。缺陷数据统计地映射至软件的测量特征,以建立风险指数。风险指数可用作建立预测软件性能的软件特征的预测工具,或者备选的,风险指数可用于为组件排序,以确定哪些组件在努力节省资源的情况下需要较少测试。

发明内容
如所讨论的,致力于识别最小系统需求的现有技术的测试技术是静态的方式。本发明的目的在于当应用在客户端环境中执行时,动态地提供关于应用的预期性能的信息。根据本发明,提供了一种如所附独立权利要求1的优化软件执行的方法,如所附权利要求12的设备、如所附权利要求13的计算机程序、如所附权利要求14的性能模型以及如所附权利要求15的计算机可读介质。进一步优选的实施例在从属权利要求中定义。通过查阅附图和详细描述,本发明的优点对于技术人员将变得清晰。其用意在于任何附加的优点也包含于此。


本发明的实施例现将通过参照附图的示例的方式描述,在附图中相似的标记表示相似的元件,其中图1示出了本发明的第一实施例的步骤;图2示出了形式为多维空间200的性能模型的示例;图3示出了形式为多维空间300的性能模型的另一示例;图4示出了本发明的第二实施例的步骤;图5示出了本发明的第三实施例的步骤;以及图6示出了适于实施某些实施例的计算机环境。
具体实施例方式提议结合性能模型将应用构建(设计、实施和组装)以及部署到操作环境中。该性能模型可以利用具有附加测量的应用测试过程来实现,其中附加测量专注于以关于该应用的特定范围优选为不可知的方式使得执行环境可用的资源,从而使其可应用于最大可能数量的应用。图1示出了本发明的第一实施例的步骤。如图所示,该过程开始于步骤100,继续进行至步骤110,在该步骤110提供了例如以下将进一步详细描述的性能模型。在步骤120, 执行与性能模型相关的应用,在步骤130,从例如操作系统或其他监测软件或硬件接收用于定义该模型的系统资源测量。在步骤140,该测量用于从性能模型中提取对应于所述测量的性能值。在步骤150,确定该应用是否已结束,在这种情况下该过程在步骤160结束、或者该过程返回至步骤130,使得只要该应用可运行,过程就继续根据监测的系统资源的可用性来监测软件的性能水平。相应地,提供了一种在执行软件的系统中优化所述软件的执行的方法,包括以下步骤提供代表不同系统条件下所述软件的性能的性能模型,其中系统条件以一个或多个预定系统资源来描述,接收给定时刻的每个预定系统资源的测量,以及从所述性能模型中提取对应于所述测量的性能值。在本说明书中使用的短语“性能”可以反映软件应用的任意期望行为。根据优选实施例,讨论中的性能标准为软件的可靠性。举例来说,例如作为操作环境的WebSphere应用服务器、Tomcat, JBoss等的应用服务器,和作为应用的J2EE应用,资源(cpu、存储器、磁盘空间、虚拟存储器等)将被识别并在形式上定义,因为资源也可与硬件资源在逻辑上且非直接地相关,例如由应用服务器使得对于J2EE应用可用的那些资源以及可以以编程方式使得可用的那些资源。一组固定的可用计算资源(例如IGB RAM、100GB磁盘空间、400套接字等)可以视为NR维空间中的应用操作点,其中NR是指与性能测量有关的选定计算资源(在托管 (hosting)环境中定义的计算资源的子集或全集)的数量。“性能模型”根据应用的每个功能测试案例来计算,使得其将允许每个应用操作点提供应用性能的数字形式测量(与相同软件的其他版本或相同软件的其他部署可比较)这是如何获得的将在实施部分详细解释。表达性能模型信息的人为结果可以是一个或多个矩阵,经常为稀疏矩阵,其中每个轴将与用于性能计算的一个计算资源相关联,并且每个单元将表示在正常化以后例如死机、服务质量的失误、异常、超时等“问题”发生的概率。每个这种“问题”优选地在形式上定义为条件,例如依照日志文件中文字的匹配、CIM信息模型上的布尔表达式等。根据某些实施例,性能模型可包括一组匪个不同矩阵,每个矩阵与特定定义的问题相关或根据附加标准甚至不同,例如涉及相同“问题”定义但针对不同平台。根据某些实施例,性能模型通过对软件测试而进行填充。此软件的测试可包括在配置了系统资源的每个预期组合的系统中重复执行该软件,以及汇编与在该配置下发生的行为有关的统计数据。可如此测试的系统资源的一个示例为系统存储器,系统或应用死机的发生可以用作用于统计数据基础的正式测量,其例如使用监听windows事件日志的日志监测软件来确定。可以在多种存储器条件中测试单个测试案例以将关于计算资源利用率的、软件程序的存储器消耗量“个性”或非功能性“方面”简档进行分类,在此示例中,计算资源是存储器,但是相同的方法可应用至套接字、cpu单元等。可预料的是,当可用存储器下降至某水平以下时测试案例将易于失败,这在真实环境下可能发生,因为其他应用正在消耗存储器。有利的是,通过允许经由程序接口来配置其计算资源的操作/执行环境,可以执行重复的测试。一个示例可以为虚拟机,其可以利用不同的资源参数顺序地重启。在这种环境中,根据要测试的参数重新定义存储器、处理器的数量或可用套接字的数量非常简单。 从多个测试执行得到的全部结果可以用于估计失败的平均概率,例如依照坏执行的测试案例的数量比上全部测试案例的数量,和/或其发生率的方差。如果测试条件由多维空间中的点来标识,其中每个坐标轴为一个计算资源。最后, 对于每个测试条件,可以估计具有平均参数值和方差参数值的概率密度分布(Pdf)并可与每个点相关。当测试案例重复的数量超过阈值(阈值本身可以使用显著性测试分析来计算)时,例如1000,可假设正态(高斯)Pdf。估计的平均中值和方差可在运行时应用,以用于动态估计在根据可用计算资源的当前操作条件下,相同应用发生应用失败的概率。图2示出了形式为多维空间200的性能模型的示例。具体如所示,X轴210和Y轴 220对应于可用CPU和可用存储器,原点在左下方。同时ζ轴230表示错误的可能性。错误的可能性优选为正态化,从而在标准条件下给出错误的可能性,其中错误的可能性可表示错误在预定周期、循环次数、迭代次数等内发生的百分比机会。如图2中所示,定义了由对应于值的密集矩阵的一系列点241构成的表面M0,使得对于一组定义的规律间隔的X和Y 轴值的每个组合,存在一个错误的可能性值。X轴值和Y轴值之间的间隔可以选择以对应于来自操作系统或其他系统监测软件应用的测量的粒度,使得检测软件的输出可以直接被映射到错误的可能性值。X轴值和Y轴值之间的间隔可以选择成比来自操作系统或其他系统监测软件应用的测量的粒度小得多,以使对于来自监测软件的任意输出来说,都将有一个与测量值只有非常短距离的x_y组合,其可以直接地用于提供错误的可能性值的接近近似值。此方法的优点在于其不取决于特定的操作系统或监测软件,使得该模型可以用于很广的不同环境范围。X轴值和Y轴值之间的间隔可以选择在任意便利值,例如使得任意两个临近点之间的ζ轴值的变化不超过预定余量。当来自操作系统或其他系统监测软件应用的测量落入一些x_y值组合之间时,可以对附近的点进行插值以估计用于所测量值的值。根据某些实施例,不是将表面存储为一组点,而是整个表面的形状可以被插值以能够推导出描述该整个表面的函数,从该函数可以根据需要推导出对于任意χ-y组合的错误的可能性值。此方法的优点在于其可以需要更少的存储空间。图3示出了形式为多维空间300的性能模型的另一示例。X轴210、Y轴220和ζ 轴230与参照图2描述的对应。如图3所示,其定义了表面340,其由对应于值的稀疏矩阵的一系列点341组成,使得对于选定的X和Y轴值的组合具有错误的可能性值。一般地,与图2的方法相比,根据图2的实施例的性能模型将包含用于相似信息量的更少的数据,或者用于等量数据的更多的信息。每个点之间的距离可以选择成比来自操作系统或其他系统监测软件应用的测量的粒度小得多,以使对于来自监测软件的任意输出来说,都将有一个与测量值只有非常短距离的x_y组合,其可以直接地用于提供错误的可能性值的接近近似值。此方法的优点在于其不取决于特定的操作系统或监测软件,使得该模型可以用于很广的不同环境范围。X轴值和Y轴值之间的距离可以选择在任意便利值,例如使得任意两个临近点之间的ζ轴值的变化不超过预定余量。当来自操作系统或其他系统监测软件应用的测量落入一些x_y值组合之间时,可以对附近的点进行插值以估计用于所测量值的值。根据某些实施例,不是将表面存储为一组点,而是整个表面的形状可以被插值以能够推导出描述该整个表面的函数,从该函数可以根据需要推导出对于任意χ-y组合的错误的可能性值。虽然图2和图3示出了表示用于两个系统条件变量的组合的错误可能性率的三维表面,但将意识到的是以上讨论的所有方面可扩展至任意数量的系统条件变量,即具有多于三维的空间。因此,该模型可包含多组不同的性能值,每组与所述测量的一些或全部有关。预定系统资源可包括可用系统CPU容量、可用系统存储器、可用系统磁盘或可用网络套接字中的至少一个。如上参照图2和图3所述,可提供确定性能模型是否包括精确对应于所述测量的性能值的步骤,并且在性能模型不包括精确对应于所述测量的性能值的情况下,从所述性能模型中提取出分别对应于一个或多个最接近可用测量值的一个或多个邻近性能值。或者,可以提供进一步地步骤以根据所述邻近性能值对性能值进行插值。—个重要的优点在于“性能模型”可以是针对应用的超出其常规功能方面的行为方面的正式且科学的(因此在应用和系统间可比较)文件。此改变打开了本公开的大量可能应用领域。可意识到的是,根据本发明的性能模型可促进相似产品能力的比较。为了使其可行,不同的产品理论上应当使用共享的用于测量性能的性能语句(statement)的定义以及组成空间的轴的资源定义。这应当至少在相同产品的不同版本之间是可能的,甚至不同品牌之间也是可能的。图4示出了本发明的第二实施例的步骤。图4的过程与图3的相同,但是详细阐述了提供性能模型的步骤Iio的某些示例性子步骤。更具体地,图4示出了一种创建这种性能模型的可能的方法。如所示,在子步骤110中定义的过程开始于步骤411,由此测试系统的资源被配置用于测试执行的目的。如上讨论的,其可以以多种方式实现,取决于测试系统本身的性质,例如通过适当地配置虚拟机、应用服务器等。接下来,该过程进行至步骤 413,在该步骤期间监测应用并且记录任何错误。一旦该应用已经运行至结束、或者通过预定的测试序列、或者经过预定时间周期,过程进行至步骤415,在该步骤处考虑应用是否已经在汇编性能模型所需的每个不同测试系统配置下执行过。如果没有,则该过程返回至步骤411,在该步骤测试系统被设置为下一个所需的配置,以使该过程在每个所需的配置中依次循环。如果该应用已经在汇编性能模型所需的每个不同测试系统配置下执行过,则该过程进行至步骤416,在该步骤处由步骤415的每个迭代所记录的错误连同针对每个相应错误的系统配置一起被大批处理,以如上所讨论的来汇编性能模型。一旦性能模型被及时汇编,则其可与应用的拷贝一起、或者以其他方式分发给应用的用户,于是过程如上所述的在步骤120重新开始。优选地,按如下产生性能模型计算借助于迭代式改变由应用服务器使得可用于每个应用的资源并通过简单地计数在该点通过的成功测试(其为通过一些质量标准的执行测试)来追踪该点的“性能”,从而(利用开发组中广泛可用的测试自动化技术)自动执行大数量的测试。作为应用服务器的替换方式,相同的过程可以应用于每个托管环境中,在该托管环境中,专用于应用的资源可以以编程方式设置或控制。此过程将推导在不同操作条件下该应用的行为图。根据图4的步骤的进一步改进,或者以其他方式,可以实现以下步骤来定义性能模型1)识别覆盖应用功能的测试案例列表2)识别要考虑的逻辑资源列表,例如cpu单元、存储器、磁盘、套接字等3)识别质量定义列表“问题”被定义为不满意的质量测量(在系统或应用日志中、来自内部/外部监测的性能结果中、性能指令等中遇到某些关键字)。至少此定义可与利用商用平台中的商用监测软件可监测的内容相匹配(细节可在列举软件包和平台时提供)。4)识别并编纂逻辑资源如何被绑定至物理和操作系统资源(在最简化的情况中可以为一对一),这是为了更好地与监测软件交互操作,最好的是基于一组从商用资源监测包直接可用的测量、以其原本的形式计算性能测量。应用可以公开几个用于一种预测“失败 /问题”的矩阵(例如用于不同平台、或用于所支持的不同监测软件)。5)将每个资源视为多维空间r(l. . . NR)的轴。每个单元从0开始。6)在多维的每个轴上以某粒度水平选择一些采样点,并将采样空间以整数值失败 _空间[il][i2]··· [iNR]的NR维稀疏矩阵表示。7)将由此得到的测试点汇编成列表,其中每个点来源于步骤1)中的单个测试案例,并通过用于每个给定单个测试场景的应用输入参数的蒙特卡罗变体来获得。8)对在步骤6)选择的所有的采样点执行步骤7)所汇编的每个由此得到的测试点,每次根据由采样点和收集的结果(失败或没有失败)所识别的资源矢量来改变可用于应用的资源(资源上下文矢量)每个失败/问题结果使对应的矩阵单元(从0开始)中的值增加。在第1)点为每个测试案例重复该过程。9)估计由此得到的失败模型参数,其用于“失败空间”的每个点,根据如下过程估计失败的概率递增地对在每个测试案例在失败空间[il][i2]... [iN]的单元中的某个资源条件(资源上下文)中运行时发生的失败/临界条件/漏洞的数量求和(从0开始),该失败空间表示测试案例执行的资源上下文。优选地,由此得到的性能模型在分发之前填充,该性能模型与软件一起分发,例如通过封装在与其所提到的应用一起部署的文档中。或者该模型可通过单独的通道发送,例如通过网络等下载。然后,性能模型在执行时间时使用,例如与资源监测或资源预测(借助于历史数据)软件一起使用。执行环境加载该应用,并获取其可靠性模型,执行环境的一组计算资源被指定为将由选定的资源预测/监测软件所预测/监测。然后,这组被预测/监测的资源用于将对应于资源空间中的点的值的矢量进行组合,其可以用作资源上下文矢量。通过读取模型中的值或者从模型中最接近的可用点进行插值,资源管理器访问可靠性模型并取回对资源上下文矢量所识别的点可用的可靠性值。图5示出了本发明的第三实施例的步骤。图5的处理与图3的相同,但是其详细地阐述了步骤140和150之间的某些进一步的步骤。更具体地,图5示出了一种使用在步骤140从性能模型提取出的性能值的方式。如所示,在步骤140之后不是直接进行至步骤 150,而是该过程进行至步骤M1,在该步骤,确定在步骤140提取出的性能值是否降低至预定阈值以下。根据本实施例,此预定阈值表示可接受的性能水平。此阈值可以为与该应用、特定用户账户、特定机器、该应用执行的一天中的时间等特别关联的值。也可定义应用的层级,这样用于特定应用的阈值由其在该层级中的位置所定义,这样更重要或紧急的应用可以考虑为更不容忍错误,因此为这些应用设置更低的阈值。如果发现性能水平在阈值之上,则表示根据性能模型,该应用在当前操作条件下表现应当令人满意,则该过程如上所述地进行至步骤150。另一方面,如果发现性能水平低于或等于该阈值,则表示根据性能模型,该应用在当前操作条件下表现不令人满意,例如死机的可能性大于某个值,则过程进行至步骤M2。在步骤M2,该过程执行步骤以减轻与应用预期的不良性能关联的问题。举例来说,例如通过弹出窗口、邮件等,系统可以自动向应用的用户、系统管理员或其他个体报警预期的不良性能。系统也可以通过寻找以获得另外的资源,例如通过重新定义操作环境本身、或关闭不太重要的应用或过程,从而自动采取步骤来重新调整情形。相应地,提供了当所述性能值下降至预定阈值以下时向用户报警的步骤,或者在所述性能值下降至预定阈值以下时,尝试自动地协商用于所述软件的来自所述系统的增长的资源分配。作为以上的进一步发展,可以想象系统可能正在执行多个与根据本发明的性能模型相关联的应用。在此情况下,系统可以尝试以优化整体性能的方式将系统资源分配至不同的应用。2)然后,这组被预测/监测的资源用于将对应于资源空间中的点的值的矢量进行组合,其可用作上下文资源矢量3)给定预测的上下文资源矢量和性能模型,针对该给定的上下文可以获得失败/ 问题的概率。4)在此阶段,管理员可固定一阈值,使得如果该系统超过该值,则资源管理员可发起一些动作以阻止那些可能的问题,包括a)通知管理员b)例如通过与供应系统交互,再分配/提高可用于应用的资源(移动至不同的群集节点)c)自动提高系统记日志的频率,和/或多样性(如果信息类型被记录)。根据另一实施例,提供了一种性能或可靠性模型,其表示应用在不同系统资源条件下的行为。此模型可采用一个或多个稀疏矩阵的形式,其提供了针对不同条件组合的可靠性或性能值。此模型被分发给应用的用户,并在应用执行期间参照由操作系统或其他监测软件提供的系统资源信息,咨询该模型以提供在当前操作条件下对应用的预期性能的指示。例如在该指示落入满意操作的预定界限之外时,该指示可以通知给用户。该系统也可尝试重新协商所分配的系统资源以提高性能。可注意到的是,在某些真实世界中,在不同的操作条件下的应用性能可能变化。根据某些实施例,测试不同的测试情景可以设计为测试软件性能的不同方面。这种情景可重新产生一般的系统事件,例如“向系统注册新用户”。同样地,性能模型也可被构造为使其包括分别与软件性能的不同方面有关、或与不同的使用情景对应的多个子部分。有利地,这些方面和/或使用情景可对应于在测试阶段中使用的诸方面/测试情景。这些方面可以表示为独立的性能空间。当由此构造性能模型时,通过例如可描述情景或者情景的子部分的“标签”,可以期望将性能模型的不同方面与不同的情景相关联。因此描述情景或情景的子部分的一种方式可以依照与其关联的工作负荷,因为不同的工作负荷水平将导致独立的性能“空间”。如下表中所示,性能模型包含对应于系统事件“向系统注册新用户”的性能空间,以及对应于1-20个用户连接至系统的情况的性能子空间、以及对应于21至100个用户连接至系统的另一种情况的性能子空间,这是基于该系统在这两种负载情景下将具有不同的行为。
权利要求
1.一种在执行软件的系统中优化所述软件的执行的方法,所述方法包括步骤提供性能模型,所述性能模型表示所述软件在不同的选定系统条件下的性能,所述系统条件以一个或多个预定系统资源来描述;接收给定时刻的每个所述预定系统资源的测量;以及从所述性能模型中提取出对应于所述测量的性能值。
2.根据前述任一权利要求所述的方法,包括进一步的步骤通过测试所述软件来填充所述性能模型。
3.根据权利要求2所述的方法,其中所述测试所述软件包括在配置了选定系统资源的每个组合的系统中反复执行所述软件,以及汇编与在所述配置下应用的行为有关的统计数据。
4.根据权利要求3所述的方法,其中所述软件针对系统资源的给定组合多次执行。
5.根据权利要求4所述的方法,其中对于所述软件在系统资源的给定组合下的每次执行,对所述执行所需的输入数据的不同值以随机或伪随机的方式或借助于其蒙特卡洛变体来定义。
6.根据权利要求3所述的方法,其中配置了系统资源的每个期望组合的所述系统是虚拟机。
7.根据权利要求2所述的方法,其中所述模型在分发前被填充,并且所述性能模型与所述软件一起分发。
8.根据前述任一权利要求所述的方法,包括进一步的步骤确定所述性能模型是否包括精确对应于所述测量的性能值,并且在所述性能模型不包括精确对应于所述测量的性能值的情况下,从所述性能模型中提取出分别对应于一个或多个最接近的可用测量值的一个或多个邻近的性能值。
9.根据权利要求8所述的方法,包括进一步的步骤根据所述邻近的性能值对性能值进行插值。
10.根据前述任一权利要求所述的方法,包括进一步的步骤当所述性能值下降至预定阈值以下时,向用户报警。
11.根据前述任一权利要求所述的方法,包括进一步的步骤当所述性能值下降至预定阈值以下时,尝试自动协商用于所述软件的来自所述系统的增大的资源分配。
12.根据前述任一权利要求所述的方法,其中所述性能模型包括多维矩阵。
13.根据前述任一权利要求所述的方法,其中所述模型包含多组不同的性能值,每组与所述测量的一部分或全部有关。
14.一种装置,其包括适于执行根据权利要求1至13中任一权利要求所述的方法的每个步骤的装置。
15.一种计算机程序,其包括当所述计算机程序在计算机上执行时用于执行根据权利要求1至13中任一权利要求所述的方法的每个步骤的指令。
16.一种当所述计算机程序在计算机上执行时根据权利要求1至13中任一权利要求的性能模型。
17. 一种计算机可读介质,其上编码有根据权利要求15的计算机程序或根据权利要求 16的性能模型。
全文摘要
提供了一种表示应用在不同的系统资源条件下的行为的性能或可靠性模型。此模型可为一个或多个稀疏矩阵的形式,其提供了用于不同条件组合的可靠性或性能值。此模型被分发给应用的用户,并在应用执行期间参考由操作系统或其他监测软件提供的系统资源信息咨询该模型,以提供在当前操作条件下应用的预期性能的指示。此指示例如在该指示落入预定的满意操作界限以外的情况下可以通知给用户。系统也可尝试重新协商分配的系统资源以提高性能。
文档编号G06F9/50GK102576311SQ201080047587
公开日2012年7月11日 申请日期2010年8月31日 优先权日2009年10月21日
发明者M·维拉尼, R·甘杰米, V·夏卡 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1