用于分析系统的性能的方法、设备和系统的制作方法

文档序号:6363041阅读:229来源:国知局
专利名称:用于分析系统的性能的方法、设备和系统的制作方法
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及用于分析系统的性能的方法和设备。
背景技术
当程序在计算机系统中运行时,一般情况下无法知道CPU资源消耗到何处,这为对系统进行优化带来很大的困难。为了解决这个问题,计算机行业发展出性能剖析 (profiling)技术,通过这种方法来分析系统资源消耗在何处。现代的性能剖析技术主要包括两类插装(instrumenting)和采样(sampling)。 前者可以对系统的行为进行全部采集,而后者是部分采集。插装技术是在目标程序中插入指令,以获取系统的性能。例如业界的Gprof软件, 其对目标程序全系统插装然后获取各个剖析对象(一般指函数)的信息,如时长、次数等, 然后全系统进行对象合并(同名对象的信息合并,一般为累计、平均等),计算出各自比例, 即可发现各对象在目标系统中的CPU消耗情况。其中,“同名对象”可以是其中用于标识对象的要素相同的对象,例如标识符(ID)、函数名等要素,从而可依据每个要素进行合并,此外也可以依据时长、次数等来进行合并。但是,插装技术基于业务下独有对象所占的比例来分析业务比例,无法拆分利用公共函数,只能从宏观角度给出系统性能分析的结果,因此在独有对象所占比例较少时将严重影响分析结果的准确度。采样技术基于某个系统的事件状态变化来采集系统信息,如基于时间采样、基于 Cachemiss (cache未命中)每发生I万次采样、基于加载每2万次数据采样等等。采样技术获取的是系统整个运行过程中的部分信息。所采集的信息可根据函数、线程或进程来分类分析,以获取各自的比例,从而指导优化。但是,当采样频率过多时,如Cachemiss每发生 100次采样,其剖析程序本身会严重消耗系统资源从而导致数据不可信。此外,采样技术同样只能从宏观角度给出系统性能分析的结果,而无法获取所承载的数据流的信息,也就无法从业务角度进行分析。

发明内容
本发明实施例提供一种用于分析系统的性能的方法和设备,能够针对每个指定的目标对象进行分析,以从微观角度分别提供每个指定的目标对象内的各个子对象的资源占用情况。根据本发明实施例的一个方面,提供了一种用于分析系统的性能的方法,包括在所述系统运行过程中,采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源;根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示;以及基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。
根据本发明实施例的另一个方面,提供了一种用于分析系统的性能的设备,包括 采集部件,用于在所述系统运行过程中采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源;计算部件,用于根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示;以及分析部件,用于基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。根据本发明实施例的另一个方面,提供了一种性能分析系统,包括待分析的目标系统和如上所述的用于分析所述目标系统的性能的设备。根据本发明实施例,因为仅针对指定的目标对象来进行分析并从微观角度提供该指定的目标对象内的每一个子对象的资源占用情况,所以分析结果更具有针对性,并且提供了更加精确的系统性能占用率数据,从而使得用户能够快速准确地识别系统热点,进而便于优化系统性能。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是示出根据本发明实施例的用于分析系统的性能的方法的示范性流程图。图2示出根据本发明实施例的一个目标对象的示意图。图3示出利用根据本发明实施例的方法来分析系统的性能的过程以及利用传统方法来分析系统的性能的过程的示意图。图4示出根据本发明实施例的方法而得到的各个模块所占用的系统资源的占用率示意图。图5示出根据本发明实施例的用于分析系统的性能的一个设备的示范性框图。图6示出根据本发明实施例的性能分析系统的框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供用于分析系统的性能的方法、设备及系统,以对计算机系统资源(例如以模块为单位进行CPU占用率计算)的使用情况进行分析,该过程分析的结果有助于了解系统的资源消耗,以便有针对性地优化系统的性能。图I是示出根据本发明实施例的用于分析系统的性能的方法100的示范性流程图。如图I中所示,在方法100的101中,在所述系统运行过程中,采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源。这里,可以由用户来指定目标对象。具体的,所述目标对象即连续的一系列指令所构成的,,例如base block(比函数级别小)、函数、线程或进程,且所述子对象例如调用该函数的业务模块、线程或进程。需要说明的是,通过动态插桩采集指定的目标对象在一段时间内的数据信息。这里的动态插桩指的是可以在程序运行时进行插桩,参见下文中的图3中(a)和(b)。比如, 在图3中的(a)中受关键函数(函数f3)触发采集指定的目标对象(函数f2、f3和f6)在一段时间内的数据信息;而在图3中的(b)中受每个函数的触发采集该函数在一段时间内的数据信息。在102中,根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示。在103中,基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。需要说明的是,当子对象的性能属性的值高时,确定该子对象所占用的系统资源多。其中,在本发明实施例中,在一种实现方式下,步骤101可以包括采集在该指定的目标对象中包括的每个子对象在该一段时间内的调用栈信息、线程信息、全局变量、参数信息,且所述参数信息包括每个子对象的标识符、运行时长、消息大小和优先级。在一种实现方式下,步骤102可以包括通过统计方法,根据所述数据信息来分别计算所述每个子对象的出现总次数、平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性。较优的,如果所述每个子对象具有相应的标识符,则在一种实现方式下,步骤102可以包括以子对象的标识符作为分类条件,将具有相同标识符的子对象的参数信息进行汇聚;基于汇聚后的参数信息,通过统计方法分别计算每个子对象的出现总次数、平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性。可见,根据本发明实施例,因为仅针对指定的目标对象来进行分析并从微观角度提供该指定的目标对象内的每一个子对象的资源占用情况,所以分析结果更具有针对性, 并且提供了更加精确的系统性能占用率数据,从而使得用户能够快速准确地识别系统热点,进而便于优化系统性能。这里,用户可以指定一个或多个目标对象来进行监视,并且根据本发明实施例的方法可以针对每个指定的目标对象进行分析,以分别提供每个指定的目标对象内的各个子对象的资源占用情况。例如,对于E2E(End to End,端对端)业务分组,不同的业务可能经过同一流程,例如 TCP (Transmission Control Protocol,传输控制协议)、SPX (Sequenced Packet Exchange Protocol,序列分组交换协议)等。利用传统的性能分析方法,仅能得到诸如下述的分析结果
6
Tcp—send 50%Spx—send 20%其他I—send 10%......但是,利用根据本发明实施例的方法100,可以给出例如Tcp—send所处理的各个详细业务在TCP层次的占用率,即Service 120%Service2 10%Service3 3.3%Service4 10%......图2示出根据本发明实施例的一个目标对象200的示意图。如图2中所示,目标对象200内存在多个业务Servicel、Service2、Service3、
Service4、.......Service (N-I)和ServiceN,其中N为大于等于I的正整数,并且所述多
个业务 Servicel、Service2> Service3> Service4>.......Service (N-I)和 ServiceN 可
以具有统一的输入。虽然这里在图2中示出多个业务具有统一的输出,但是本发明不限于此,多个业务也可以不具有统一的输出,例如,多个业务中的一些可以具有统一输出但另一些不具有统一输出,或者全部业务都不具有统一输出。当不具有统一的输出数据时,可以在多层分别进行动态跟踪以获取多种业务。因此,优选地,用户可以指定内部业务较多的对象作为要被监视的目标对象。该目标对象可以具有统一的输入,但是不需要具有统一的输出。此外,目标对象可以是函数、线程(thread)或进程(process),且子对象可以是调用该函数的业务模块、进程或线程。因此,本发明实施例可以从微观角度,以业务模块为单位、以进程为单位或以线程单位等来提供具体的资源占用情况。下面,将参照附图更加详细地描述根据本发明实施例的用于分析系统的性能的过程。图3示出利用根据本发明实施例的方法来分析系统的性能的过程以及利用传统方法来分析系统的性能的过程的示意图。其中,(a)示出利用根据本发明实施例的方法来分析系统的性能的过程,(b)示出利用传统方法中的插装技术来分析系统的性能的过程,且 (C)示出利用传统方法中的采样技术来分析系统的性能的过程。如图3中的(a)所示,假设存在多个对象fl、f2、f3、f4、f5、f6、......这里,每个
对象可以是函数。在多个对象fl、f2、f3、f4、f5、f6、......中,对象f2、f3和f6是指定
的目标对象,并且将它们用标记(mark)(也可以称之为探针(probe))来标识。虽然在图3 的(a)示出3个指定的目标对象,但是本发明不限于此,本领域技术人员可以根据需求灵活指定任意数目的对象作为目标对象。可以由用户来指定该目标对象。此外,优选地,当需要时,例如当系统发生问题时, 用户可以立即指定希望被监视的目标对象,以便抓住系统热点以便了解问题所在。也就是说,用户可以根据需要随时指定目标对象,因此利用根据本发明实施例的方法来分析系统的性能的过程是一种动态的实时跟踪过程。这省去了用户在编译时即需要进行插装的麻烦,并且使得分析结果更具针对性。继续参照图3中的(a),当触发指定的目标对象、例如函数f3时,开始采集该目标对象的数据信息,例如包括函数f3的调用栈信息、线程信息、全局变量、参数信息等。可以持续采集目标对象的数据信息达一段时间,例如,几分钟,以便使得在该一段时间内采集的数据信息足够多、足以覆盖要被监视的目标对象的性能。可选地,可以当系统内存耗尽时自动或手动停止采集。或者,可以由用户预先设置该一段时间的具体长度。再或者,可以在采集的同时向用户传送所采集的数据信息,当用户认为数据信息足够多时停止米集。同样,当触发其他指定的目标对象(例如函数f2和函数f6)时,同样会采集该目标对象的数据信息。图3中的(b)示出利用传统方法中的插装技术来分析系统的性能的过程,显然,当触发每个函数时都要采集该函数的时间、调用栈信息、线程信息等,不仅无法采集函数内部的全局变量和参数信息,而且会影响系统性能。此外,图3中的(C)示出利用传统方法中的采样技术来分析系统的性能的过程。显然,该过程也无法采集函数内部的全局变量和参数信息。有利的是,根据本发明实施例,采集指定的目标对象在一段时间内的数据信息的过程可以采集在该指定的目标对象中包括的每个子对象在该一段时间内的调用栈信息、线程信息、全局变量、参数信息,且所述参数信息可以包括每个子对象的标识符、运行时长、消息大小和优先级。下面的表I示出根据本发明实施例所采集的数据信息的具体例子,其中以消息分发包为例,不同的业务(子对象)调用同一个函数将具有不同的标识符、不同的消息大小及不同的优先级。例如,以线程内的模块(以模块号PID标识,即该模块的标识符)为单位进行采集,并且每个模块可以对应于一个消息。这里,参数1(长度)的单位可以为字节 (Byte)。表I
模块号(PID)参数I(长度)参数2 (优先级)I1080I21560I313312034100130251060I61333037133280381080I91060I101536I111331803121003302131333203 根据上述数据信息,可以分别计算所述一个或多个子对象中的每个子对象的性能属性,即可以通过统计方法,根据所述数据信息来分别计算所述每个子对象的出现总次数、 平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性。具体而言,首先,基于模块号PID进行分类,即将相同模块号PID的数据信息汇聚在一起,得到下面的表2。表 权利要求
1.一种用于分析系统的性能的方法,其特征在于,包括在所述系统运行过程中,采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源;根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示;以及基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。
2.根据权利要求I所述的方法,其特征在于,所述采集指定的目标对象在一段时间内的数据信息包括采集在该指定的目标对象中包括的每个子对象在该一段时间内的调用栈信息、线程信息、全局变量、参数信息,且所述参数信息包括每个子对象的标识符、运行时长、消息大小和优先级。
3.根据权利要求2所述的方法,其特征在于,所述根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性包括通过统计方法,根据所述数据信息来分别计算所述每个子对象的出现总次数、平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性。
4.根据权利要求2所述的方法,其特征在于如果所述每个子对象具有相应的标识符, 所述根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性包括以子对象的标识符作为分类条件,将具有相同标识符的子对象的参数信息进行汇聚; 基于汇聚后的参数信息,通过统计方法分别计算每个子对象的出现总次数、平均长度、 最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性。
5.根据权利要求4所述的方法,其特征在于,所述基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源包括当子对象的性能属性的值高时,确定该子对象所占用的系统资源多。
6.根据权利要求I至5中的任一项所述的方法,其特征在于在所述采集指定的目标对象在一段时间内的数据信息之前,还包括在需要时实时指定目标对象,并且所述指定的目标对象的数目是一个或多个。
7.根据权利要求6所述的方法,其特征在于所述目标对象包括函数、线程或进程,且所述子对象包括调用该函数的业务模块、线程或进程。
8.一种用于分析系统的性能的设备,其特征在于,包括采集部件,用于在所述系统运行过程中,采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源;计算部件,用于根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示;以及分析部件,用于基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。
9.根据权利要求8所述的设备,其特征在于所述采集部件具体用于在所述系统运行过程中,采集在该指定的目标对象中包括的每个子对象在该一段时间内的调用栈信息、线程信息、全局变量、参数信息,且所述参数信息包括每个子对象的标识符、运行时长、消息大小和优先级。
10.根据权利要求9所述的设备,其特征在于,所述计算部件具体用于通过统计方法, 根据所述数据信息来分别计算所述每个子对象的出现总次数、平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性。
11.根据权利要求9所述的设备,其特征在于所述计算部件具体用于以子对象的标识符作为分类条件将具有相同标识符的子对象的参数信息进行汇聚,并且基于汇聚后的参数信息,通过统计方法分别计算每个子对象的出现总次数、平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个子对象的性能属性,其中,每个子对象具有相应的标识符。
12.—种性能分析系统,其特征在于,包括待分析的目标系统和如权利要求8至11中的任一项所述的用于分析所述目标系统的性能的设备。
全文摘要
本发明实施例提供了一种用于分析系统的性能的方法、设备及系统,包括采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源;根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示;以及基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。因此,能够从微观角度提供指定的目标对象内的每一个子对象的资源占用情况,提供了更加精确的系统性能占用率数据,从而使得用户能够快速准确地识别系统热点,进而便于优化系统性能。
文档编号G06F11/34GK102609351SQ20121000858
公开日2012年7月25日 申请日期2012年1月11日 优先权日2012年1月11日
发明者李继忠 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1