一种性能瓶颈分析方法、装置、设备及存储介质与流程

文档序号:33500597发布日期:2023-03-17 22:04阅读:35来源:国知局
一种性能瓶颈分析方法、装置、设备及存储介质与流程

1.本发明涉及性能分析领域,特别涉及一种性能瓶颈分析方法、装置、设备及存储介质。


背景技术:

2.power平台linux系统上集成有很多性能分析工具,比如:cpu(中央处理器central processing unit,cpu)相关性能指标工具mpstat和sar;内存相关性能指标工具vmstat和free;i/o(input/output,计算机输入/输出接口)相关性能指标工具iostat和iotop;网络相关性能指标工具netstat和tcpdump;综合性能指标综合工具top和perf。但这些工具大多数是从操作系统角度分析cpu、内存、网络、i/o等资源瓶颈,对用户应用进程/线程视角的分析功能有限,有部分工具(如perf工具)能采集完整的用户应用进程/线程性能数据,但生成报告后都是复杂的文本格式,可读性较差,即使是有较强专业的功底的技术人员从中分析性能瓶颈也会费时费力。
3.在power平台linux系统上,性能采集perf工具虽然功能强大,但生成报告后都是复杂的文本格式,可读性较差。用单一perf工具采集和分析性能瓶颈,即使是有较强专业的功底的技术人员从中分析性能瓶颈也会费时费力。
4.本发明中专业词汇解释如下:
5.power平台linux系统:基于power处理器的服务器上运行的各种linux操作系统。
6.mpstat工具:mpstat是multiprocessor statistics的缩写,是实时监控工具,报告cpu的一些统计信息,这些信息都存在文件中,在多cpu系统里,其不但能查看所有的cpu的平均状况的信息,而且能够有查看特定的cpu信息。
7.sar工具:sar是system activity reporter系统活动情况报告的缩写,是linux上系统性能分析工具,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘i/o、cpu效率、内存使用状况、进程活动及ipc有关的活动等。
8.vmstat工具:可以展现指定时间间隔的服务器的状态值,包括服务器的cpu使用率,内存使用,虚拟内存交换情况和i/o读写情况。
9.free工具:用于显示系统内存的使用情况,包括物理内存、交换内存和内核缓冲区内存。
10.iostat工具:用于监控系统设备的i/o负载情况,iostat首次运行时会显示自系统启动开始的各项统计信息,用户可以通过指定统计的次数和时间来获得所需的统计信息。
11.iotop工具:用于监控磁盘i/o使用状况的类似top命令的工具,iotop可以监控进程的i/o信息。
12.netstat工具:用于列出系统上所有的网络套接字连接情况,还可以列出处于监听状态(即等待接入请求)的套接字。
13.tcpdump工具:用于允许抓取和分析经过系统的流量数据包。
14.top工具:用于显示进程所占系统资源,能够实时显示系统中各个进程的资源占用
状况。
15.perf工具:用于进行软件性能分析的工具,可以分析指定应用程序的性能问题,也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。


技术实现要素:

16.有鉴于此,本发明的目的在于提供一种性能瓶颈分析方法、装置、设备及存储介质,解决了现有技术中性能瓶颈分析报告可读性差的问题。
17.为解决上述技术问题,本发明提供了一种性能瓶颈分析方法,包括:
18.获取待性能瓶颈分析的应用,持续运行所述应用;
19.利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;
20.利用flamegraph火焰图工具处理所述应用调用栈数据并生成火焰图svg文件;
21.根据所述火焰图svg文件对所述应用进行性能瓶颈分析。
22.可选的,所述利用perf工具采集得到perf.data性能数据,包括:
23.当所述应用存在性能问题时,执行所述利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据的步骤。
24.可选的,所述根据所述火焰图svg文件对所述应用进行性能瓶颈分析,包括:
25.利用浏览器打开所述火焰图svg文件,直观分析所述应用的性能瓶颈。
26.可选的,利用所述perf工具对所述perf.data性能数据进行提取折叠得到应用调用栈数据,包括:
27.利用所述perf工具对所述perf.data性能数据进行提取折叠得到用户多进程/多线程应用对cpu资源的消耗信息、用户多进程/多线程应用对io资源的消耗信息、用户多进程/多线程应用的锁争用信息、用户多进程/多线程应用的锁等待信息、应用调用栈之间的依赖关系信息、消耗时间信息、应用调用栈之间的先后关系信息。
28.可选的,所述利用flamegraph火焰图工具处理所述应用调用栈数据并生成火焰图svg文件,包括:
29.利用所述flamegraph火焰图工具中的堆栈拆分工具处理所述应用调用栈数据;
30.利用所述flamegraph火焰图工具中的生成工具生成所述火焰图svg文件。
31.本发明还提供了一种性能瓶颈分析装置,应用于power平台linux系统,包括:
32.获取模块,用于获取待性能瓶颈分析的应用,持续运行所述应用;
33.采集提取模块,用于利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;
34.火焰图生成模块,用于利用flamegraph火焰图工具处理所述应用调用栈数据并生成火焰图svg文件;
35.分析模块,用于根据所述火焰图svg文件对所述应用进行性能瓶颈分析。
36.可选的,所述分析模块,包括:
37.分析单元,用于利用浏览器打开所述火焰图svg文件,直观分析所述应用的性能瓶颈。
38.可选的,所述采集提取模块,包括:
39.采集提取单元,用于当所述应用存在性能问题时,执行所述利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据的步骤。
40.本发明还提供了一种性能瓶颈分析设备,包括:
41.存储器,用于存储计算机程序;
42.处理器,用于执行所述计算机程序时实现上述的性能瓶颈分析方法的步骤。
43.本发明还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的性能瓶颈分析方法的步骤。
44.可见,本发明应用于power平台linux系统,通过获取并持续运行待性能瓶颈分析的应用;利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;利用flamegraph火焰图工具处理应用调用栈数据并生成火焰图svg文件;根据火焰图svg文件对应用进行性能瓶颈分析。本发明通过整合系统perf性能采集工具和flamegraph火焰图工具,将perf性能工具采集的详细数据生成火焰图,不需要非常专业的技能,即可通过直观观察每个调用栈的栈顶函数方格的宽度,对应用的性能瓶颈进行分析。
45.此外,本发明还提供了一种性能瓶颈分析装置、设备及存储介质,同样具有上述有益效果。
附图说明
46.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
47.图1为本发明实施例提供的一种性能瓶颈分析方法的流程图;
48.图2为本发明实施例提供的火焰图效果示例图;
49.图3为本发明实施例提供的一种性能瓶颈分析装置的结构示意图;
50.图4为本发明实施例提供的一种性能瓶颈分析设备的结构示意图。
具体实施方式
51.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.请参考图1,图1为本发明实施例提供的一种性能瓶颈分析方法的流程图。该方法可以包括:
53.s101:获取待性能瓶颈分析的应用,持续运行应用。
54.本实施例的执行主体为终端。本实施例并不限定终端的种类,只要是能够完成性能瓶颈分析的操作即可。例如,终端类型可以是专用型终端;或者终端类型还可以是通用型终端。本实施例应用于power平台linux系统,power平台linux系统可以运行各种开源的数据库、中间件或定制化的上层业务应用系统,并具有比别的平台更优的性能和可靠性。
55.本实施例并不限定待性能瓶颈分析的应用的数量。例如,可以是一个应用,或者还可以是多个应用。当获取得到应用时,开启并持续运行应用。
56.s102:利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据。
57.本实施例并不限定利用perf工具采集得到perf.data性能数据的触发条件。例如,可以是当运行应用时,则执行利用perf工具采集得到perf.data性能数据的步骤;或者还可以是当检测到应用存在功能性问题时,执行利用perf工具采集得到perf.data性能数据的步骤。本实施例并不限定应用具体的功能性问题。例如,可以是应用业务延迟;或者还可以是应用无法应答。本实施例中perf.data是用来记录过程数据,文件名为perf.data。
58.进一步地,为了使分析具有针对性,上述利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据,可以包括以下步骤:
59.当应用存在性能问题时,执行利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据的步骤。
60.本实施例中当应用存在性能问题时,即在应用运行处于负载高峰时段时,对应用进行性能瓶颈分析,分析导致应用性能问题的原因。本实施例中利用perf工具采集得到perf.data性能数据,为二进制数据,包含了运行应用的所有数据信息。
61.进一步地,为了性能分析的有效性,方便数据的展示,上述利用perf工具进行提取折叠得到应用调用栈数据,可以包括以下步骤:
62.利用perf工具对perf.data性能数据进行提取折叠得到用户多进程/多线程应用对cpu资源的消耗信息、用户多进程/多线程应用对i/o资源的消耗信息、用户多进程/多线程应用的锁争用信息、用户多进程/多线程应用的锁等待信息、应用调用栈之间的依赖关系信息、消耗时间信息、应用调用栈之间的先后关系信息。
63.本实施例通过提取主要信息,即利用perf工具将主要信息从二进制数据保存文件perf.data性能数据中抽象提取出来,用来转换为结构化文本数据,实现提取折叠得到用户多进程/多线程应用对cpu资源的消耗信息、用户多进程/多线程应用对io资源的消耗信息、用户多进程/多线程应用的锁争用信息、用户多进程/多线程应用的锁等待信息、应用调用栈之间的依赖关系信息、消耗时间信息、应用调用栈之间的先后关系信息。
64.s103:利用flamegraph火焰图工具处理应用调用栈数据并生成火焰图svg文件。
65.本实施例中火焰图(flame graph)是指在二维空间里绘制的形似火焰且能优于性能瓶颈分析的图表。纵轴代表系统上函数调用堆栈,函数调用关系自下向上排列,堆栈深度越深,高度就越高;用横轴上按字母顺序排列函数各个不同的函数调用堆,每个函数以便于区分的随机暖色调颜色的方格显示,依据在性能采集时间里它出现的频次,频次越多的函数就是消耗系统cpu或i/o资源相对较多,耗时相对较长,则代表它的方格就越宽。这样就可以通过直观观察每个调用栈的栈顶函数方格的宽度,分析应用性能的瓶颈。为了便于理解,可以参照图2,图2为本发明实施例提供的火焰图效果示例图。
66.进一步地,为了更进一步说明flamegraph火焰图的生成过程,上述利用flamegraph火焰图工具处理应用调用栈数据并生成火焰图svg文件,可以包括以下步骤:
67.利用flamegraph火焰图工具中的堆栈拆分工具处理应用调用栈数据;
68.利用flamegraph火焰图工具中的生成工具生成火焰图svg文件。
69.本实施例中利用flamegraph火焰图工具中的堆栈拆分工具对应用调用栈数据进行处理,并利用生成工具生成得到火焰图svg文件。本实施例中的svg文件是绘图文件。
70.s104:根据火焰图svg文件对应用进行性能瓶颈分析。
71.本实施例中当获得火焰图svg文件,就可以根据火焰图svg文件对应用进行性能瓶颈分析。本实施例并不限定火焰图svg文件的打开方式。例如,可以直接在浏览器中打开火焰图svg文件;或者还可以利用矢量绘图软件,打开火焰图svg文件。
72.进一步地,为了使分析更加方便快捷,上述根据火焰图svg文件对应用进行性能瓶颈分析,可以包括以下步骤:
73.利用浏览器打开火焰图svg文件,直观分析应用的性能瓶颈。
74.本实施例可以直接采用浏览器打开火焰图svg文件,直观分析应用的性能瓶颈。
75.应用本发明实施例提供的性能瓶颈分析方法,应用于power平台linux系统,本方法通过获取并持续运行待性能瓶颈分析的应用;利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;利用flamegraph火焰图工具处理应用调用栈数据并生成火焰图svg文件;根据火焰图svg文件对应用进行性能瓶颈分析。本发明通过整合系统perf性能采集工具和flamegraph火焰图工具,将perf性能工具采集的详细数据生成火焰图,不需要非常专业的技能,即可通过直观观察每个调用栈的栈顶函数方格的宽度,对应用的性能瓶颈进行分析。并且,使用浏览器打开火焰图svg文件,使分析更加快捷方便;并且,利用flamegraph火焰图工具中的堆栈拆分工具和生成工具得到火焰图svg文件,进一步地说明了flamegraph火焰图的生成过程;利用perf工具进行提取折叠得到应用调用栈数据,将二进制数据折叠提取转换为结构化文本数据,保证了性能分析的有效性,以及方便了数据的展示;并且当应用存在性能问题时,执行利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据的步骤,使分析具有针对性,节省了资源。
76.下面对本发明实施例提供的性能瓶颈分析装置进行介绍,下文描述的性能瓶颈分析装置与上文描述的性能瓶颈分析方法可相互对应参照。
77.具体请参考图3,图3为本发明实施例提供的一种性能瓶颈分析装置的结构示意图,可以包括:
78.获取模块100,用于获取待性能瓶颈分析的应用,持续运行所述应用;
79.采集提取模块200,用于利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;
80.火焰图生成模块300,用于利用flamegraph火焰图工具处理所述应用调用栈数据并生成火焰图svg文件;
81.分析模块400,用于根据所述火焰图svg文件对所述应用进行性能瓶颈分析。
82.进一步,基于上述实施例,所述分析模块400,可以包括:
83.分析单元,用于利用浏览器打开所述火焰图svg文件,直观分析所述应用的性能瓶颈。
84.进一步,基于上述实施例,所述采集提取模块200,可以包括:
85.采集提取单元,用于当所述应用存在性能问题时,执行所述利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据的步骤。
86.进一步,基于上述实施例,所述采集提取模块200,可以包括:
87.提取折叠单元,用于利用所述perf工具对所述perf.data性能数据进行提取折叠得到用户多进程/多线程应用对cpu资源的消耗信息、用户多进程/多线程应用对io资源的消耗信息、用户多进程/多线程应用的锁争用信息、用户多进程/多线程应用的锁等待信息、应用调用栈之间的依赖关系信息、消耗时间信息、应用调用栈之间的先后关系信息。
88.进一步,基于上述实施例,所述火焰图生成模块300,可以包括:
89.堆栈拆分单元,用于利用所述flamegraph火焰图工具中的堆栈拆分工具处理所述应用调用栈数据;
90.文件生成单元,用于利用所述flamegraph火焰图工具中的生成工具生成所述火焰图svg文件。
91.需要说明的是,上述性能瓶颈分析装置中的模块以及单元在不影响逻辑的情况下,其顺序可以前后进行更改。
92.应用本发明实施例提供的性能瓶颈分析装置,应用于power平台linux系统,本装置通过获取模块100,用于获取待性能瓶颈分析的应用,持续运行应用;采集提取模块200,用于利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;火焰图生成模块300,用于利用flamegraph火焰图工具处理应用调用栈数据并生成火焰图svg文件;分析模块400,用于根据火焰图svg文件对应用进行性能瓶颈分析。并且,使用浏览器打开火焰图svg文件,使分析更加快捷方便;并且,利用flamegraph火焰图工具中的堆栈拆分工具和生成工具得到火焰图svg文件,进一步地说明了flamegraph火焰图的生成过程;利用perf工具进行提取折叠得到应用调用栈数据,将二进制数据折叠提取转换为结构化文本数据,保证了性能分析的有效性,以及方便了数据的展示;并且当应用存在性能问题时,执行利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据的步骤,使分析具有针对性,节省了资源。
93.下面对本发明实施例提供的性能瓶颈分析设备进行介绍,下文描述的性能瓶颈分析设备与上文描述的性能瓶颈分析方法可相互对应参照。
94.请参考图4,图4为本发明实施例提供的一种性能瓶颈分析设备的结构示意图,可以包括:
95.存储器10,用于存储计算机程序;
96.处理器20,用于执行计算机程序,以实现上述的性能瓶颈分析方法。
97.存储器10、处理器20、通信接口31和通信总线32。存储器10、处理器20、通信接口31均通过通信总线32完成相互间的通信。
98.在本发明实施例中,存储器10中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本技术实施例中,存储器10中可以存储有用于实现以下功能的程序:
99.获取待性能瓶颈分析的应用,持续运行所述应用;
100.利用perf工具采集得到perf.data性能数据,并进行提取折叠得到应用调用栈数据;
101.利用flamegraph火焰图工具处理所述应用调用栈数据并生成火焰图svg文件;
102.根据所述火焰图svg文件对所述应用进行性能瓶颈分析。
103.在一种可能的实现方式中,存储器10可包括存储程序区和存储数据区,其中,存储
程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
104.此外,存储器10可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括nvram。存储器存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可以包括各种系统程序,用于实现各种基础任务以及处理基于硬件的任务。
105.处理器20可以为中央处理器(central processing unit,cpu)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件,处理器20可以是微处理器或者也可以是任何常规的处理器等。处理器20可以调用存储器10中存储的程序。
106.通信接口31可以为通信模块的接口,用于与其他设备或者系统连接。
107.当然,需要说明的是,图4所示的结构并不构成对本技术实施例中性能瓶颈分析设备的限定,在实际应用中性能瓶颈分析设备可以包括比图4所示的更多或更少的部件,或者组合某些部件。
108.下面对本发明实施例提供的存储介质进行介绍,下文描述的存储介质与上文描述的性能瓶颈分析方法可相互对应参照。
109.本发明还提供一种存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的性能瓶颈分析方法的步骤。
110.该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
111.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
112.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本发明的范围。
113.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
114.以上对本发明所提供的一种性能瓶颈分析方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说
明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1