一种异常线程的识别方法以及计算机设备与流程

摘要: 本技术涉及操作系统领域,尤其涉及一种异常线程的识别方法以及计算机设备。背景技术:1、在终端产品中,续航时间(dailyofuse,dou)是终端设备的核心关键绩...
一种异常线程的识别方法以及计算机设备与流程

本技术涉及操作系统领域,尤其涉及一种异常线程的识别方法以及计算机设备。

背景技术:

1、在终端产品中,续航时间(daily of use,dou)是终端设备的核心关键绩效指标(key performance indicator,kpi)之一。功耗异常的线程(可简称异常线程)是对续航时长影响巨大的关键因素,然而随着终端产品的持续发展,功耗面临的挑战日益增大,目前在实际应用中,功耗异常线程出现的概率越来越大。

2、一方面是由于应用高计算需求:应用功能日益复杂化,特别是人工智能(artificial intelligence,ai)计算、图像处理等高计算需求的任务时,往往会加大对中央处理器(central processing units,cpu)、图形处理器(graphics processing units,gpu)和内存等资源的消耗,应用使用错误接口、死循环导致大量功耗浪费概率增大。另一方面是应用并行度增加:许多三方应用在后台执行多任务或并发进程,尤其是在社交媒体、即时通讯、文件同步等应用中,并发错误易发生,线程未正确同步导致忙等,负载冲高概率增大。

3、功耗异常的线程识别及管控是设备续航最后一道防线,兜底用户体验。然而,造成高功耗的关键异常线程难以识别,目前解决方案主要包含以下两种:方案a、将负载取值靠前的应用线程当作异常线程,但是除了应用线程,系统线程也可能会产生异常,需要仔细甄别系统线程能否被管控,另外负载高的线程不一定是异常线程,情况1:线程本身负载就比较重,例如,游戏渲染引擎线程、web主线程等,情况2:负载高线程并非主要功耗源,例如,运行在小核最低频的后台线程,小核最低频功耗影响非常小。此外,这种解决方案是应用级别的异常识别,无法对系统线程进行识别。方案b、基于cpu占空比识别异常线程,但线程运行在不同核、不同频率时功耗有差异,误识别率高。

技术实现思路

1、本技术提供了一种异常线程的识别方法以及计算机设备,用于直接通过精确计算当前统计周期内运行的每个线程(可以是应用线程,也可以是系统线程)的线程功耗,先初筛出导致高功耗/高热的可疑线程(即疑似异常线程),且在初筛过程中,线程无需区分是应用线程还是系统线程,覆盖更全面;之后,再设置预设筛选条件进行再次筛选,以降低误报,从而实现异常线程的精准识别。

2、基于此,本技术实施例提供以下技术方案:

3、第一方面,本技术首先提供一种异常线程的识别方法,该方法具体可以包括:首先,确定在当前统计周期内运行的(即运行过的)每个线程的线程功耗,其中,该线程可以是应用线程,也可以是系统线程,本技术对此不作限定。线程功耗用于表征对应线程在该当前统计周期内运行时所消耗的处理器功耗(如cpu功耗、gpu功耗等)或硬件外设功耗(如直接数字频率合成器(direct digital synthesizer,dds)器件的功耗)。在得到当前统计周期内的每个运行过的线程的线程功耗之后,就可以进一步判断该线程功耗是否达到预设阈值,若是,则确定该线程为疑似异常线程。确定该线程为疑似异常线程只是根据线程功耗进行异常线程的初筛过程,因此,在确定该线程为疑似异常线程之后,还需要通过其他手段进一步确定该疑似异常线程是否是真正的异常线程(即精筛过程),即进一步判断该疑似异常线程是否满足预设筛选条件,若是,则确定该疑似异常线程为异常线程。

4、在本技术上述实施方式中,直接通过精确计算当前统计周期内运行的每个线程的线程功耗,先初筛出导致高功耗/高热的可疑线程,即疑似异常线程;且在初筛过程中,线程无需区分是应用线程还是系统线程,覆盖更全面;之后,再设置预设筛选条件进行再次筛选(即精筛),以降低误报,从而实现异常线程的精准识别。

5、在第一方面的一种可能的实现方式中,在确定该疑似异常线程为异常线程之后,所述方法还可以包括:限制该异常线程在下一个统计周期的运行时长。

6、现有方案的管控力度难以控制且管控粒度粗,会导致正常线程被波及,一般管控手段是直接杀掉异常线程,这样会影响同一进程下的其他正常线程,若该线程属于前台应用的话,还会导致应用闪退,若该线程属于系统关键进程的话,可能会导致整机重启。而在本技术上述实施方式中,在确认为异常线程之后,实行线程级精细化供给压制,即通过限制异常线程在下一个周期内的最大运行时长,进而实现带宽管控,本技术精细化管控方式只压制异常线程,不影响正常线程,确保系统资源优先供给正常线程,不仅能够提高资源分配效率,避免异常线程占用过多系统资源,同时也有效降低异常线程的功耗和热影响,从而在保障系统续航能力的同时提升整体性能。

7、在第一方面的一种可能的实现方式中,在确定该疑似异常线程为异常线程之后,所述方法还可以包括:不计算该异常线程在下一个统计周期运行时的负载。

8、在本技术上述实施方式中,在确认为异常线程之后,通过限制异常线程的负载结算来降低cluster的负载,降低核的频率,本技术精细化管控方式只压制异常线程,不影响正常线程。

9、在第一方面的一种可能的实现方式中,在确定该疑似异常线程为异常线程之后,所述方法还可以包括:限制该异常线程在下一个统计周期的算力需求。

10、在本技术上述实施方式中,在确认为异常线程之后,通过限制异常线程在下一个周期的最大算力需求的范围,进而影响异常线程的选核与调频,本技术精细化管控方式只压制异常线程,不影响正常线程。

11、在第一方面的一种可能的实现方式中,线程功耗可以包括线程cpu功耗,线程cpu功耗用于表征线程在统计周期内运行时所消耗的cpu功耗,在这种情况下,确定线程的线程功耗具体可以包括:首先,确定线程在当前统计周期内运行时对应的cpu以目标cpu频率运行的运行时长,之后,根据该目标cpu功率以及运行时长确定线程的线程cpu功耗,由于cpu功率与cpu频率具有映射关系,因此目标cpu功率可以直接基于目标cpu频率得到。这里需要注意的是,由于线程在当前统计周期内可能运行过多次,且每次运行在不同的cpu核心以及不同的cpu频率,那么这里统计的是该线程在当前统计周期内每次运行时的cpu各自以目标cpu频率运行的各自的运行时长。

12、现有通过cpu占空比方式识别异常线程存在误识别和漏识别的问题,在本技术上述实施方式中,通过聚焦关键可疑的线程,构建线程cpu功耗的计算先筛选出疑似异常线程,从而解决高热/高功耗异常线程难识别的问题。

13、在第一方面的一种可能的实现方式中,根据目标cpu功率以及运行时长确定线程的线程cpu功耗的一种实现方式可以是:将目标cpu功率与运行时长相乘,得到线程的线程cpu功耗。即:线程cpu功耗=线程运行时在目标cpu频率下的cpu功率*在目标cpu频率下的运行时长。这里同样需要注意的是,由于线程在当前统计周期内可能运行过多次,那么在这种情况下,是将每个目标cpu功耗与各自对应的运行时长先进行相乘,然后进行相加,从而得到该线程的线程cpu功耗。

14、在本技术上述实施方式中,具体阐述了计算线程cpu功耗的一种实现手段,具备可实现性。

15、在第一方面的一种可能的实现方式中,疑似异常线程满足预设筛选条件可以包括但不限于:疑似异常线程的优先级低于预设优先级;和/或,疑似异常线程不属于白名单内的线程,该白名单事先构建。

16、在本技术上述实施方式中,具体阐述了疑似异常线程满足预设筛选条件的几种类型,优先级和白名单都可事先设定好,不会因为运行过程的相关数据而受到影响,具备广泛适用性。

17、在第一方面的一种可能的实现方式中,在疑似异常线程为功耗域线程的情况下,疑似异常线程的优先级属于低优先级;和/或,在疑似异常线程为性能域线程的情况下,疑似异常线程的优先级属于高优先级;和/或,在疑似异常线程为混合域线程的情况下,疑似异常线程的优先级属于中优先级。

18、在本技术上述实施方式中,具体阐述了可以根据运行时所在核心的域类型设置优先级,这种划分方式基本可以包含所有线程,具备广泛覆盖性。

19、在第一方面的一种可能的实现方式中,预设优先级可以是:高优先级,或,中优先级。

20、在本技术上述实施方式中,预设优先级可自定义,具备灵活性。

21、在第一方面的一种可能的实现方式中,疑似异常线程满足预设筛选条件可以包括但不限于:线程功耗与疑似异常线程的历史统计值之间的差值超出预设误差范围,历史统计值为疑似异常线程在目标历史时长内的线程功耗的统计均值;和/或,限制疑似异常线程后系统性能受到影响。需要注意的是,在本技术实施例中,该预设误差范围可基于历史经验值设定,也可以基于用户的个人需求设定,如,用户想要更严格的筛选规则,则该预设误差范围可以设置的小一些。具体本技术对预设误差范围的设定方式不作限定。

22、在本技术上述实施方式中,具体阐述了疑似异常线程满足预设筛选条件的几种类型,该筛选条件是基于历史数据的筛选以及基于反馈调节的筛选,与疑似异常线程运行过程中的相关数据有关,可实现动态调节,更具灵活性。

23、在第一方面的一种可能的实现方式中,限制疑似异常线程后系统性能受到影响的一种实现方式可以是:限制该疑似异常线程后处理器的帧率下降的幅度超出预设幅度范围。需要注意的是,在本技术实施例中,该预设幅度范围可基于历史经验值设定,也可以基于用户的个人需求设定,如,用户想要更严格的筛选规则,则该预设幅度范围可以设置的小一些。具体本技术对预设幅度范围的设定方式不作限定。

24、在本技术上述实施方式中,具体阐述了限制疑似异常线程后系统性能受到影响的一种典型判断方式,具备可实现性。

25、本技术第二方面提供一种计算机设备,该计算机设备具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。

26、本技术第三方面提供一种计算机设备,可以包括存储器、处理器以及总线系统,其中,存储器用于存储计算机程序(也可称为程序、计算机可读指令),处理器用于调用该存储器中存储的程序以执行本技术实施例第一方面或第一方面任意一种可能实现方式的方法。

27、在本技术的一些实现方式中,所述的计算机设备可以包括但不限于:智能终端(如,手机)、膝上型电脑(laptop computer)、个人电脑(personal computer,pc)、平板电脑、板式电脑、音箱、超级本、可佩戴装置(如,智能手环、智能手表、智能眼镜、头戴显示设备(head mount display,hmd)等)、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、混合现实(mixed reality,mr)设备、蜂窝电话(cellularphone)、个人数字助理(personal digital assistant,pda)、数字广播终端等。当然,在以下实施例中,对该计算机设备的具体形式不作任何限制。需要注意的是,本技术所述的计算机设备还可以是各种可折叠的设备,如折叠手机、折叠个人电脑、折叠平板电脑、折叠眼镜等,具体本技术对计算机设备的产品类型和产品形态不作限定。

28、本技术第四方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机可以执行上述第一方面或第一方面任意一种可能实现方式的方法。

29、本技术第五方面提供了一种计算机程序或包含指令的计算机程序产品,当该计算机程序或计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第一方面任意一种可能实现方式的方法。

30、本技术第六方面提供了一种芯片,该芯片包括至少一个处理器和至少一个接口电路,该接口电路和该处理器耦合,至少一个接口电路用于执行收发功能,并将指令发送给至少一个处理器,至少一个处理器用于运行计算机程序或指令,其具有实现如上述第一方面或第一方面任意一种可能实现方式的方法的功能,该功能可以通过硬件实现,也可以通过软件实现,还可以通过硬件和软件组合实现,该硬件或软件包括一个或多个与上述功能相对应的模块。此外,该接口电路用于与该芯片之外的其它模块进行通信。

31、在本技术的一些实现方式中,所述一个或多个处理器中还可以有部分处理器是通过专用硬件的方式来实现以上方法中的部分步骤,例如涉及神经网络模型的处理可以由专用神经网络处理器或图形处理器来实现。

32、本技术实施例提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。