用于预测多层计算机软件系统的性能的方法和设备的制作方法

文档序号:6359332阅读:167来源:国知局
专利名称:用于预测多层计算机软件系统的性能的方法和设备的制作方法
技术领域
本发明涉及分布式计算。更具体地讲,本发明涉及用于预测在分布式计算机系统上运行的多层计算机软件系统的性能的方法和设备。
背景技术
多层系统或架构是ー种计算机软件系统,其功能通过在分布式计算机硬件上运行 的几个软件组件的协作来实现。使用多层软件架构建立许多基于互联网的软件服务,诸如商业、旅行、卫生保健和金融场所。在这种架构中,前端web服务器(例如,Apache服务器或Microsoft的IIS服务器)接受用户请求并把它们转发给处理请求的应用层(例如,Tomcat或JBoss服务器),并且必要的信息存储在存储层(例如,MySQL、DB2或Oracle数据库)中。建立多层软件服务的关键挑战在于能够满足服务的性能要求。设计过程通常包括回答问题,诸如“在每ー层中需要多少个服务器以便对于90%的请求提供50 ms的平均响应时间”。一旦建立,设计者随后经常担心当前架构是否能够满足未来的性能要求,例如,当由于服务的流行或极端事件(诸如,Slashdot效应或大規模DoS攻击)而导致请求工作量增加吋。提高复杂多层应用的性能是重要的任务,但常见的第一尝试解决方案是投入更多的硬件资源并分割工作量。云计算基础设施(诸如,Amazon的EC2和Google的AppEngine)已使扩展应用可用的硬件资源变得既便宜又快速。例如,Animoto在三天内把它的EC2实例从300扩展至3000。这种弹性基础设施允许应用高度可扩展,然而,设计者必须小心地决定在哪里放置这些可用资源以在应用性能方面实现最大利益。为了回答这种问题,关键的是知道当扩展分配给服务的资源时的性能提高(或性能缺乏,暗示瓶颈)。准确地预测性能但并不实际按比例建立服务的能力能够显著地帮助这种服务的设计者提供高性能。然而,因为多层系统的复杂性质,预测多层系统的性能是有挑战性的。例如,典型的请求的处理需要不同层之间的复杂的相互作用。此外,这些应用具有重要的内部逻辑,例如,它们使用高速缓存并对最大线程的数量施加硬限制。最后,在扩展部署中,可能出现新的相互作用或瓶颈,或者已有瓶颈可能在不同层之间移位。已提出许多统计方案(黑盒方案),这些统计方案试图通过推断随后用于预测性能的请求的端到端处理路径(诸如,远程过程调用(RPC)、系统调用或网络日志文件)建立整个系统的概率模型。这些技术是通用的,但缺乏高准确性。白盒方案或技术使用系统特定知识以通用性为代价提高准确性。Magpie需要中间件、应用和监测工具的修改,以便产生能够由Magpie理解并分析的事件日志。Pinpoint通过修改中间件利用ID标记每个请求,且然后通过聚类和统计技术使失败的请求与引起失败的组件相关联。Standust也通过修改中间件对于姆个请求使用ID,把所有日志放在数据库中,并使用数据库技术分析应用行为。灰盒方案提供中间情况它们与白盒方案相比具有较小侵入性,但比黑盒方案更准确。例如,vPath提出用于在多层系统中捕捉请求的端到端处理路径的新方案。vpath的关键观测在于分配単独的线程用于处理多层应用中的各请求。这允许vPath把线程关联到与给定网络活动相关的系统调用,并因此准确地链接与单个客户端请求对应的各种消
ο已有方法分别地建模或模拟多层系统的每ー层。由于在不同层的处理高度相关,所以这些方案在准确性方面受到限制。因此,需要用于建模或确定多层系统的性能的改进的方法和设备。

发明内容
公开了ー种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的方法。在一个实施例中,该方法包括以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件的层;收集多层计算机软件系统的软件组件的所有层之间的业务轨迹(trace);收集在多层计算机软件系统的软件组件处的CPU时间;以及从收集的业务轨迹推断多层计算机软件系统的性能数据。还公开了一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的系统。在一个实施例中,该系统包括请求产生器,用于以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件;业务监测器,用于收集多层计算机软件系统的软件组件的所有层之间的业务轨迹;CPU监测器,用于收集在多层计算机软件系统的软件组件处的中央处理单元(CPU)时间;和处理器,执行用于从收集的业务轨迹推断多层计算机软件系统的性能数据的指令。


图I是用于确定多层计算机软件系统或架构(系统)的关键性能特征的小规模受控环境的示例性实施例的方框图。图2是表示用于使用图I的环境预测多层计算机软件系统的性能的本发明的方法的流程图。图3是用于根据图2的方法从收集的业务轨迹推断多层计算机软件系统的性能数据的设备的方框图。图4是用于使用图3的设备推断在多层计算机软件系统的不同层处捕捉的消息轨迹的方法的流程图。图5是将根据图2的方法确定层软件组件的状态的状态机的示图。图6是能够用于实现本发明的方法的计算机之一的示例性实施例的方框图。
具体实施例方式本发明的方法试图识别确定多层计算机软件系统或架构的性能特性的主要參数。、如早前所述,计算机软件系统的各种功能通过在分布式计算机系统(例如,经计算机网络彼此通信的两个或更多的服务器或计算机)上运行的几个软件组件(层)的协作来实现。这些性能參数包括软件组件之间的相互作用、这些相互作用的时间相关性、用于完成请求的处理的这些部件的中央处理单元(CPU)时间和输入/输出(IO)等待时间。这些性能參数能够用于通过已有方法(诸如,排队理论或模拟)在新环境中预测多层计算机软件系统的性能。本发明的方法通过利用小規模受控环境(即,包含比典型多层计算机软件系统少很多的数量的软件组件层的环境)经黑盒方案确定多层计算机软件系统的关键性能特征(包括软件组件之间的计算机网络业务相互作用及其时间相关性、在每个部件的CPU时间和在每个部件的IO等待时间)。在这种小規模受控环境中,能够控制系统的输入(请求),从而每个请求在时间上与其它请求分开。由本发明产生的參数能够由已有技术(诸如,排队理论和模拟)使用以在未实际部署系统的情况下在新的可能很大的计算基础设施中准确地预测多层系统的性能。结果能够用于资源供应、容量规划和问题解決。该方法通常包括数据收集过程和推断过程。数据收集过程收集每对软件组件之间 的计算机网络业务轨迹和在每个软件组件的请求所需的CPU时间。推断过程推断软件组件之间的相互作用业务的相关性和在部件处的每个请求的逗留时间。这种逗留时间包括CPU时间和盘IO等待时间。然后,通过提取CPU时间,获得盘IO等待时间。图I是用于预测多层计算机软件系统或架构(系统)的性能特征的小規模受控环境100的示例性实施例的方框图。环境100包括多个层软件组件(例如,多个Apache web服务器、Tomcat服务器和诸如MySQL的数据库服务器)10も、1022、102n,它们形成多层计算机软件系统。每个层软件组件10A、1022、102n在単独的物理机器(服务器计算机)上和/或在単独的虚拟机(即,在主机计算机的软件层上面工作的计算机的软件实现方式)上运行。层软件组件的数量显著小于典型多层计算机软件系统中的软件组件的数量。图I的环境100还包括用于以受控的速率向系统产生客户端请求的请求产生器110。非限制性地,请求产生器110能够是在与服务器或主机计算机分开的计算机上运行的Hewlett-Packard的HP LoadRunner系统。姆个请求穿过所有层软件组件102” 1022、102n并且能够通过层软件组件10 进入和离开该系统。请求产生器110用作多层系统的客户端计算机或者模拟多层系统的客户端计算机。请求通常由请求产生器110以用户选择的速率自动发送。选择发送请求的速率,从而前ー请求的执行不干扰当前请求的执行,或者换句话说,从而请求在时间上彼此分开。提供多个业务监测器IU1UU2UUn(每个业务监测器用于每个层软件组件)用于捕捉朝向它们各自的层软件组件的所有数据业务以及来自它们各自的层软件组件的所有数据业务。每个业务监测器记录数据的发送时间和接收时间。提供多个CPU监测器每个CPU监测器用于每个层软件组件)用于记录在它们各自的层软件组件使用的CPU周期。业务和CPU监测器可实现于硬件、软件或者它们的任何组合中。例如,但非限制性地,业务监测器能够是常规的包分析器(诸如,tcpdump),并且CPU监测器能够是常规的资源监测器应用。提供多个时钟Iie1Uie2.Ii6n(每个时钟用于每个层软件组件)用于通过从数据包推断获得发送和接收定吋。每个层的时钟彼此同歩。发送和接收定时随后用于在它们各自的层软件组件处的数据包的时间相关性。图2是表示用于确定多层计算机软件系统的性能參数的使用图I的环境执行的方法的流程图。在块202中,请求产生器以能够由用户控制的速率产生发送给系统的客户端请求。当请求被系统处理时,业务监测器在块204中收集所有层软件组件之间的网络业务轨迹,而CPU监测器在块206中收集在所有软件组件处的CPU时间。在图2的块208中,从在块204和206中收集的业务轨迹205和CPU时间207推断多层计算机软件系统的性能參数。这些性能參数能够包括层软件组件之间的相互作用(例如,不同层之间的一系列消息交換)209、相互作用的时间相关性210和在每个层软件组件的逗留时间211。逗留时间211是CPU时间207和盘IO完成时间213之和。在图2的块212中,从在块208中获得的逗留时间211减去CPU时间207,以获得在每个层软件组件的盘IO完成时间213。 图3是用于执行图2的方法的块208和212的过程的“推断”计算机300的方框图。计算机300包括CPU 304和存储器306。CPU 304接收由图I的业务监测器11も、1122、112n收集的数据作为输入,该数据包括发送给对应的层软件组件以及来自对应的层软件组件的数据包。CPU 304还接收来自时钟Iie1Uie2Uien的时钟数据作为输入,该时钟数据记录包何时被发送并由它们的对应业务监测器捕捉。CPU 304提取每个捕捉的包的源、目的地和大小信息,且执行层软件组件状态推断并输出在层软件组件的请求的逗留时间。存储器306存储由CPU 304产生的中间和最后推断数据。图4是用于使用图3的推断计算机推断多层计算机软件系统的性能特征的方法的流程图。在块402中,CPU 304使用由业务监测器1121、1122、11211收集的业务数据和由时钟116ρ1162、116η提供的时钟数据提取捕捉的包的源、目的地和大小信息。在块404中,CPU304使用层软件组件的地址把包分为下面的种类之一来自客户端的请求;对客户端的响应;对服务器(即,运行层软件组件的物理机器或虚拟机)的请求;和对服务器的响应。客户端代表多层系统的最終用户或下游层中的节点(例如,对于层I软件组件102i,层2软件组件1022将会是下游层并且请求产生器110将会是上游层。类似地,对于层2软件组件1022,层η软件组件102η将会是下游层,而层I软件组件10 将会是上游层)。服务器代表上游层中的节点。种类将会根据推断线程活动的在图3的CPU 304上运行的状态机确定层软件组件的状态。更具体地讲,为每个层软件组件创建在CPU 304上运行的状态机以推断在CPU和盘I/O等待中花费的时间,如图2中的块211和212所示。CPU监测器提供关于由每个请求消耗的CPU资源的数据。在“繁忙”状态下花费的总时间由状态机使用业务监测数据推断。通过从在“繁忙”状态下花费的总时间减去CPU时间获得I/O等待时间。图5是层的状态机500的示图。该状态机包括空闲状态502、繁忙状态504和繁忙/空闲状态506。空闲状态502指示在对应的层软件组件中没有请求或者当前未在这个组件处服务请求。繁忙状态504指示当前在对应的层软件组件服务请求。繁忙/空闲状态506指示正在对应的层软件组件处被服务的请求将会由下一包确定。感兴趣的层软件组件的初始状态设置为空闲。这个层软件组件的状态将会根据捕捉的包和状态机500而改变。例如,当层软件组件处于空闲状态502并且来自客户端的请求到达时,它的状态将会改变为繁忙状态504。当层软件组件处于繁忙/空闲状态506吋,当前层软件组件状态由下一包确定。如果下ー包是对服务器的请求,则当前状态将会被确定为繁忙状态504。如果下ー包是来自服务器的响应或来自客户端的请求,则当前状态将会被确定为空闲状态502。
通过其配置在现有技术中公知的合适地编程的计算机可执行本发明的方法。客户端、服务器和推断计算机能够各自例如使用公知的计算机CPU、存储器单元、存储装置、计算机软件和其它模块实现。计算机(客户端或服务器计算机)的非限制性实施例的方框图显示在图6中并由标号600表示。计算机600非限制性地包括处理器604,处理器604通过执行与本发明的方法对应的计算机程序指令(例如,层组件软件以及服务器或主机计算机的CPU和业务监测器或者客户端计算机的请求产生器)控制计算机600的总体操作。计算机程序指令能够存储在存储装置608 (例如,磁盘)中并且在希望执行计算机程序指令时被加载到存储器612中。计算机600还包括用于(例如,在本地或者经网络)与其它装置(诸如,客户端、服务器和/或推断计算机)通信的一个或多个接口 616。计算机600还包括输A /输出620,输入/输出620代表允许与计算机600的用户交互的装置(例如,显示器、键盘、鼠标、扬声器、按钮等)。
本领域技术人员将会意识到,执行与本发明的方法对应的计算机程序指令的计算机的实际实现方式能够还包括其它元件,并且图6是用于说明性目的的计算机的一些元件的高级表示。另外,执行与本发明的方法对应的计算机程序指令的计算机能够是更大的设备或系统的部件。另外,本领域技术人员将会意识到,本文描述的方法也可以使用专用硬件实现,所述专用硬件的电路被具体地配置为执行该方法。另一方面,可使用硬件和软件的各种组合实现该方法。尽管已在本文描述并表示了示例性附图和特定实施例,但应该理解,本发明的范围不限于讨论的特定实施例。因此,实施例应该被视为是说明性的而非限制性的,并且应该理解,在不脱离如下面的权利要求及其结构和功能等同物所阐述的本发明的范围的情况下,可由本领域技术人员在这些实施例中做出修改。
权利要求
1.一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的方法,该方法包括 以时间选择性方式,把客户端请求发送给在中央处理单元(CPU)上执行的多层计算机软件系统的软件组件的ー个或多个层; 利用业务监测器收集多层计算机软件系统的软件组件的所有的所述ー个或多个层之间的业务轨迹; 利用CPU监测器收集在多层计算机软件系统的软件组件处的CPU时间;以及 在计算机过程中,从收集的业务轨迹推断多层计算机软件系统的性能数据。
2.根据权利要求I所述的方法,还包括在发送客户端请求之前,利用请求产生器产生客户端请求。
3.根据权利要求I所述的方法,其中所述业务轨迹和CPU时间被同时收集。
4.根据权利要求I所述的方法,其中当客户端请求被发送给多层计算机软件系统的软件组件的所述ー个或多个层时,所述业务轨迹和CPU时间被同时收集。
5.根据权利要求I所述的方法,其中所述时间选择性方式使客户端请求在时间上彼此分开,从而由多层计算机软件系统的软件组件的所述ー个或多个层对客户端请求的执行彼此不干扰。
6.根据权利要求I所述的方法,其中推断的性能数据包括多层计算机软件系统的软件组件的所述ー个或多个层之间的相互作用。
7.根据权利要求6所述的方法,其中推断的性能数据包括多层计算机软件系统的软件组件的所述ー个或多个层之间的相互作用的时间相关性。
8.根据权利要求I所述的方法,其中推断的性能数据包括在多层计算机软件系统的软件组件的所述ー个或多个层中的每个层的逗留时间。
9.根据权利要求8所述的方法,还包括从逗留时间确定盘输入/输出等待时间。
10.根据权利要求I所述的方法,还包括从推断的性能数据确定盘输入/输出等待时间。
11.一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的系统,该系统包括 请求产生器,用于以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件的ー个或多个层; 业务监测器,用于收集多层计算机软件系统的软件组件的所有的所述ー个或多个层之间的业务轨迹; (PU监测器,用于收集在多层计算机软件系统的软件组件处的中央处理单元(CPU)时间;和 处理器,执行用于从收集的业务轨迹推断多层计算机软件系统的性能数据的指令。
12.根据权利要求11所述的系统,其中所述业务轨迹和CPU时间被同时收集。
13.根据权利要求11所述的系统,其中当客户端请求被发送给多层计算机软件系统的软件组件的所述ー个或多个层时,所述业务轨迹和CPU时间被同时收集。
14.根据权利要求11所述的系统,其中所述时间选择性方式使客户端请求在时间上彼此分开,从而由多层计算机软件系统的软件组件的所述ー个或多个层对客户端请求的执行彼此不干扰。
15.根据权利要求11所述的系统,其中推断的性能数据包括多层计算机软件系统的软件组件的所述ー个或多个层之间的相互作用。
16.根据权利要求15所述的系统,其中推断的性能数据还包括多层计算机软件系统的软件组件的所述ー个或多个层之间的相互作用的时间相关性。
17.根据权利要求11所述的系统,其中推断的性能数据包括在多层计算机软件系统的软件组件的所述ー个或多个层中的每个层的逗留时间。
18.根据权利要求17所述的系统,还包括从逗留时间确定盘输入/输出等待时间。
19.根据权利要求11所述的系统,其中所述处理器执行另外的用于从推断的性能数据确定盘输入/输出等待时间的指令。
全文摘要
一种用于预测在分布式计算机系统上工作的多层计算机软件系统的性能的方法和系统以时间选择性方式把客户端请求发送给多层计算机软件系统的软件组件的一个或多个层;收集多层计算机软件系统的软件组件的所有的所述一个或多个层之间的业务轨迹;收集在多层计算机软件系统的软件组件处的CPU时间;从收集的业务轨迹推断多层计算机软件系统的性能数据;以及从推断的性能数据确定盘输入/输出等待时间。
文档编号G06F15/16GK102696013SQ201180006016
公开日2012年9月26日 申请日期2011年1月13日 优先权日2010年1月13日
发明者A.辛赫, G.蒋, K.潘, Y.古 申请人:美国日本电气实验室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1