本申请涉及数据处理技术领域,尤其涉及一种进程处理方法、电子设备及存储介质。
背景技术:
在相关技术中,电子设备的内存空间有限,并在使用一段时间后,电子设备的后台会存在较多的进程,这样会占用电子设备的大量内存空间。目前,当电子设备的内存空间不足时,通常会进行内存回收。
但是,由于内存紧张将一些已加载至内存的文件缓存进行回收,如果多个线程再次访问对应的历史页面,且对应的历史页面不在文件缓存中,则该多个线程需要从磁盘分别读取对应的历史页面。这样容易产生iowait,从而造成线程被阻塞,进而导致使用卡顿,影响用户体验。
技术实现要素:
本申请实施例提供了一种进程处理方法、电子设备及存储介质。
第一方面,提供一种进程处理方法,包括:
获取当前周期内电子设备中各个进程进行读写操作时的等待时长;
从所述当前周期内的等待时长中,确定处于第一预设时长范围内的等待时长的第一数量;
根据所述第一数量,获取与所述第一预设时长范围对应的待杀进程;
对所述待杀进程进行处理。
第二方面,提供一种电子设备,包括:
获取模块,用于获取当前周期内电子设备中各个进程进行读写操作时的等待时长;
从所述等待时长中,确定处于第一预设时长范围内的等待时长的第一数量;以及,
根据所述第一数量,获取与所述第一预设时长范围对应的待杀进程;
处理模块,用于对所述待杀进程进行处理。
第三方面,提供一种电子设备,包括处理器和存储器,所述处理器和存储器耦合,所述存储器用于存储计算机程序指令,当所述处理器执行所述计算机程序指令时,使得电子设备执行上述第一方面所述的方法。
第四方面,提供一种计算机存储介质,所述计算机存储介质中存储有程序指令,当所述程序指令在电子设备上运行时,使得电子设备执行上述第一方面所述的方法。
第五方面,提供一种芯片,所述芯片与电子设备中的存储器耦合,使得所述芯片在运行时调用所述存储器中存储的程序指令,使得所述电子设备执行上述第一方面所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:本申请通过周期性地对电子设备中各个进程对应的读写操作进行监控以获取到各个进程进行读写操作时的等待时长,并从等待时长中,确定处于第一预设时长范围内的等待时长的第一数量,基于第一数量识别到电子设备出现较严重iowait时,及时杀进程进行空间释放。这样,可以降低加载完的文件缓存被回收的概率,从而电子设备可以更多地对文件缓存中的页面进行直接访问,减少了从磁盘读取数据,进而缓解了iowait,减少了卡顿,提高了用户的使用体验。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例和相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种进程处理方法的示意图;
图2为本申请实施例提供的另一种进程处理方法的示意图;
图3为本申请实施例提供的另一种进程处理方法的示意图;
图4a为本申请实施例提供的一种电子设备显示的界面的示意图;
图4b为本申请实施例提供的一种电子设备显示的界面的示意图;
图5为本申请实施例提供的一种电子设备的结构框图;
图6为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定顺序。本申请实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在相关技术中,现有安卓(android)的终端设备大多使用交换区(即swap空间)进行内存释放,即通过内存回收将最近使用较少的匿名页压缩至swap空间中。其中,交换区可以为压缩内存区(例如zram或zswap)等。
电子设备中应用程序的进程被清理后,若应用程序的进程再次被使用,则需要重新启动加载该应用程序的进程。由于重新加载过程比较慢,故导致用户体验较差。由此可见,电子设备中内核一般的原则为尽量不杀或少杀进程,但若内存极度紧张(即电子设备的可用内存小于或等于预置内存阈值)且内存回收的难度较大,则需要启动低内存杀手(lowmemorykiller,lmk)选择进程来杀,以释放出更多内存。
下面对上述所涉及的术语做一个简要的说明,lmk为安卓内核层在低内存时按一定策略杀进程释放内存的管理机制;匿名页(anonymouspage)为没有文件背景的页面,如堆、栈、数据段等,不以文件形式存在;swap空间可以为磁盘上的一块区域,当系统物理内存紧张时,存储内存中不常访问的数据存储至swap空间;zram为压缩过的内存,压缩后仍存放于随机存取存储器(randomaccessmemory,ram),android终端设备常用zram虚拟为一个swap设备;zswap为内存(即memory)与闪存(即flash)之间的一层存储器。
目前,lmk选择杀进程的策略为:根据可用内存处于的预置内存范围,选择需要杀的最低进程优先级(表1中使用adjmin表示,adjmin越大表示优先级越低)。示例性的,预设对应关系包括最低进程优先级与预置内存范围之间的对应关系,该预设对应关系如表1所示:
表1
结合表1可知:
当可用内存小于320mb且大于等于220mb,确定最低进程优先级为906,此时选取进程优先级大于等于906的进程来杀;
当可用内存小于220mb且大于等于120mb,确定最低进程优先级为900,此时选取进程优先级大于等于900的进程来杀;
当可用内存小于120mb且大于等于100mb,确定最低进程优先级为300,此时选取进程优先级大于等于300的进程来杀;
当可用内存小于100mb且大于等于90mb,确定最低进程优先级为200,此时选取进程优先级大于等于200的进程来杀;
当可用内存小于90mb且大于等于70mb,确定最低进程优先级为100,此时选取进程优先级大于等于100的进程来杀;
当可用内存小于70mb且大于等于0mb,确定最低进程优先级为0,此时选取进程优先级大于等于0的进程来杀。
如图1所示,示出了一种电子设备在低内存的情况下,lmk选择杀进程的示意图。图1所示的可用内存可以包括空闲内存(即通常所说的free,图1中用free表示),和/或,文件页(即通常所说的filepage,图1中用file表示)。其中,minfree、minfree1、minfree2、minfree3、minfree4、minfreen用于表示不同的内存阈值,adj1、adj2、adj3、adj4、adjn用于表示不同的进程优先级。
结合图1,在相关技术中,在minfree为320mb的情况下,若文件页为340mb,则lmk不会进行杀进程。但是,假设此时电子设备频繁地存在读写操作(如页面回收和加载),则会发生iowait(即电子设备因为输入/输出(input/output,io)导致的进程等待),进而导致电子设备存在卡顿或者响应迟缓等情况,影响了用户的体验。
需要说明的是,本申请实施例中所涉及的电子设备可以包括手机、可穿戴设备(例如包括但不限于以手腕为支撑的watch类(比如手表、手腕等产品),以脚为支撑的shoes类(比如鞋、袜子或者其他腿上佩戴产品),以头部为支撑的glass类(比如眼镜、头盔、头带等)以及智能服装,书包、拐杖、配饰等各类非主流产品形态)、个人数字助理(personaldigitalassistant,pda)、便携式多媒体播放器(personalmediaplayer,pmp)装置、笔记本电脑、笔记本(notepad)、无线宽带(wirelessbroadband,wibro)终端、平板电脑(personalcomputer,pc)、智能pc、销售终端(pointofsales,pos)和车载电脑等,当然,还可以包括服务器等,本申请对此不作特殊限制。
本申请中的adj用于表示进程优先级,范围是-1000~1000,adj的数值越大,表示进程优先级越低。其中,adj小于0的进程可以是系统进程,adj为0的进程可以是前台应用进程;adj大于0的进程可以是后台应用进程。
下面结合具体实施例对本申请进行进一步说明。
图2为本申请实施例示出的一种进程处理方法,所述方法应用于电子设备,如图2所示,所述方法包括:
201、获取当前周期内电子设备中各个进程进行读写操作时的等待时长。
其中,本申请中的读写操作可以为各个进程对磁盘的io设备进行的读写操作。
在本申请可选实施例中,由于电子设备在内存紧张时会将一些已加载至内存的文件缓存进行回收,故电子设备需要对磁盘进行读写操作(即通常所说的io操作)以获取到需要的文件。由于读写操作的速度相对内存较慢,如果应用程序频繁地进行读写操作,则会大大降低应用程序的响应速度。并且在读写操作的数量较大时,等待读写操作会造成大量进程的积压,进程积压又会消耗电子设备的可用内存,若可用内存不足,则继续进行内存回收,如此形成了恶性循环。但是,若可用内存比较充足,则可以缓存的数据量较大,从而减少了读写操作,进而提高了应用程序的响应速度。
综上,本申请需要周期性地监控电子设备中各个进程进行的读写操作。在一种可选实施例中,可以在预置的时间窗口周期(例如1s)内,监控电子设备中各个进程进行读写操作时对应的等待时长(即通常所说的iowait耗时)。其中,当前周期为当前时刻对应的时间窗口周期。示例性的,当前周期内存在进程a、进程b以及进程c,且当进程a进行读写操作时,进程b需要等待进程a完成读写操作后进行读写操作,进程c需要等待进程b完成读写操作后进行读写操作。这样,若进程a之前不存在需要等待的进程,则进程a进行读写操作时的等待时长为0ms,进程b进行读写操作时的等待时长为t1ms(t1ms即为进程a进行读写操作的时长),进程c进行读写操作时的等待时长为t2ms(t2ms即为进程a和进程b进行读写操作的总时长)。上述示例只是示例性说明,本申请对此不作特殊限制。
需要说明的是,由于本申请考虑到大量的读写操作会导致电子设备卡顿,故若在当前周期内存在少量进程进行读写操作,则本步骤获取到少量进程进行读写操作的等待时长,此时当前周期内的等待时长的数量较少,这样可能并不会造成卡顿的问题。基于此,在本申请的可选实施例中,在当前周期内的等待时长的数量大于等于第一预设数值的情况下,执行步骤202;在当前周期内的等待时长的数量小于第一预设数值的情况下,获取下一周期内的等待时长。
202、从等待时长中,确定处于第一预设时长范围内的等待时长的第一数量。
在本申请实施例中,本申请可以预先设置有至少一个预设时长范围。每个预设时长范围包含的时长数值大小不同。其中,第一预设时长范围为至少一个预设时长范围中的一个预设时长范围。
示例性的,在预设时长范围的数量为两个的情况下,第一预设时长范围为[100ms,500ms),第二预设时长范围为[500ms,+∞)。上述示例只是示例性说明,本申请对此不作特殊限制。
在本申请的一种可选实施例中,预设时长范围可以为由耗时较长的数值构成的范围,故预设时长范围包括的最小时长数值大于等于第二预设数值。即在至少一个预设时长范围包括单个预设时长范围的情况下,该单个预设时长范围包括的最小时长数值大于等于第二预设数值。例如,第二预设数值为50ms,单个预设时长范围设置为[200ms,400ms),其中50ms小于200ms;在至少一个预设时长范围包括至少两个预设时长范围的情况下,该至少两个预设时长范围包括的最小时长数值大于等于第二预设数值。例如,第二预设数值为50ms,第一预设时长范围设置为[100ms,500ms),第二预设时长范围设置为[500ms,+∞),该两个预设时长范围包括的最小时长数值为100ms,且50ms小于100ms。这样,若某个进程在进行读写操作时的等待时长较短,则该次读写操作可以认为属于正常等待的读写操作,故该次读写操作的等待时长未处于任一预设时长范围内。
基于此,在一种实施例中,本申请可以确定当前等待时长是否处于任一预设时长范围内,等待时长包括当前等待时长;若处于,则以当前等待时长处于第一预设时长范围内为例进行说明,此时可以计算第一预设时长范围对应的上一历史数量与1之间的和值得到第一预设时长范围的当前数量;若不处于,即获取当前等待时长的下一等待时长,继续执行确定下一等待时长是否处于任一预设时长范围内。
可以理解的是,上一历史数量可以为从历史时长中,确定的处于第一预设时长范围内的历史时长的数量。历史时长可以包括但不限于以下两种情况:
一种情况为,历史时长可以包括当前周期内的历史等待时长。此时,可以通过当前周期内的每个等待时长对所属的预设时长范围进行累积计数,得到各个预设时长范围包括的当前周期内等待时长的数量。
另一种情况为,历史时长可以包括历史周期内的历史等待时长以及当前周期内的历史等待时长。此时,可以根据当前周期内的每个等待时长对所属的预设时长范围进行累积计数,得到各个预设时长范围分别对应的当前总数量。这样,计算各个预设时长范围的当前总数量与上一周期的历史总数量之间的差值,得到各个预设时长范围对应的数量。
在另一种实施例中,由于预设时长范围中存在最小时长数值。这样,可以判断当前等待时长是否大于或者等于最小时长数值,若大于或者等于,则获取当前等待时长所属的第一预设时长范围;若小于,则获取当前等待时长的下一等待时长,继续执行下一等待时长是否大于等于最小时长数值。可见,可以通过大于等于最小时长数值的等待时长对所属的预设时长范围进行计数,得到预设时长范围包括的当前周期内的等待时长的数量。
示例性的,如图3所示,可以首先在当前周期内监控电子设备在进行读写操作时的等待时长;图3中的预设时长范围包括[100ms,500ms)和[500ms,+∞);接着针对各个预设时长范围进行计数,其中iowait_low_cnt为[100ms,500ms)对应的计数结果,iowait_high_cnt为[500ms,+∞)对应的计数结果。
一种实施例中,iowait_low_cnt可以为从当前周期内的等待时长中确定的处于[100ms,500ms)内的等待时长的数量,iowait_high_cnt可以为从当前周期内的等待时长中确定的处于[500ms,+∞)内的等待时长的数量。另一种实施例中,iowait_low_cnt可以为从当前周期内的等待时长以及历史周期内的历史等待时长中确定的处于[100ms,500ms)内的等待时长的当前计数结果,iowait_high_cnt可以为从当前周期内的等待时长以及历史周期内的历史等待时长中确定的处于[500ms,+∞)内的等待时长的当前基计数结果,此时,需要计算各个预设时长范围对应的当前计数结果与上一周期的上一计数结果之间的差值得到各个预设时长范围对应的数量。
203、根据第一数量,获取与第一预设时长范围对应的待杀进程。
在本申请的一种实施例中,在第一数量大于等于第一预设时长范围对应的预设数量,和/或,变化量与历史数量之间的比值大于等于第一预设时长范围对应的预设阈值的情况下,获取与第一预设时长范围对应的待杀进程;历史数量为上一周期获取到的处于第一预设时长范围内的等待时长的数量,变化量为第一数量与历史数量之间的差值。
应理解,若第一数量较小,则确定少量进程在进行读写操作时存在等待较长的问题,故不会导致电子设备存在严重卡顿。因此,本申请需要在第一数量较大的情况下执行杀进程的操作。以及,若变化量与历史数量之间的比值较小,则说明增加了少量进程在进行读写操作存在等待较长,这样可能不会造成电子设备存在严重卡顿。因此,本申请需要在变化量与历史数量之间的比值较大的情况下执行杀进程的操作。
在一种可选实施例中,时长数值大的预设时长范围对应的预设数量较小,时长数值小的预设时长范围对应的预设数量较大。示例性的,继续以图3中的示例为例进行说明,若预设时长范围包括[100ms,500ms)和[500ms,+∞),则预先对[100ms,500ms)设置的预设数量为iowait_low_cnt_max(例如100),对[500ms,+∞)设置的预设数量为iowait_high_cnt_max(例如50)。图3中的iowait_low_cnt可以为从当前周期内的等待时长中确定的处于[100ms,500ms)内的等待时长的数量,iowait_high_cnt可以为从当前周期内的等待时长中确定的处于[500ms,+∞)内的等待时长的数量。那么,iowait_low_cnt超过设定的iowait_low_cnt_max(如100),则触发iowait_low_event事件;iowait_high_cnt超过设定的iowait_high_cnt_max(例如50),则触发iowait_high_event事件,且iowait_low_event事件和iowait_high_event事件均会触发lmk。
在本申请的可选实施例中,可以通过但不限于以下方式获取待杀进程:
方式一、电子设备中预先存储有第一预设对应关系,第一预设对应关系包括预设时长范围与进程优先级之间的对应关系。这样,电子设备可以在第一数量大于等于第一预设时长范围对应的预设数量,和/或,变化量与历史数量之间的比值大于等于第一预设时长范围对应的预设阈值的情况下,根据第一预设对应关系获取第一预设时长范围对应的第一进程优先级,并确定大于等于第一进程优先级的进程为待杀进程。
需要说明的是,若本步骤根据第一预设对应关系获取至少两个第一预设时长范围分别对应的第一进程优先级,则根据至少两个第一预设时长范围分别对应的第一进程优先级确定待杀进程。
示例性的,若预设数量范围为[100ms,500ms)和[500ms,+∞),[100ms,500ms)对应的预设数量为100,[500ms,+∞)对应的预设阈值为0.3。此时,若获取到[100ms,500ms)对应的第一数量为120,且获取到[500ms,+∞)对应的变化量与历史数量之间的比值为0.4,则120大于100,且0.4大于0.3,故电子设备需要获取[100ms,500ms)对应的待杀进程以及[500ms,+∞)对应的待杀进程。
进一步地,由于至少两个第一预设时长范围分别对应的待杀进程中存在重复进程,故在一种实施例中,可以从至少两个第一预设时长范围分别对应的第一进程优先级中获取最低进程优先级,并确定大于等于最低进程优先级的进程为待杀进程。上述示例只是示例性说明,本申请对此不作特殊限制。
方式二、根据第一数量,获取第一预设时长范围对应的第一释放内存范围;根据第一释放内存范围和电子设备的当前可用内存,获取与第一预设时长范围对应的待杀进程。
可以理解的是,电子设备中预先存储有第二预设对应关系,第二预设对应关系包括预设时长范围、释放内存范围以及进程优先级之间的对应关系。这样,电子设备可以在第一数量大于等于第一预设时长范围对应的预设数量,和/或,变化量与历史数量之间的比值大于等于第一预设时长范围对应的预设阈值的情况下,根据第二预设对应关系,获取第一预设时长范围对应的第一释放内存范围。
示例性的,如图3所示,在释放内存范围的数量为一个的情况下,第二预设对应关系可以包括:若预设时长范围为[100ms,500ms),则对应的释放内存范围为[0,iowait_low_minfree),且对应的进程优先级为iowait_low_adj,例如,iowait_low_minfree为400mb,iowait_low_adj为606;若预设时长范围为[500ms,+∞),则对应的释放内存范围为[0,iowait_high_minfree),且对应的进程优先级为iowait_high_adj,例如,iowait_high_minfree为500mb,iowait_high_adj为200。可见,由于时长数值大的预设时长范围存在程度较大的延迟,故对应的进程优先级较小,以便可以选择到范围较广的待杀进程;由于时长数值小的预设时长范围存在程度一般的延迟,故对应的进程优先级较大,以便可以选择到范围较小的待杀进程。
在释放内存范围的数量为多个的情况下,第二预设对应关系可以包括:若预设时长范围为[100ms,500ms),则对应的释放内存范围为[0mb,100mb)、[100mb,400mb)、[400mb,500mb),且[0mb,100mb)对应的进程优先级为adjmin1、[100mb,400mb)对应的进程优先级为adjmin2、[400mb,500mb)对应的进程优先级为adjmin3,adjmin1<adjmin2<adjmin3;若预设时长范围为[500ms,+∞),则对应的释放内存范围为[0mb,200mb)、[200mb,500mb)、[500mb,605mb),且[0mb,200mb)对应的进程优先级为adjmin4、[200mb,500mb)对应的进程优先级为adjmin5、[500mb,605mb)对应的进程优先级为adjmin6,adjmin4<adjmin5<adjmin6。上述示例中的数值只是示例性说明,本申请对此不作特殊限制。
需要说明的是,不同的预设时长范围对应的释放内存范围可以相同,也可以不同,本申请对此不作限定。另外,本申请中的释放内存范围可以为对表1中现有的预置内存范围进行调整得到的范围,例如可以将预置内存范围的两个边界数值分别调大得到释放内存范围。其中,可以预先设置有补偿值(例如为200m),分别计算预置内存范围的两个边界数值与补偿值之间的和值得到两个新边界数值,并根据新边界数值确定释放内存范围,即将新边界数值作为释放内存范围的边界数值。
可选地,对于不同的预设内存范围设置的补偿值可以不同。对于时长数值大的预设时长范围,对应的补偿值较大;对于时长数值小的预设时长范围,对应的补偿值较小。
进一步地,电子设备可以根据第一释放内存范围和电子设备的当前可用内存,获取目标进程优先级;以及根据目标进程优先级,获取与第一预设时长范围对应的待杀进程。
其中,在第一释放内存范围的数量为一个的情况下,若当前可用内存处于第一释放内存范围内,则获取第一释放内存范围对应的目标进程优先级;或者,在第一释放内存范围的数量为至少两个的情况下,在第一释放内存范围中存在当前可用内存所属的目标释放内存范围的情况下,获取目标释放内存范围对应的目标进程优先级。
在本申请实施例中,根据目标进程优先级,获取与第一预设时长范围对应的待杀进程,可以包括但不限于以下情况:
(1)确定终端设备中的目标进程为待杀进程;目标进程的进程优先级大于等于目标进程优先级。
如图3所示,预设时长范围为[100ms,500ms),对应的释放内存范围为[0,iowait_low_minfree),且对应的进程优先级为iowait_low_adj,例如,iowait_low_minfree为400mb,iowait_low_adj为606;预设时长范围为[500ms,+∞),则对应的释放内存范围为[0,iowait_high_minfree),且对应的进程优先级为iowait_high_adj,例如,iowait_high_minfree为500mb,iowait_high_adj为200。这样,在触发第一lmk的情况下,若当前可用内存处于[0,iowait_low_minfree)内,则选取进程优先级大于等于iowait_low_adj(如606)的进程作为待杀进程;在触发第二lmk的情况下,若当前可用内存处于[0,iowait_high_minfree)内,则选取进程优先级大于等于iowait_high_adj(如200)的进程作为待杀进程。
(2)展示目标进程的进程标识,并响应于对目标进程标识的选取操作,确定目标进程标识指示的目标进程为待杀进程。其中,进程标识包括目标进程标识;目标进程的进程优先级大于等于目标进程优先级。
可以理解的是,为了提高用户的使用灵活性,本申请可以基于用户对各个应用程序的待使用频率确定待杀进程。
示例性的,如图4a所示,电子设备可以展示有目标进程的进程标识,可选地,图4a中将不同应用程序的进程标识进行分类展示。进一步地,可以在每个应用程序的程序标识周围设置第一选择框,以及在每个进程标识的周围设置第二选择框。这样,用户可以对某个应用程序的第一选择框进行勾选,以便对该某个应用程序的全部进程标识进程选取,或者,用户可以对某个应用程序的部分进程标识的第二选择框进行勾选,以便对该某个应用程序的部分进程进行选取。
进一步地,为了使得用户可以更加准确地选取待杀进程,本申请还可以展示目标进程的内存占用大小。其中,目标进程的内存占用大小可以包括:目标进程的匿名页大小。这样,用户可以根据待使用频率以及目标进程的内存占用大小选取待杀进程。如图4b所示,电子设备可以展示有目标进程的进程标识以及内存占用大小,图4b中的xx1、xx2、xx3、xx4、yy1、yy2、yy3、yy4、zz1、zz2、zz3、zz4、vv1、vv2、vv3、vv4表示内存占用大小。
方式三、本申请还可以包括:根据第一预设时长范围和/或第一预设时长范围对应的第一数量,获取第二数量;此时,本步骤可以包括:根据第一数量,获取与第一预设时长范围对应的第三数量的待杀进程;其中,若第二数量大于电子设备中进程的数量,则第三数量为电子设备中进程的数量;若第二数量小于等于电子设备中进程的数量,则第三数量与第二数量相同。
可以理解的是,时长数值大的预设时长范围存在程度较大的延迟,故对应的待杀进程的数量较多,时长数值小的预设时长范围存在程度一般的延迟,故对应的待杀进程的数量较少。
应理解,第一预设时长范围对应的第一数量非常大,则说明存在非常多进程的读写操作等待较长,故对应的待杀进程的数量非常多;第一预设时长范围对应的第一数量一般大,则说明存在一般多进程的读写操作等待较长,故对应的待杀进程的数量一般多。
综上,若第一预设时长范围越大,和/或,第一预设时长范围对应的第一数量越大,则第二数量越大。
在一种可选实施例中,可以预先对第一预设时长范围设置第一权重,对第一预设时长范围对应的第一数量设置第二权重,以及对第一预设时长范围设置标识数值。其中,预设时长范围中最小时长数值越大,对应的标识数值越大;预设时长范围中最小时长数值越小,对应的标识数值越小。
这样,可以分别计算第一权重和第一预设时长范围对应的标识数值之间的乘积得到范围权值,计算第二权重和第一数量之间的乘积得到数量权值。在根据第一预设时长范围获取第二数量的情况下,确定范围权值为第二数量;在根据第一预设时长范围对应的第一数量获取第二数量的情况下,确定数量权值为第二数量;在根据第一预设时长范围以及第一预设时长范围对应的第一数量获取第二数量的情况下,确定范围权值和数量权值之间的第一和值为第二数量。
需要说明的是,若范围权值、数量权值、第一和值为小数,则可以对范围权值、数量权值、第一和值进行取整处理得到对应的第二数量。其中,取整处理可以为向上取整处理,也可以为向下取整处理,本申请对此不作特殊限制。
进一步地,由于电子设备中的各个进程存在对应的进程优先级和占用总内存,故可以将各个进程按照进程优先级和/或占用总内存进行排名。其中,若第一进程的进程优先级越大,和/或,第一进程的占用总内存越大,则第一进程的排名越大,第一进程为电子设备中的任一进程。这样,可以按照排名从大到小的顺序,从各个进程中获取第三数量的待杀进程。
204、对待杀进程进行处理。
在本步骤中,可以根据待杀进程的进程优先级从高到低的顺序,依次对待杀进程进行处理。
通过本申请实施例所述的方法,可以获取当前周期内电子设备中各个进程进行读写操作时的等待时长;从等待时长中,确定处于第一预设时长范围内的等待时长的第一数量;根据第一数量,获取与第一预设时长范围对应的待杀进程;对待杀进程进行处理。可见,本申请通过周期性地对电子设备中各个进程对应的读写操作进行监控以获取到各个进程进行读写操作时的等待时长,并从等待时长中,确定处于第一预设时长范围内的等待时长的第一数量,基于第一数量识别到电子设备出现较严重iowait时,及时杀进程进行空间释放,这样,可以降低加载完的文件缓存被回收的概率,从而电子设备可以更多地对文件缓存中的页面进行直接访问,减少了从磁盘读取数据,进而缓解了iowait,减少了卡顿,提高了用户的使用体验。
图5为本申请实施例提供的一种电子设备的结构框图,如图5所示,包括:
获取模块501,用于获取当前周期内电子设备中各个进程进行读写操作时的等待时长;
从所述等待时长中,确定处于第一预设时长范围内的等待时长的第一数量;以及,
根据所述第一数量,获取与第一预设时长范围对应的待杀进程;
处理模块502,用于对所述待杀进程进行处理。
可选地,获取模块501,具体用于在所述第一数量大于等于所述第一预设时长范围对应的预设数量,和/或,变化量与历史数量之间的比值大于等于所述第一预设时长范围对应的预设阈值的情况下,获取与所述第一预设时长范围对应的待杀进程;所述历史数量为上一周期获取到的处于第一预设时长范围内的等待时长的数量,所述变化量为所述第一数量与所述历史数量之间的差值。
可选地,获取模块501,具体用于根据所述第一数量,获取所述第一预设时长范围对应的第一释放内存范围;以及,
根据所述第一释放内存范围和所述电子设备的当前可用内存,获取与所述第一预设时长范围对应的待杀进程。
可选地,获取模块501,具体用于根据所述第一释放内存范围和所述电子设备的当前可用内存,获取目标进程优先级;以及,
根据所述目标进程优先级,获取与所述第一预设时长范围对应的待杀进程。
可选地,获取模块501,具体用于在所述第一释放内存范围的数量为一个的情况下,若所述当前可用内存处于所述第一释放内存范围内,则获取所述第一释放内存范围对应的目标进程优先级;或者,
在所述第一释放内存范围的数量为至少两个的情况下,若所述第一释放内存范围中存在所述当前可用内存所属的目标释放内存范围,则获取所述目标释放内存范围对应的目标进程优先级。
可选地,获取模块501,具体用于确定所述终端设备中的目标进程为所述待杀进程;所述目标进程的进程优先级大于等于所述目标进程优先级;或者,
展示所述目标进程的进程标识,并响应于对目标进程标识的选取操作,确定所述目标进程标识指示的目标进程为所述待杀进程;所述进程标识包括所述目标进程标识。
可选地,获取模块501,还用于根据所述第一预设时长范围和/或所述第一预设时长范围对应的第一数量,获取第二数量;
根据所述第一数量,获取与所述第一预设时长范围对应的第三数量的待杀进程;
其中,若所述第二数量大于所述电子设备中进程的数量,则所述第三数量为所述电子设备中进程的数量;若所述第二数量小于等于所述电子设备中进程的数量,则所述第三数量与所述第二数量相同。
电子设备的具体内容可以参考上述进程处理方法的实施例所述的内容,此处不再赘述。
图6示出了本申请实施例提供的一种电子设备的结构框图。参考图6,电子设备包括:射频(radiofrequency,rf)电路610、存储器620、输入单元630、显示单元640、传感器650、音频电路660、无线保真(wirelessfidelity,wifi)模块670、处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对电子设备的各个构成部件进行具体的介绍:
rf电路610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器680处理;另外,将设计上行的数据发送给基站。通常,rf电路610包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路610还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元630可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元630可包括触控面板631以及其他输入设备632。触控面板631,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板631上或在触控面板631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板631。除了触控面板631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种菜单。显示单元640可包括显示面板641,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板641。进一步的,触控面板631可覆盖显示面板641,当触控面板631检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然在图6中,触控面板631与显示面板641是作为两个独立的部件来实现电子设备的输入和输入功能,但是在某些实施例中,可以将触控面板631与显示面板641集成而实现电子设备的输入和输出功能。
电子设备还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与电子设备之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经rf电路610以发送给比如另一电子设备,或者将音频数据输出至存储器620以便进一步处理。
wifi属于短距离无线传输技术,电子设备通过wifi模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。
处理器680是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器680可包括一个或多个处理单元;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
电子设备还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理系统与处理器680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该电子设备所包括的处理器680还具有以下功能:
获取当前周期内电子设备中各个进程进行读写操作时的等待时长;
从所述等待时长中,确定处于第一预设时长范围内的等待时长的第一数量;
根据所述第一数量,获取与所述第一预设时长范围对应的待杀进程;
对所述待杀进程进行处理。
可选地,该电子设备所包括的处理器680还具有以下功能:在所述第一数量大于等于所述第一预设时长范围对应的预设数量,和/或,变化量与历史数量之间的比值大于等于所述第一预设时长范围对应的预设阈值的情况下,获取与所述第一预设时长范围对应的待杀进程;所述历史数量为上一周期获取到的处于第一预设时长范围内的等待时长的数量,所述变化量为所述第一数量与所述历史数量之间的差值。
可选地,该电子设备所包括的处理器680还具有以下功能:根据所述第一数量,获取所述第一预设时长范围对应的第一释放内存范围;
根据所述第一释放内存范围和所述电子设备的当前可用内存,获取与所述第一预设时长范围对应的待杀进程。
可选地,该电子设备所包括的处理器680还具有以下功能:根据所述第一释放内存范围和所述电子设备的当前可用内存,获取目标进程优先级;
根据所述目标进程优先级,获取与所述第一预设时长范围对应的待杀进程。
可选地,该电子设备所包括的处理器680还具有以下功能:在所述第一释放内存范围的数量为一个的情况下,若所述当前可用内存处于所述第一释放内存范围内,则获取所述第一释放内存范围对应的目标进程优先级;
或者,
在所述第一释放内存范围的数量为至少两个的情况下,若所述第一释放内存范围中存在所述当前可用内存所属的目标释放内存范围,则获取所述目标释放内存范围对应的目标进程优先级。
可选地,该电子设备所包括的处理器680还具有以下功能:确定所述终端设备中的目标进程为所述待杀进程;所述目标进程的进程优先级大于等于所述目标进程优先级;或者,
展示所述目标进程的进程标识,并响应于对目标进程标识的选取操作,确定所述目标进程标识指示的目标进程为所述待杀进程;所述进程标识包括所述目标进程标识。
可选地,该电子设备所包括的处理器680还具有以下功能:根据所述第一预设时长范围和/或所述第一预设时长范围对应的第一数量,获取第二数量;
所述根据所述第一数量,获取与第一预设时长范围对应的待杀进程,包括:
根据所述第一数量,获取与第一预设时长范围对应的第三数量的待杀进程;
其中,若所述第二数量大于所述电子设备中进程的数量,则所述第三数量为所述电子设备中进程的数量;若所述第二数量小于等于所述电子设备中进程的数量,则所述第三数量与所述第二数量相同。
本申请实施例还提供一种电子设备,该电子设备可以包括处理器,存储器以及存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时可以实现上述方法实施例中电子设备执行的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例提供一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器执行时实现上述方法实施例中电子设备执行的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,该计算机可读存储介质可以为只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台电子设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。