CN115858399B - 一种利用线程栈快照进行代码级性能分析的方法和*** - Google Patents

一种利用线程栈快照进行代码级性能分析的方法和*** Download PDF

Info

Publication number
CN115858399B
CN115858399B CN202310088556.XA CN202310088556A CN115858399B CN 115858399 B CN115858399 B CN 115858399B CN 202310088556 A CN202310088556 A CN 202310088556A CN 115858399 B CN115858399 B CN 115858399B
Authority
CN
China
Prior art keywords
snapshots
thread stack
stack
thread
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310088556.XA
Other languages
English (en)
Other versions
CN115858399A (zh
Inventor
伍千虎
李志钢
黄尧
林刚
雷鑫
吴涛
邱承志
黄红宪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Powersi Information Technology Co ltd
Original Assignee
Powersi Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Powersi Information Technology Co ltd filed Critical Powersi Information Technology Co ltd
Priority to CN202310088556.XA priority Critical patent/CN115858399B/zh
Publication of CN115858399A publication Critical patent/CN115858399A/zh
Application granted granted Critical
Publication of CN115858399B publication Critical patent/CN115858399B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种利用线程栈快照进行代码级性能分析的方法和***,执行程序代码;采集程序代码执行中的第一线程的多个线程栈快照;分析多个线程栈快照,分别筛选出多个具有同样的方法栈的连续的线程栈快照;分别对多个具有同样的方法栈的连续的线程栈快照进行快照时间的累加计算,得到多个执行时间;比较多个执行时间,筛选出数值大于预设阈值的至少一个执行时间;以及计算至少一个执行时间的总和,并计算总和与多个线程栈快照的总时间的比值;当该比值小于或等于0.2时,程序代码无需优化;当该比值大于0.2时,对程序代码进行优化。通过采用多次线程栈快照对程序代码执行情况进行分析和汇总,计算出执行时间较长的代码段并进行优化。

Description

一种利用线程栈快照进行代码级性能分析的方法和***
技术领域
本申请属于计算机技术领域,具体涉及一种利用线程栈快照进行代码级性能分析的方法和***。
背景技术
在云时代,虚拟化技术应用日益丰富和成熟,杂乱的应用异常问题接踵而至,如何分析定位问题所在给企业带来了很大的成本,且往往没办法解决问题。
如图1所示,通常我们分析定位一个程序执行缓慢的具体原因时,使用的方式主要分为两种:代码埋点和字节码增强埋点,而无论使用哪种方式,底层一定都是以面向切面这个基础逻辑,通过切面对象,统一在指定程序方法前后添加计算时间差的逻辑代码,从而获取各方法的执行耗时来完成的,因为只有这样才能做到节约开发成本从而大面积的使用。
但是一个程序的逻辑代码那么多,我们又如何能定位到具体的问题代码呢?这时候,很自然的会考虑到增加埋点粒度,比如说对所有的业务层方法都添加上埋点,但是,虽然每个埋点消耗的性能很小,在微秒级别,但是随着数量的增加,甚至因为业务代码重用造成重复埋点或者循环使用,此时的性能开销已经无法忽略,大量的埋点无疑会加大***资源的开销,造成CPU、内存使用率增加,更有可能拖慢整个业务的执行效率,这也就决定了它的分析只能比较浅显。
发明内容
本申请为了克服现有技术的不足,提供一种利用线程栈快照进行代码级性能分析的方法和***,本方法和***无需反复的增删埋点,大大减少了人力开发成本,同时不用承担过多埋点对***的压力风险和性能消耗,通过对线程栈快照进行分析来进行代码级性能分析,并根据需要进行优化,且采用了两级线程栈快照进行深度分析,并将两级线线程栈快照嵌合实现更为准确的可视化。
为了实现上述目的,本申请采用以下技术方案:
一种利用线程栈快照进行代码级性能分析的方法,包括:
执行程序代码;
采集所述程序代码执行中的第一线程的多个线程栈快照;
分析所述多个线程栈快照,分别筛选出多个具有同样的方法栈的连续的线程栈快照;
分别对所述多个具有同样的方法栈的连续的线程栈快照进行快照时间的累加计算,得到多个执行时间;
比较所述多个执行时间,筛选出数值大于预设阈值的至少一个执行时间;以及
计算所述至少一个执行时间的总和,并计算所述总和与所述多个线程栈快照的总时间的比值;
当该比值小于或等于0.2时,所述程序代码无需优化;
当该比值大于0.2时,对所述程序代码进行优化。
进一步地,所述多个线程栈快照的采集时间间隔为4ms-20ms。
进一步地,所述优化包括:
对于所述至少一个执行时间中的第一执行时间,将所述第一执行时间所对应的所述多个具有同样的方法栈的连续的线程栈快照选出,并分别定义为Z1、Z2、……Zi
以Z1为起点、Zi为终点执行对应的所述程序代码;
每隔固定时间对所述以Z1为起点、Zi为终点执行对应的所述程序代码采集多个二级线程栈快照;
分析所述多个二级线程栈快照,筛选出不同于所述第一执行时间所对应的方法栈的二级线程栈快照;
对所述筛选出的二级线程栈快照对应的程序代码修改成具有与所述第一执行时间所对应的方法栈相同的方法栈。
进一步地,所述固定时间为1ms。
进一步地,还包括:
将所述多个线程栈快照组合成第一图;
将所述多个二级线程栈快照组合成第二图;
将所述第二图嵌入至所述第一图中,得到可视化显示。
本申请还提供了一种利用线程栈快照进行代码级性能分析的***,包括:
执行模块,用于执行程序代码;
采集模块,用于采集所述程序代码执行中的第一线程的多个线程栈快照;以及
分析比较模块,用于分析所述多个线程栈快照,分别筛选出多个具有同样的方法栈的连续的线程栈快照;
所述分析比较模块还用于分别对所述多个具有同样的方法栈的连续的线程栈快照进行快照时间的累加计算,得到多个执行时间;
所述分析比较模块还用于比较所述多个执行时间,筛选出数值大于预设阈值的至少一个执行时间;
所述分析比较模块还用于计算所述至少一个执行时间的总和,并计算所述总和与所述多个线程栈快照的总时间的比值;
当该比值小于或等于0.2时,所述程序代码无需优化;
当该比值大于0.2时,对所述程序代码进行优化。
进一步地,所述多个线程栈快照的采集时间间隔为4ms-20ms。
进一步地,还包括:
优化模块,用于对于所述至少一个执行时间中的第一执行时间,将所述第一执行时间所对应的所述多个具有同样的方法栈的连续的线程栈快照选出,并分别定义为Z1、Z2、……Zi
以Z1为起点、Zi为终点执行对应的所述程序代码;
每隔固定时间对所述以Z1为起点、Zi为终点执行对应的所述程序代码采集多个二级线程栈快照;
分析所述多个二级线程栈快照,筛选出不同于所述第一执行时间所对应的方法栈的二级线程栈快照;
对所述筛选出的二级线程栈快照对应的程序代码修改成具有与所述第一执行时间所对应的方法栈相同的方法栈。
进一步地,所述固定时间为1ms。
进一步地,还包括:
显示模块,用于将所述多个线程栈快照组合成第一图;
将所述多个二级线程栈快照组合成第二图;
将所述第二图嵌入至所述第一图中,得到可视化显示。
附图说明
图1为本申请的现有技术的方法示意图;
图2为本申请的方法示意图;
图3为本申请的***的结构示意图。
具体实施方式
在本申请的描述中,需要理解的是,术语等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的***或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
本方法和***无需反复的增删埋点,大大减少了人力开发成本,同时不用承担过多埋点对***的压力风险和性能消耗,通过对线程栈快照进行分析来进行代码级性能分析,进行代码的优化,将有问题的代码改写成具有同样的方法栈的代码,从而能够提高执行效率,且采用了两级线程栈快照进行深度分析,能够更加准确定位代码的问题所在,并将两级线线程栈快照嵌合实现更为准确的可视化。
在一些实施例中,如图2所示,本申请提供了一种一种利用线程栈快照进行代码级性能分析的方法,包括:
执行程序代码;
间隔TD-1、TD-2、TD-3、TD-4、TD-5、TD-6、TD-7、TD-8、TD-9、TD-10的时间间隔采集所述程序代码执行中的第一线程的10个线程栈快照;
分析这10个线程栈快照,分别筛选出具有同样的方法栈的连续的线程栈快照,例如TD-5、TD-6、TD-7、TD-8;
分别对TD-5、TD-6、TD-7、TD-8进行快照时间的累加计算,得到执行时间;可以理解的,这里的具有同样的方法栈的连续的线程栈快照有时候时可以多个的,因此形成了多个执行时间;
比较TD-5、TD-6、TD-7、TD-8进行快照时间的累加计算的执行时间,如果该执行时间的数值大于预设阈值,则筛选出来;以及
计算TD-5、TD-6、TD-7、TD-8进行快照时间的累加计算的执行时间,当只有一个执行时间时则单独作为总和,当有多个执行时间时则计算所有执行时间的总和,并计算所述总和与TD-1、TD-2、TD-3、TD-4、TD-5、TD-6、TD-7、TD-8、TD-9、TD-10的总时间的比值;
当该比值小于或等于0.2时,表明所述程序代码无需优化;
当该比值大于0.2时,则对所述程序代码进行优化。
在一些实施例中,TD-1、TD-2、TD-3、TD-4、TD-5、TD-6、TD-7、TD-8、TD-9、TD-10的采集时间间隔为4ms-20ms,可选的,每个采集时间可以相同也可以不同,但是需要在优选的时间范围内,才能满足性能分析的要求。
在一些实施例中,所述优化包括:
对于所述至少一个执行时间中的第一执行时间,将所述第一执行时间所对应的所述多个具有同样的方法栈的连续的线程栈快照选出,并分别定义为Z1、Z2、……Zi
以Z1为起点、Zi为终点执行对应的所述程序代码;
每隔固定时间对所述以Z1为起点、Zi为终点执行对应的所述程序代码采集多个二级线程栈快照;
分析所述多个二级线程栈快照,筛选出不同于所述第一执行时间所对应的方法栈的二级线程栈快照;
对所述筛选出的二级线程栈快照对应的程序代码修改成具有与所述第一执行时间所对应的方法栈相同的方法栈。
在一些实施例中,所述至少一个执行时间中的其他执行时间的分析也可以参照第一执行时间的处理。
在一些实施例中,所述固定时间为1ms,该固定时间能够有效采集到线程栈快照,如果时间再小会造成数量级增加的数据量,如果时间再大则无法准确定位到问题代码所在,所以1ms固定时间的限定是可以即满足内存要求又能够有效定位问题代码。
在一些实施例中,为了更好显示快照以及方便阅读,还包括:
将所述多个线程栈快照组合成第一图;
将所述多个二级线程栈快照组合成第二图;
将所述第二图嵌入至所述第一图中,得到可视化显示。
如图3所示,本申请还提供了一种利用线程栈快照进行代码级性能分析的***1,包括:
执行模块11,用于执行程序代码;
采集模块12,用于采集所述程序代码执行中的第一线程的多个线程栈快照;以及
分析比较模块13,用于分析所述多个线程栈快照,分别筛选出多个具有同样的方法栈的连续的线程栈快照;
所述分析比较模块还用于分别对所述多个具有同样的方法栈的连续的线程栈快照进行快照时间的累加计算,得到多个执行时间;
所述分析比较模块还用于比较所述多个执行时间,筛选出数值大于预设阈值的至少一个执行时间;
所述分析比较模块还用于计算所述至少一个执行时间的总和,并计算所述总和与所述多个线程栈快照的总时间的比值;
当该比值小于或等于0.2时,所述程序代码无需优化;
当该比值大于0.2时,对所述程序代码进行优化。
在一些实施例中,所述多个线程栈快照的采集时间间隔为4ms-20ms。
在一些实施例中,还包括:
优化模块14,用于对于所述至少一个执行时间中的第一执行时间,将所述第一执行时间所对应的所述多个具有同样的方法栈的连续的线程栈快照选出,并分别定义为Z1、Z2、……Zi
以Z1为起点、Zi为终点执行对应的所述程序代码;
每隔固定时间对所述以Z1为起点、Zi为终点执行对应的所述程序代码采集多个二级线程栈快照;
分析所述多个二级线程栈快照,筛选出不同于所述第一执行时间所对应的方法栈的二级线程栈快照;
对所述筛选出的二级线程栈快照对应的程序代码修改成具有与所述第一执行时间所对应的方法栈相同的方法栈。
在一些实施例中,所述固定时间为1ms。
在一些实施例中,还包括:
显示模块15,用于将所述多个线程栈快照组合成第一图;
将所述多个二级线程栈快照组合成第二图;
将所述第二图嵌入至所述第一图中,得到可视化显示。
在分析定位一个程序执行缓慢的具体原因时,本申请无需反复的增删埋点,大大减少了人力开发成本,同时不用承担过多埋点对***的压力风险和性能消耗,通过对线程栈快照进行分析来进行代码级性能分析,并根据需要进行优化,且采用了两级线程栈快照进行深度分析,并将两级线线程栈快照嵌合实现更为准确的可视化。
虽然已描述了某些实施方式和一般相关的方法,但是这些实施方式的更改和转变对于所属领域的技术人员来说是清楚的。因此,对示例性的实施方式的以上描述不限定或约束本发明。在不偏离所附权利要求的精神的情况下,其他改变、替换和更改也是可能的。

Claims (8)

1.一种利用线程栈快照进行代码级性能分析的方法,其特征在于,包括:
执行程序代码;
采集所述程序代码执行中的第一线程的多个线程栈快照;
分析所述多个线程栈快照,分别筛选出多个具有同样的方法栈的连续的线程栈快照;
分别对所述多个具有同样的方法栈的连续的线程栈快照进行快照时间的累加计算,得到多个执行时间;
比较所述多个执行时间,筛选出数值大于预设阈值的至少一个执行时间;以及
计算所述至少一个执行时间的总和,并计算所述总和与所述多个线程栈快照的总时间的比值;
当该比值小于或等于0.2时,所述程序代码无需优化;
当该比值大于0.2时,对所述程序代码进行优化;
所述优化包括:
对于所述至少一个执行时间中的第一执行时间,将所述第一执行时间所对应的所述多个具有同样的方法栈的连续的线程栈快照选出,并分别定义为Z1、Z2、……Zi
以Z1为起点、Zi为终点执行对应的所述程序代码;
每隔固定时间对所述以Z1为起点、Zi为终点执行对应的所述程序代码采集多个二级线程栈快照;
分析所述多个二级线程栈快照,筛选出不同于所述第一执行时间所对应的方法栈的二级线程栈快照;
对所述筛选出的二级线程栈快照对应的程序代码修改成具有与所述第一执行时间所对应的方法栈相同的方法栈。
2.根据权利要求1所述的一种利用线程栈快照进行代码级性能分析的方法,其特征在于:
所述多个线程栈快照的采集时间间隔为4ms-20ms。
3.根据权利要求2所述的一种利用线程栈快照进行代码级性能分析的方法,其特征在于:
所述固定时间为1ms。
4.根据权利要求3所述的一种利用线程栈快照进行代码级性能分析的方法,其特征在于,还包括:
将所述多个线程栈快照组合成第一图;
将所述多个二级线程栈快照组合成第二图;
将所述第二图嵌入至所述第一图中,得到可视化显示。
5.一种利用线程栈快照进行代码级性能分析的***,其特征在于,包括:
执行模块,用于执行程序代码;
采集模块,用于采集所述程序代码执行中的第一线程的多个线程栈快照;以及
分析比较模块,用于分析所述多个线程栈快照,分别筛选出多个具有同样的方法栈的连续的线程栈快照;
所述分析比较模块还用于分别对所述多个具有同样的方法栈的连续的线程栈快照进行快照时间的累加计算,得到多个执行时间;
所述分析比较模块还用于比较所述多个执行时间,筛选出数值大于预设阈值的至少一个执行时间;
所述分析比较模块还用于计算所述至少一个执行时间的总和,并计算所述总和与所述多个线程栈快照的总时间的比值;
当该比值小于或等于0.2时,所述程序代码无需优化;
当该比值大于0.2时,对所述程序代码进行优化;
优化模块,用于对于所述至少一个执行时间中的第一执行时间,将所述第一执行时间所对应的所述多个具有同样的方法栈的连续的线程栈快照选出,并分别定义为Z1、Z2、……Zi
以Z1为起点、Zi为终点执行对应的所述程序代码;
每隔固定时间对所述以Z1为起点、Zi为终点执行对应的所述程序代码采集多个二级线程栈快照;
分析所述多个二级线程栈快照,筛选出不同于所述第一执行时间所对应的方法栈的二级线程栈快照;
对所述筛选出的二级线程栈快照对应的程序代码修改成具有与所述第一执行时间所对应的方法栈相同的方法栈。
6.根据权利要求5所述的一种利用线程栈快照进行代码级性能分析的***,其特征在于:
所述多个线程栈快照的采集时间间隔为4ms-20ms。
7.根据权利要求6所述的一种利用线程栈快照进行代码级性能分析的***,其特征在于:
所述固定时间为1ms。
8.根据权利要求7所述的一种利用线程栈快照进行代码级性能分析的***,其特征在于,还包括:
显示模块,用于将所述多个线程栈快照组合成第一图;
将所述多个二级线程栈快照组合成第二图;
将所述第二图嵌入至所述第一图中,得到可视化显示。
CN202310088556.XA 2023-02-09 2023-02-09 一种利用线程栈快照进行代码级性能分析的方法和*** Active CN115858399B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310088556.XA CN115858399B (zh) 2023-02-09 2023-02-09 一种利用线程栈快照进行代码级性能分析的方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310088556.XA CN115858399B (zh) 2023-02-09 2023-02-09 一种利用线程栈快照进行代码级性能分析的方法和***

Publications (2)

Publication Number Publication Date
CN115858399A CN115858399A (zh) 2023-03-28
CN115858399B true CN115858399B (zh) 2023-05-05

Family

ID=85657790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310088556.XA Active CN115858399B (zh) 2023-02-09 2023-02-09 一种利用线程栈快照进行代码级性能分析的方法和***

Country Status (1)

Country Link
CN (1) CN115858399B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688589A (zh) * 2017-02-20 2018-02-13 平安科技(深圳)有限公司 数据库***优化的方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289411B2 (en) * 2013-11-18 2019-05-14 Microsoft Technology Licensing, Llc Diagnosing production applications
CN111368104B (zh) * 2018-12-26 2023-05-26 阿里巴巴集团控股有限公司 信息处理方法、装置及设备
CN111679984B (zh) * 2020-06-08 2023-09-19 中国银行股份有限公司 一种性能分析方法和装置
CN112596938A (zh) * 2020-12-26 2021-04-02 中国农业银行股份有限公司 一种异常监控方法及装置
CN113032215B (zh) * 2021-03-24 2024-05-28 北京字节跳动网络技术有限公司 线程快照解析方法、装置、设备和存储介质
CN113608982A (zh) * 2021-07-27 2021-11-05 远景智能国际私人投资有限公司 函数执行性能监测方法、装置、计算机设备及存储介质
CN113721920A (zh) * 2021-08-30 2021-11-30 济南浪潮数据技术有限公司 一种应用组件的诊断方法、***、电子设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688589A (zh) * 2017-02-20 2018-02-13 平安科技(深圳)有限公司 数据库***优化的方法及装置
WO2018149085A1 (zh) * 2017-02-20 2018-08-23 平安科技(深圳)有限公司 数据库***优化的方法、***、电子装置及存储介质

Also Published As

Publication number Publication date
CN115858399A (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
US9590880B2 (en) Dynamic collection analysis and reporting of telemetry data
CN108563739B (zh) 天气数据获取方法及装置、计算机装置及可读存储介质
US9965327B2 (en) Dynamically scalable data collection and analysis for target device
US20090094589A1 (en) Optimizing heap memory usage
CN104820630A (zh) 基于业务变化量的***资源监控装置
US10042732B2 (en) Dynamic data collection pattern for target device
US20160077828A1 (en) Logical grouping of profile data
US20080140627A1 (en) Method and apparatus for aggregating database runtime information and analyzing application performance
US20240020215A1 (en) Analyzing large-scale data processing jobs
CN102541884B (zh) 数据库优化方法和装置
US8972308B2 (en) Combining multivariate time-series prediction with motif discovery
CN106776337A (zh) 一种性能分析方法、装置及电子设备
CN104778185A (zh) 异常结构化查询语言sql语句确定方法及服务器
WO2020211253A1 (zh) 分布式***中主机数量弹性伸缩方法、装置和计算机设备
CN104331335A (zh) 门户网站的死链检查方法和装置
CN112527300B (zh) 面向多目标的细粒度编译自调优方法
CN112069049A (zh) 数据监控管理方法、装置、服务器及可读存储介质
CN115858399B (zh) 一种利用线程栈快照进行代码级性能分析的方法和***
CN105701645A (zh) 一种物料管理方法及装置
CN109656712A (zh) 一种提取grib码数据的方法及***
WO2020259155A1 (zh) 一种生成告警数据报表的方法及装置
CN103268329A (zh) 等离子显示屏制造过程数据挖掘***
Geimer et al. Recent developments in the scalasca toolset
CN114756602A (zh) 实时流式的流程挖掘方法和***及计算机可读存储介质
CN112256418B (zh) 一种大数据任务调度方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant