一种应用耗电监控方法、装置、电子设备及存储介质制造方法及图纸

技术编号:32278413 阅读:22 留言:0更新日期:2022-02-12 19:44
本公开涉及一种应用耗电监控方法、装置、电子设备及存储介质。包括:获取应用的CPU总占用率;在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程所对应的线程堆栈,基于所述线程堆栈得到堆栈队列;从所述堆栈队列中获取被调用次数高于预设值的线程堆栈,作为耗电堆栈。本公开实施例能够准确的将耗电对象定位到堆栈的粒度,后续可通过分析堆栈中的函数,得出耗电的原因。另一方面,能够确保较少量且高耗电量的线程堆栈被存储,因此,本公开实施例的耗电监控方法不带来性能损耗。性能损耗。性能损耗。

【技术实现步骤摘要】
一种应用耗电监控方法、装置、电子设备及存储介质


[0001]本公开涉及计算机
,尤其涉及一种应用耗电监控方法、装置、电子设备及存储介质。

技术介绍

[0002]随着计算机软件技术的发展,智能终端的使用越来越普遍,各种APP(Application,应用程序)走进了人们的日常生活。然而,一些应用在使用的过程中,会出现发烫、卡顿、降频等现象,影响用户的使用体验。相关技术中,利用耗电采样日志(Energy Log)确定应用的耗电量。然而该方法,对于高耗电量的应用,不能准确的确定该应用的耗电具体原因,因而无法对应用做进一步的改进。
[0003]因此,亟需一种应用耗电监控方法来确定耗电具体原因,实现应用的迭代优化。

技术实现思路

[0004]本公开提供一种应用耗电监控方法、装置、电子设备及存储介质,以至少解决相关技术中如何确定耗电原因的问题。本公开的技术方案如下:
[0005]根据本公开实施例的第一方面,提供一种应用耗电监控方法,包括:
[0006]获取应用的CPU总占用率;
[0007]在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程所对应的线程堆栈,基于所述线程堆栈得到堆栈队列;
[0008]从所述堆栈队列中获取被调用次数高于预设值的线程堆栈,作为耗电堆栈。
[0009]在一种可能的实现方式中,所述在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈,基于所述线程堆栈得到堆栈队列,包括:
[0010]在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈;
[0011]在预设时段内CPU平均占用率大于所述第一阈值的情况下,获取所述预设时段内CPU占用率大于第二阈值的线程堆栈,得到堆栈队列。
[0012]在一种可能的实现方式中,所述CPU平均占用率的确定方式包括:
[0013]获取预设时段内多个采样时间的CPU总占用率;
[0014]确定CPU平均占用率为多个所述CPU总占用率的总和与所述采样时间个数的比值。
[0015]在一种可能的实现方式中,所述获取应用的CPU总占用率,包括:
[0016]利用线程调用函数获取应用内运行的多个线程的标识信息;
[0017]分别获取所述标识信息对应线程的CPU占用率;
[0018]将所述多个线程的CPU占用率进行叠加,得到所述应用的CPU总占用率。
[0019]在一种可能的实现方式中,所述获取CPU占用率大于第二阈值的线程堆栈,基于所述线程堆栈得到堆栈队列,包括:
[0020]获取CPU占用率大于第二阈值的线程堆栈;
[0021]基于回溯函数,确定所述线程堆栈及所述线程堆栈的调用信息;
[0022]根据所述线程堆栈及所述调用信息,得到堆栈队列。
[0023]在一种可能的实现方式中,从所述堆栈队列中获取被调用次数高于预设值的线程堆栈,作为所述耗电堆栈,包括:
[0024]从所述堆栈队列中获取所述线程堆栈及所述线程堆栈的调用信息,确定所述线程堆栈的调用次数;
[0025]获取被调用次数高于预设值的线程堆栈,作为所述耗电堆栈。
[0026]在一种可能的实现方式中,所述基于所述线程堆栈得到堆栈队列,包括:
[0027]在内存循环队列的存储空间已满的情况下,删除所述循环队列中已存储的线程堆栈,并将所述CPU占用率大于第二阈值的线程所对应的线程堆栈存储至所述循环队列中。
[0028]根据本公开实施例的第二方面,提供一种应用耗电监控装置,包括:
[0029]一种应用耗电监控装置,包括:
[0030]获取模块,用于获取应用的CPU总占用率;
[0031]确定模块,用于在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程所对应的线程堆栈,基于所述线程堆栈得到堆栈队列
[0032]生成模块,用于从所述堆栈队列中获取被调用次数高于预设值的线程堆栈,作为耗电堆栈。
[0033]在一种可能的实现方式中,所述确定模块包括:
[0034]第一获取子模块,用于在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈;
[0035]生成子模块,用于在预设时段内CPU平均占用率大于所述第一阈值的情况下,获取所述预设时段内CPU占用率大于第二阈值的线程堆栈,得到堆栈队列。
[0036]在一种可能的实现方式中,所述CPU平均占用率的确定方式包括:
[0037]获取预设时段内多个采样时间的CPU总占用率;
[0038]确定CPU平均占用率为多个所述CPU总占用率的总和与所述采样时间个数的比值。
[0039]在一种可能的实现方式中,所述获取模块包括:
[0040]第二获取子模块,用于利用线程调用函数获取应用内运行的多个线程的标识信息;
[0041]第三获取子模块,用于分别获取所述标识信息对应线程的CPU占用率;
[0042]第一生成子模块,用于将所述多个线程的CPU占用率进行叠加,得到所述应用的CPU总占用率。
[0043]在一种可能的实现方式中,所述确定模块包括:
[0044]第一获取子模块,用于在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈;
[0045]第一确定子模块,用于基于回溯函数,确定所述线程堆栈及所述线程堆栈的调用信息;
[0046]第二生成子模块,用于根据所述线程堆栈及所述调用信息,得到堆栈队列。
[0047]在一种可能的实现方式中,所述生成模块包括:
[0048]第四获取子模块,用于从所述堆栈队列中获取所述线程堆栈及所述线程堆栈的调
用信息,确定所述线程堆栈的调用次数;
[0049]第三生成子模块,用于获取被调用次数高于预设值的线程堆栈,作为所述耗电堆栈。
[0050]在一种可能的实现方式中,所述确定模块包括:
[0051]第一获取子模块,用于在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈;
[0052]第二确定子模块,用于在内存循环队列的存储空间已满的情况下,删除所述循环队列中已存储的线程堆栈,并将所述CPU占用率大于第二阈值的线程所对应的线程堆栈存储至所述循环队列中。
[0053]根据本公开实施例的第三方面,提供一种服务器,包括:
[0054]处理器;
[0055]用于存储所述处理器可执行指令的存储器;
[0056]其中,所述处理器被配置为执行所述指令,以实现本公开实施例任一项所述的应用耗电监控方法。
[0057]根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行本公开实施例中任一项所述的应用耗电监控方法。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用耗电监控方法,其特征在于,包括:获取应用的CPU总占用率;在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程所对应的线程堆栈,基于所述线程堆栈得到堆栈队列;从所述堆栈队列中获取被调用次数高于预设值的线程堆栈,作为耗电堆栈。2.根据权利要求1所述的方法,其特征在于,所述在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈,基于所述线程堆栈得到堆栈队列,包括:在所述CPU总占用率大于第一阈值的情况下,获取CPU占用率大于第二阈值的线程堆栈;在预设时段内CPU平均占用率大于所述第一阈值的情况下,获取所述预设时段内CPU占用率大于第二阈值的线程堆栈,得到堆栈队列。3.根据权利要求2所述的方法,其特征在于,所述CPU平均占用率的确定方式包括:获取预设时段内多个采样时间的CPU总占用率;确定CPU平均占用率为多个所述CPU总占用率的总和与所述采样时间个数的比值。4.根据权利要求1所述的方法,其特征在于,所述获取应用的CPU总占用率,包括:利用线程调用函数获取应用内运行的多个线程的标识信息;分别获取所述标识信息对应线程的CPU占用率;将所述多个线程的CPU占用率进行叠加,得到所述应用的CPU总占用率。5.根据权利要求1所述的方法,其特征在于,所述获取CPU占用率大于第二阈值的线程堆栈,基于所述线程堆栈得到堆栈队列,包括:获取CPU占用率大于第二阈...

【专利技术属性】
技术研发人员:沈革
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

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

1