用于分析系统的性能的方法、设备和系统技术方案

技术编号:7627181 阅读:171 留言:0更新日期:2012-08-01 19:31
本发明专利技术实施例提供了一种用于分析系统的性能的方法、设备及系统,包括:采集指定的目标对象在一段时间内的数据信息,所述数据信息表示在所述一段时间内所述目标对象中包括的一个或多个子对象在所述目标对象被调用时所消耗的各类系统资源;根据所述数据信息来分别计算所述一个或多个子对象中的每个子对象的性能属性,所述性能属性以该子对象的数据信息的统计结果来表示;以及基于所述性能属性来分析所述一个或多个子对象中的每个子对象所占用的系统资源。因此,能够从微观角度提供指定的目标对象内的每一个子对象的资源占用情况,提供了更加精确的系统性能占用率数据,从而使得用户能够快速准确地识别系统热点,进而便于优化系统性能。

【技术实现步骤摘要】

本专利技术实施例涉及计算机领域,并且更具体地,涉及用于分析系统的性能的方法和设备。
技术介绍
当程序在计算机系统中运行时,一般情况下无法知道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可以包括以子对象的标识符作为分类条件,将具有相同标识符的子对象的参数信息进行汇聚;基于汇聚后的参数信息,通过统计方法分别计算每个子对象的出现总次数、平均长度、最大长度、平均优先级、最大优先级中的一个或多个,作为每个本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:李继忠
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1
相关领域技术