性能分析方法、装置、电子设备及存储介质与流程

文档序号:32346441发布日期:2022-11-26 11:29阅读:62来源:国知局
性能分析方法、装置、电子设备及存储介质与流程

1.本技术涉及数据处理技术领域,特别涉及一种性能分析方法、装置、电子设备及存储介质。


背景技术:

2.传统的benchmark服务只能统计应用程序在测试场景中的平均响应时间、平均吞吐量等,如果测试场景不满足预定要求,则需要进行性能分析或建立更小粒度的测试场景。而一般的性能分析工具基于应用程序进行性能统计,但是对应用程序的应用场景无感知,需要用户手动进行配置。
3.因此,目前基于benchmark服务的性能测试方法,只能分析整个预设应用场景下应用程序整体情况,而对于应用场景内部发生的情况无感知,缺少有效地解决方案。


技术实现要素:

4.本技术提供一种性能分析方法、装置、电子设备及存储介质,用于对测试对象的内部运行状态进行实时分析,提供更小粒度的性能测试方法。
5.第一方面,本技术提供的一种性能分析方法,包括:
6.确定与测试需求相关的待测对象;
7.按设定周期,对所述待测对象在运行期间生成的事件进行采样,得到采样数据,其中所述采样数据用于表征所述待测对象在各采样时刻的运行情况;
8.对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
9.在一种可能的实施例中,所述对所述待测对象在运行期间生成的事件进行采样,得到采样数据,包括:
10.根据所述待测对象在运行期间生成的事件,确定所述事件对应的事件数据,其中所述事件数据包括快照数据和/或遥测数据;
11.对所述事件数据进行采样,得到所述待测对象对应的采样数据。
12.在一种可能的实施例中,所述对所述待测对象在运行期间生成的事件进行采样,得到采样数据,包括:
13.根据tick中断函数、性能分析工具中的至少一种,对所述待测对象在运行期间生成的事件进行采样,得到所述采样数据。
14.在一种可能的实施例中,所述对所述采样数据进行性能分析,确定所述待测对象的性能分析结果,包括:
15.调用benchmark服务,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
16.在一种可能的实施例中,所述调用benchmark服务,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果,包括:
17.在确定所述测试需求后,调用benchmark服务获取与所述测试需求相关的初始化
参数;
18.根据所述初始化参数确定测试范围;
19.利用所述benchmark服务获取所述测试范围对应的采样数据,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
20.在一种可能的实施例中,所述采样数据包括如下任意一种或任意多种:
21.运行的函数;
22.函数的调用关系和被调用关系;
23.执行次数超出阈值的函数;
24.函数的运行时间信息;
25.为函数生成的对象分配的内存信息。
26.在一种可能的实施例中,所述事件包括如下任意一种或任意多种:
27.硬件事件,其中所述硬件事件表征所述待测对象对硬件的使用情况;
28.软件事件,其中所述软件事件表征所述待测对象生成的事件;
29.跟踪点tracepoint事件,其中所述tracepoint事件表征所述待测对象的静态tracepoint触发的事件。
30.第二方面,本技术提供的一种性能分析装置,包括:
31.确定模块,用于确定与测试需求相关的待测对象;
32.采样模块,用于按设定周期,对所述待测对象在运行期间生成的事件进行采样,得到采样数据,其中所述采样数据用于表征所述待测对象在各采样时刻的运行情况;
33.分析模块,用于对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
34.在一种可能的实施例中,所述采样模块具体用于:
35.根据所述待测对象在运行期间生成的事件,确定所述事件对应的事件数据,其中所述事件数据包括快照数据和/或遥测数据;
36.对所述事件数据进行采样,得到所述待测对象对应的采样数据。
37.在一种可能的实施例中,所述采样模块具体用于:
38.根据tick中断函数、性能分析工具中的至少一种,对所述待测对象在运行期间生成的事件进行采样,得到所述采样数据。
39.在一种可能的实施例中,所述分析模块具体用于:
40.调用benchmark服务,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
41.在一种可能的实施例中,所述分析模块具体用于:
42.在确定所述测试需求后,调用benchmark服务获取与所述测试需求相关的初始化参数;
43.根据所述初始化参数确定测试范围;
44.利用所述benchmark服务获取所述测试范围对应的采样数据,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
45.在一种可能的实施例中,所述采样数据包括如下任意一种或任意多种:
46.运行的函数;
47.函数的调用关系和被调用关系;
48.执行次数超出阈值的函数;
49.函数的运行时间信息;
50.为函数生成的对象分配的内存信息。
51.在一种可能的实施例中,所述事件包括如下任意一种或任意多种:
52.硬件事件,其中所述硬件事件表征所述待测对象对硬件的使用情况;
53.软件事件,其中所述软件事件表征所述待测对象生成的事件;
54.跟踪点tracepoint事件,其中所述tracepoint事件表征所述待测对象的静态tracepoint触发的事件。
55.第三方面,本技术提供一种电子设备,包括:
56.存储器,用于存储程序指令;
57.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一项所述的方法包括的步骤。
58.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任一项所述的方法。
59.第五方面,本技术提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行第一方面中任一项所述的方法。
60.本技术实施例提供的性能分析方法至少具有如下有益效果:
61.本技术在确定与测试需求相关的待测对象之后,对待测对象在运行期间生成的事件进行周期性的采样,由于待测对象在运行期间会生成至少一种事件,而生成的事件表征待测对象在运行期间的运行情况,因此,通过对运行期间的各种运行情况进行性能分析,能够得知待测对象在运行中的状态,提供一种更小粒度的性能分析方法。
62.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
63.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
64.图1为本技术实施例提供的一种性能分析方法实施流程图;
65.图2为本技术实施例提供的一种基于benchmark服务的性能分析方法实施流程图;
66.图3为本技术实施例提供的一种示例性能分析方法实施流程图;
67.图4为本技术实施例提供的一种性能分析装置示意图;
68.图5为本技术实施例提供的一种电子设备示意图。
具体实施方式
69.为使本技术的目的、技术方案和优点更加清楚明白,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以按不同于此处的顺序执行所示出或描述的步骤。
70.本技术中的术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本技术实施例不做限制。
71.本技术技术方案中,对数据的采集、传播、使用等,均符合国家相关法律法规要求。
72.本技术实施例描述的应用场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
73.在介绍本技术实施例所提供的性能分析方法之前,为了便于理解,首先对下面对本技术实施例的技术背景进行详细介绍。
74.传统的benchmark服务只能统计测试场景中的平均响应时间、平均吞吐量等,如果测试场景不满足预定要求,则需要进行性能分析或建立更小粒度的测试场景;同时一般的性能分析工具例如perf(linux性能分析工具)、tptp(test and performance tools paltform,测试和性能工具平台)、codepro profiler、yourkit profiler、jprofiler、valgrind、性能探查器等,都是基于应用程序利用pmu(performance monitor unit,性能监视器)、tracepoint(跟踪点)、内核计数器或jvm(java virtual machine,java虚拟机)来进行性能统计,而对应用程序的应用场景无感,需要用户手动进行配置。
75.例如,已知某个应用程序可以进行下单交易等功能,目前需要对该应用程序的内部下单到下单发送到交易所前的性能情况进行分析,即对委托请求在内部交易系统中流转的性能问题进行分析,此应用程序的委托下单到发出前经历过程可以假定为4个步骤:下达、记录、转化、发出。目前的测试方案是需要在委托请求发出时(下达)调用benchmark服务,此时benchmark服务记录下测试消息的发送时刻,之后在委托请求准备发送到交易所柜台前时(发出)发送反馈消息给benchmark服务;benchmark服务据此进行各类参数的统计,获得系统性能的测试结果。如果对性能测试结果并不满意,由于benchmark提供的测试报告并不能告知委托从下达到发出前具体哪里存在问题(例如是记录还是转化的问题),只能笼统的告知下达到发出耗费了多少时间,平均耗费多少时间等,如果需要分析记录、转化等步骤的问题,就需要再次调用benchmark服务重新进行分析,操作十分繁琐。
76.因此,目前基于benchmark服务的性能测试方法,只能分析整个预设应用场景下应用程序整体情况,而对于应用场景内部发生的情况无感知,缺少有效地解决方案。
77.有鉴于此,本技术实施例提供一种性能分析方法,用于在确定与测试需求相关的
待测对象之后,对待测对象在运行期间生成的事件进行周期性的采样,由于待测对象在运行期间会生成至少一种事件,而生成的事件表征待测对象在运行期间的运行情况,因此,通过对运行期间的各种运行情况进行性能分析,能够得知待测对象在运行中的状态,提供一种更小粒度的性能分析方法。
78.需要说明的是,本技术中的待测对象包括但不限于应用程序、内核kernel中的至少一种。
79.下面结合附图以及具体实施方式对本技术实施例的性能分析方法进行介绍。
80.参照图1所示,本技术实施例提供的一种性能分析方法,可以由服务器执行,具体包括以下步骤s100-s102:
81.步骤s100、确定与测试需求相关的待测对象;
82.在一些实施例中,本实施例中的待测对象包括但不限于应用程序和/或内核。
83.实施中,本技术可以基于测试需求对运行期间的待测对象进行性能分析,能够根据用户需求定制测试场景,从而在和测试需求对应的测试场景下对待测对象进行性能分析,实现性能分析的定制化。
84.步骤s101、按设定周期,对所述待测对象在运行期间生成的事件进行采样,得到采样数据,其中所述采样数据用于表征所述待测对象在各采样时刻的运行情况;
85.可选的,本实施例中的采样数据是按设定周期,在各采样时刻对待测对象在运行期间生成的事件进行采样得到的,可以通过树结构表示,其中树结构中的每个节点表示应用程序使用到的采用数据,例如应用程序在采样点对应的函数,并且列出了每个节点的运行时间信息,包括运行时间或运行时间百分比,还可以列出该节点对应的函数生成的对象的个数,以及为生成的对象分配的内存大小。
86.实施中,本技术可以对待测对象在运行期间生产的事件进行采样,基于采样数据分析运行期间的性能,降低目前对应用程序进行性能分析的细粒度,能够感知应用程序在运行期间的全场运行情况,以及运行期间的各种细节,从而对性能症状作出准确地判断。
87.可选的,本实施例通过如下方式对所述待测对象在运行期间生成的事件进行采样,得到所述待测对象对应的采样数据:
88.根据所述待测对象在运行期间生成的事件,确定所述事件对应的事件数据,其中所述事件数据包括快照数据和/或遥测数据;对所述事件数据进行采样,得到所述待测对象对应的采样数据。
89.其中,本实施例中的快照数据是基于快照技术对所述待测对象的运行情况进行统计得到的,快照数据包括应用程序在一段时间内的执行信息。利用快照(snapshot)技术,在应用程序启动后,profiler工具开始收集应用程序的各种执行数据,其中一些数据可以直接显示在遥测视图中,而另外大部分数据被保存在内部,直到用户要求获取快照时,基于这些保存的数据的统计信息才被显示出来。
90.本实施例中的遥测数据是基于遥测技术对所述待测对象的运行情况进行分析得到的,遥测(telemetry)技术是一种用来查看应用程序运行情况的方法。通常会有多个视图(view)分别实时地显示cpu使用情况、内存使用情况、线程状态以及其他有用信息,以便用户能很快地发现问题的关键所在。
91.可选的,本实施例中的待测对象在运行期间生成的事件,可以通过如下方式进行
统计:
92.利用pmu(performance monitor unit,性能监视器)、tracepoint以及内核的计数器中的至少一种,统计待测对象在运行期间生成的事件。
93.可选的,本技术实施例中待测对象在运行期间生成的事件包括但不限于如下任意一种或任意多种:
94.第1种、硬件事件(hardware event),其中所述硬件事件表征所述待测对象对硬件的使用情况;
95.实施中,硬件事件可以包括pmu产生的事件,如cache-misse、cpu-cycles、cache-references、cache-misses、task-clock-msecs、ipc等,通常在需要分析应用程序对硬件的使用情况时会使用。其中,cache-misse表示cpu要访问的数据在cache中有缓存,称为“命中”(hit),反之则称为“缺失”(miss),当cpu要访问的数据缺失时,一般访问硬件hardware,此时触发硬件事件;cpu-cycles表示cpu的频率和周期,单位一般为ghz。cache-references表示cache命中的次数;cache-misses表示cache失效的次数。
96.其中,cycles表示处理器时钟,一条机器指令可能需要多个cycles。
97.task-clock-msecs表示cpu利用率,该值高,说明应用程序的多数时间花费在cpu计算上而非io。
98.ipc,是instructions/cycles的比值,该值越大说明应用程序充分利用了处理器的特性。其中,instructions表示机器指令数目。
99.第2种、软件事件(software event),其中所述软件事件表征所述待测对象生成的事件;
100.实施中,软件事件包括应用程序的核心程序产生的事件,例如context-switches(上下文切换)、page-fault(缺页异常)、cpu-clock(cpu时钟频率)、cpu-migrations(cpu迁移)等。
101.其中,context-switches,可以理解为应用程序中的进程切换或者任务切换,cpu从一个线程切换到另一个线程,操作系统可以同时运行多个进程,然而一个cpu同时只能执行一项任务,操作系统利用时间片轮转的方式,让用户感觉这些任务正在同时进行。cpu给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务。任务的状态保存及再加载的过程称为上下文切换。
102.page-fault,表示当进程访问虚拟地址空间中的page时,如果这个page目前还不在物理内存中,此时cpu是不能执行的,linux会产生一个hard page fault中断。系统需要从慢速设备(如磁盘)将对应的数据page读入物理内存,并建立物理内存地址与虚拟地址空间page的映射关系。然后进程才能访问这部分虚拟地址空间的内存,这个过程就称为page fault。其中page fault又分为几种:major page fault(主要缺页错误)、minor page fault(次要缺页错误)、invalid(无效)或(segment fault(段故障))。
103.cpu-migrations表示某进程t1运行过程中发生了多少次cpu迁移,即被调度器从一个cpu转移到另外一个cpu上运行的次数。
104.第3种、跟踪点tracepoint事件,其中所述tracepoint事件表征所述待测对象的静态tracepoint触发的事件。
105.实施中,tracepoint事件是应用程序的核心程序中的静态tracepoint所触发的事
件,这些tracepoint用来判断应用程序在执行期间核心程序的行为细节,如slab记忆体配置器的配置次数等。
106.其中,tracepoint是预先在应用程序中的函数的插入点中插桩,当执行到函数的插入点,则执行插桩函数,进而触发与插入点预先绑定的探查函数,探查函数可以是一个或者多个,探查函数可以定义为任意的行为,从而可以起到对函数内部观测的作用。
107.实施中,上述任意一种事件可以生成对应的事件数据例如快照数据,从而对快照数据进行采样,得到采样数据。
108.在一些实施例中,采样方式包括如下任意一种或任意多种:
109.(1)tick中断函数;
110.(2)性能分析工具;例如,perf、oprofile等。可以将性能分析工具内嵌在benchmark服务中。
111.根据tick中断函数、性能分析工具中的至少一种,对所述待测对象在运行期间生成的事件进行采样,得到所述待测对象对应的采样数据。
112.具体的,利用上述采样方式对待测对象的事件进行采样,例如根据tick中断进行采样,即在tick中断内触发采样点,在采样点里判断待测对象当时的上下文。比如上一个应用程序(交易服务)90%的时间都花费在函数translate()上,那么90%的采样点都应该落在函数translate()的上下文中。
113.在一些实施例中,采样数据包括如下任意一种或任意多种:
114.a)运行的函数;
115.b)函数的调用关系和被调用关系;
116.c)执行次数超出阈值的函数;
117.d)函数的运行时间信息;
118.e)为函数生成的对象分配的内存信息。
119.步骤s102、对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
120.在一些实施例中,调用benchmark服务,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
121.可选的,在确定所述测试需求后,调用benchmark服务获取与所述测试需求相关的初始化参数;其中,初始化参数包括和所述测试需求相关的信息,例如测试需求对应的测试场景信息(例如当前待测对象运行的环境、当前待测对象运行的交易平台),待测对象信息(例如用户群体特征信息)、测试场景的测试范围(例如测试的开始时刻和结束时刻),性能分析指标(例如吞吐量、最大速率、最小速率、性能瓶颈等);其中本实施例中的测试范围可以表示测试的开始和结束,也可以表示测试平台、测试对象等对测试场景的限定,本实施例对此不作过多限定。
122.可选的,本实施例中的测试场景的测试范围可以通过结构体表示,从而通过结构体获取在测试范围内待测对象的运行状态;其中,可以将结构体进行采样后,发送到benchmark服务中,可以生成性能分析报告。
123.根据所述初始化参数确定测试范围;利用所述benchmark服务获取所述测试范围对应的采样数据,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
124.实施中,接收到携带测试需求的测试请求消息时,调用benchmark服务获取与所述
测试需求相关的初始化参数,根据所述初始化参数,对所述benchmark服务进行初始化,得到初始benchmark服务,此时benchmark服务记录下测试的开始时刻,在结束时刻将从开始时刻到结束时刻采集的采样数据发送给初始benchmark服务进行各类数据的统计、分析,获得待测对象的性能分析结果,其中结束时刻是基于初始化参数包含的测试场景的测试范围确定的。
125.参照图2所示,本技术实施例还提供一种基于benchmark服务的性能分析方法,具体实施流程如下所示:
126.步骤s200、获取测试需求;
127.步骤s201、调用benchmark服务获取与所述测试需求相关的初始化参数;
128.步骤s202、benchmark服务根据所述初始化参数确定测试范围;
129.其中,benchmark服务根据所述初始化参数确定测试的开始时刻和结束时刻;
130.步骤s203、在测试范围内,按设定周期,对所述待测对象在运行期间生成的事件进行采样,得到所述待测对象对应的采样数据;
131.其中,事件包括硬件事件,所述硬件事件表征所述待测对象对硬件的使用情况;软件事件,所述软件事件表征所述待测对象生成的事件;跟踪点tracepoint事件,所述tracepoint事件表征所述待测对象的静态tracepoint触发的事件。
132.采样数据包括运行的函数;函数的调用关系和被调用关系;执行次数超出阈值的函数;函数的运行时间信息;为函数生成的对象分配的内存信息等。
133.其中,根据所述待测对象在运行期间生成的事件,确定所述事件对应的事件数据;根据tick中断函数、性能分析工具中的至少一种,对所述事件数据进行采样,得到所述待测对象对应的采样数据。
134.步骤s204、利用所述benchmark服务对测试范围对应的采样数据进行性能分析,确定所述待测对象的性能分析结果。
135.参照图3所示,本技术实施例以分析应用程序从内部下单到下单发送到交易所前的性能情况为例,假设应用程序从内部下单到下单发送到交易所前期间包括4个步骤:订单任务下达、记录、转化、订单发出。对本技术提供的性能分析方法进行详细说明:
136.步骤s300、在订单任务下达时,调用benchmark服务获取与测试需求相关的初始化参数,此时benchmark服务记录测试开始时刻;
137.步骤s301、benchmark服务根据所述初始化参数确定测试结束时刻;
138.步骤s302、在测试开始时刻到测试结束时刻期间,按设定周期,对应用程序在运行期间生成的事件进行采样,得到采样数据;
139.步骤s303、在订单发出时,通过benchmark服务对在此期间采集到的采样数据进行性能分析。
140.上述过程能够不仅能够对应用程序从内部下单到下单发送到交易所前的各个流程进行性能分析,还可以进行整体分析,提高性能分析的效率。
141.本实施例通过benchmark分析周期采样得到的cpu、内存的快照数据或遥测数据,可以获得待测对象在运行期的函数调用关系、函数的被调用关系、热点列表(包括执行次数超出阈值的函数)。以树结构表示采集到的全部采样数据,其中树结构中的节点表示采样数据,根据与测试需求相关的初始化参数来筛选节点。对于树中出现的每个节点,列出了该节
点对应的运行时间或运行时间百分比,以及该节点生成的对象个数和为这些对象分配的内存大小。可选的,benchmark服务内嵌perf、oprofile等性能分析工具或者直接对cpu、硬盘、内存等数据进行周期性的采样处理。可选的,可以将perf或者oprofile功能移植到benchmark服务中,减少服务之间的交互,增加分析速度。
142.具体的,应用程序可以利用pmu、tracepoint和内核中的计数器来进行性能统计。不但可以分析制定应用程序的性能问题(per thread),也可以用来分析内核的性能问题;结合benchmark服务收到测试开始请求消息,记录初始化参数,此后将tracepoint产生的时间记录下来,当benchmark收到测试结束请求消息时,通过分析从测试开始到测试结束期间的报告,可以获取应用程序或内核在该期间内的各种细节,对性能症状做出准确的诊断;同时结合初始化参数,又可以计算出在当前情景下的分析指标,如吞吐量,最大最小速率,性能瓶颈等全方面的性能指标。
143.在一些实施例中,本实施例中的数据传输(包括初始化参数、采样数据、分析指标、分析报告等数据)基于rpc(remote procedure call,远程过程调用协议)协议传输,其中rpc协议基于传输协议构建,如tcp(transmission control protocol,传输控制协议)或udp(user datagram protocol,用户数据报协议),为通信程序之间携带信息数据。可选的,本实施例中的rpc协议是基于tcp的二进制流的数据传输,传输以bson(binary serialized document format,二进制形式的存储格式)进行打包解包。
144.需要说明的是,本实施例对待测对象在运行期间生成的事件进行采样,得到采样数据,通过对采集到的采样数据进行性能分析的方式,确定待测对象在运行期间的具体情况,假设x1,x2,...,xk,...,xn,是来源于同一应用程序在运行时期的采样数据,分别存在期望exk和方差dxk;
145.若存在常数c使得dxk《=c(其中,k=1,2,...,n),即方差有界,则根据切比雪夫大数定理,对于任意小的正数ε,满足如下公式(1):
[0146][0147]
其中,n表示采样次数,dxk表示采样数据xk的方差,exk表示采样数据xk的期望。
[0148]
由此可说明只要采样频率足够高,采样时间足够长,那么上述推论就说明采样数据的平均值接近应用程序中所有数据的平均值。因此通过本实施例中的性能分析方法能够有效、准确地分析待测对象在运行期间的性能情况。
[0149]
为了更加充分的说明案列,通过一些简单的例子来说明,注意在实际使用中,方法会更加复杂。基于英特尔64位cpu,通过文档看到可以监控以下事件,如表1所示:
[0150]
表1
[0151]
通用性能计数器事件名称umask事件选择0instruction retire00h3ch1unhalted core cycles00hc0h2unhalted reference cycles01h3ch3llc reference4fh2eh
4llc misses41h2eh5branch instruction retired00hc4h6branch misses retired00hc5h7topdown slots01ha4h
[0152]
那么可以通过shell脚本配置0号和1号通用性能计数器;配置完成后,通用性能计数器就会分别记录指令数据和cpu cycles。当然除了表1的8种事件,还能选择更多的事件,本实施例对此不作过多限定。当启用上述通用性能计数器后,在本实施例的方法对应的设计代码里就可以执行性能分析同时记录初始化参数如场景参数。
[0153]
首先设计一个benchmark类,其中benchmark类主要是负责记录数据,产生报告,发送数据,在初始化的过程中需要配置cpu,本实施例还可以配置时间,额外的场景参数通过参数列表配置,测试结束后生成报告和发送数据,则可获取该场景的运行时间和指令数据,通过其他事件也可以获取到更多程序内部的运行情况。
[0154]
可选的,本实施例还可以设计一个测试的订单类应用程序orderapp,以分析应用程序从内部下单到下单发送到交易所前的性能情况为例,假设应用程序从内部下单到下单发送到交易所前期间包括4个步骤:订单任务下达、记录、转化、订单发出。实施中,只需要在下单和发送步骤中配置benchmark记录,当实际运行中,可以通过通用性能计数器完整的了解整个orderapp的运行过程。
[0155]
本实施例通过对所述待测对象在运行期间生成的事件进行采样,得到采样数据,基于测试需求相关的初始化参数,以及benchmark服务对采样数据进行性能分析的方法,可以获得实时的程序内运行状态,也可以获取程序整体运行测试状态,极大提高了对某些特别重要的场景的全场感知能力。
[0156]
基于同一发明构思,本技术实施例提供一种性能分析装置,请参照图4,该装置包括:
[0157]
确定模块400,用于确定与测试需求相关的待测对象;
[0158]
采样模块401,用于按设定周期,对所述待测对象在运行期间生成的事件进行采样,得到采样数据,其中所述采样数据用于表征所述待测对象在各采样时刻的运行情况;
[0159]
分析模块402,用于对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
[0160]
在一种可能的实施例中,所述采样模块401具体用于:
[0161]
根据所述待测对象在运行期间生成的事件,确定所述事件对应的事件数据,其中所述事件数据包括快照数据和/或遥测数据;
[0162]
对所述事件数据进行采样,得到所述待测对象对应的采样数据。
[0163]
在一种可能的实施例中,所述采样模块401具体用于:
[0164]
根据tick中断函数、性能分析工具中的至少一种,对所述待测对象在运行期间生成的事件进行采样,得到所述采样数据。
[0165]
在一种可能的实施例中,所述分析模块402具体用于:
[0166]
调用benchmark服务,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
[0167]
在一种可能的实施例中,所述分析模块402具体用于:
[0168]
在确定所述测试需求后,调用benchmark服务获取与所述测试需求相关的初始化参数;
[0169]
根据所述初始化参数确定测试范围;
[0170]
利用所述benchmark服务获取所述测试范围对应的采样数据,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
[0171]
在一种可能的实施例中,所述采样数据包括如下任意一种或任意多种:
[0172]
运行的函数;
[0173]
函数的调用关系和被调用关系;
[0174]
执行次数超出阈值的函数;
[0175]
函数的运行时间信息;
[0176]
为函数生成的对象分配的内存信息。
[0177]
在一种可能的实施例中,所述事件包括如下任意一种或任意多种:
[0178]
硬件事件,其中所述硬件事件表征所述待测对象对硬件的使用情况;
[0179]
软件事件,其中所述软件事件表征所述待测对象生成的事件;
[0180]
跟踪点tracepoint事件,其中所述tracepoint事件表征所述待测对象的静态tracepoint触发的事件。
[0181]
基于同一发明构思,本技术实施例提供一种电子设备,该设备可以实现前文论述的性能分析装置的功能,请参照图5,该设备包括处理器501和存储器502,存储器502用于存储程序指令;处理器501用于调用存储器502中存储的程序指令,按照获得的程序指令执行如下步骤:
[0182]
确定与测试需求相关的待测对象;
[0183]
按设定周期,对所述待测对象在运行期间生成的事件进行采样,得到采样数据,其中所述采样数据用于表征所述待测对象在各采样时刻的运行情况;
[0184]
对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
[0185]
在一种可能的实施例中,所述处理器501被配置为执行:
[0186]
根据所述待测对象在运行期间生成的事件,确定所述事件对应的事件数据,其中所述事件数据包括快照数据和/或遥测数据;
[0187]
对所述事件数据进行采样,得到所述待测对象对应的采样数据。
[0188]
在一种可能的实施例中,所述处理器501被配置为执行:
[0189]
根据tick中断函数、性能分析工具中的至少一种,对所述待测对象在运行期间生成的事件进行采样,得到所述采样数据。
[0190]
在一种可能的实施例中,所述处理器501被配置为执行:
[0191]
调用benchmark服务,对所述采样数据进行性能分析,确定所述待测对象的性能分析结果。
[0192]
在一种可能的实施例中,所述处理器501被配置为执行:
[0193]
在确定所述测试需求后,调用benchmark服务获取与所述测试需求相关的初始化参数;
[0194]
根据所述初始化参数确定测试范围;
[0195]
利用所述benchmark服务获取所述测试范围对应的采样数据,对所述采样数据进
行性能分析,确定所述待测对象的性能分析结果。
[0196]
在一种可能的实施例中,所述采样数据包括如下任意一种或任意多种:
[0197]
运行的函数;
[0198]
函数的调用关系和被调用关系;
[0199]
执行次数超出阈值的函数;
[0200]
函数的运行时间信息;
[0201]
为函数生成的对象分配的内存信息。
[0202]
在一种可能的实施例中,所述事件包括如下任意一种或任意多种:
[0203]
硬件事件,其中所述硬件事件表征所述待测对象对硬件的使用情况;
[0204]
软件事件,其中所述软件事件表征所述待测对象生成的事件;
[0205]
跟踪点tracepoint事件,其中所述tracepoint事件表征所述待测对象的静态tracepoint触发的事件。
[0206]
本技术实施例中不限定上述存储器502和处理器501之间的具体连接介质。例如,存储器502和处理器501之间通过总线连接,总线可以分为地址总线、数据总线、控制总线等。
[0207]
存储器502可以包括只读存储器(read-only memory,rom)和随机存取存储器(random access memory,ram),还可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0208]
上述处理器501可以是通用处理器,包括中央处理器、网络处理器(network processor,np)等;还可以是数字指令处理器(digital signal processing,dsp)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
[0209]
基于同一发明构思,本技术实施例提供一种计算机可读存储介质,计算机程序产品包括:计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行如前文论述任一的性能分析方法。由于上述计算机可读存储介质解决问题的原理与性能分析方法相似,因此上述计算机可读存储介质的实施可以参见方法的实施,重复之处不再赘述。
[0210]
在具体的实施过程中,计算机存储介质可以包括:通用串行总线闪存盘(usb,universal serial bus flash drive)、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的存储介质。
[0211]
基于同一发明构思,本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行如前文论述任一的性能分析方法。由于上述计算机程序产品解决问题的原理与性能分析方法相似,因此上述计算机程序产品的实施可以参见方法的实施,重复之处不再赘述。
[0212]
计算机程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只
读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0213]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0214]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
[0215]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0216]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0217]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1