用于控制电子装置中的存储器资源的方法、用于控制存储器资源的装置、电子装置和计算机程序与流程

文档序号:30390724发布日期:2022-06-11 15:41阅读:206来源:国知局
用于控制电子装置中的存储器资源的方法、用于控制存储器资源的装置、电子装置和计算机程序与流程

1.本公开涉及一种用于控制例如机顶盒或移动电话等电子装置的存储器资源的方法。


背景技术:

2.当存储器资源已耗尽时,具有有限存储器资源的电子装置无法以可靠的方式运行。
3.在安卓情境或在电子装置上运行的任何其它多应用程序系统中,许多应用程序或服务同时运行,每个应用程序或服务都处于运行状态。一个应用程序具有焦点,而其它应用程序在后台运行,做后台工作或等待用户请求时恢复焦点。
4.以众所周知的方式,应用程序、服务和/或程序各自由应用程序管理器(am)影响分数或优先级,am维护分数并使它们随时间动态地演变,这例如取决于应用程序何时启动,应用程序何时获得或失去焦点以及持续多长时间等。按照本文档中的惯例,分数越高,优先级就越低。
5.在这些系统中,称为“低内存管理器(lmk)”或“低内存监测器(low memory monitor)”的机构检查内存占用,并且决定杀死一些分数较高的应用程序,以防止可能导致内存分配失败的任何内存不足。
6.通常,当达到已用内存的预定阈值时,做出杀死分数较高的应用程序的决策。
7.交换空间有时可以用于明显地扩展电子装置的内存。交换空间是用于虚拟存储器的硬盘驱动器(hdd)的部分。虚拟存储器使用hdd上的空间来模拟额外的主存储器。此额外空间用于保存当前在使用中或经常使用的操作系统、程序和数据的部分。在物理上,主存储器由随机存取存储器(ram)芯片组成,所述ram芯片组合成模块,所述模块又插入电子装置上的主板(即,主电路板)上的槽中。访问ram中的不同地址(即,位置)所需的时间非常短且几乎稳定,而访问hdd和其它存储装置上的位置所需的时间较长且变化。
8.为了释放存储器中的空间,具有虚拟存储器能力的操作系统将不立即需要的数据从存储器传输到hdd;当再次需要所述数据时,将所述数据复制回存储器中。也就是说,当空闲内存不足时,也就是说如果同时打开多个程序,或者使用一个非常大的程序,启用虚拟存储器的计算机将根据需要将数据交换到hdd并返回存储器,从而实际上增加系统总内存。
9.交换空间通常是在安装操作系统期间创建的专用分区(即hdd的逻辑独立区段)。此分区也称为交换分区。然而,交换空间也可以是电子装置的ram的分区,例如linux操作系统中称为zram的交换空间。ram交换空间与交换数据的压缩/解压缩系统地结合使用。例如,使用lz4压缩方法观察到的压缩率通常约为3。就此而言,重要的是理解ram交换空间大小可以设置为例如1吉字节,但实际上这个值是压缩之前可以输入这个交换空间中的数据的最大大小。因此,交换ram占用取决于其中输入的内容。例如,输入此ram交换空间中的300兆字节占用约100兆字节。
10.ram交换空间越大,软件内存就越高。然而,当数据进入交换、从交换中读取或从交换中删除时,通过交换扩展内存大小就cpu而言具有成本。还可以观察到,当交换内存空间接近满时,cpu使用量急剧增加,导致电子装置运行缓慢且卡顿,这会影响用户体验质量。
11.当使用交换空间时,在达到预定内存压力时,也可以做出杀死分数较高的应用程序的决策。
12.内存压力被定义为已用内存与软件使用的内存之间的比率,以百分比(%)表示。软件使用的内存是由软件分配的ram的大小,并且已用内存是在通过压缩交换到ram交换空间中之后实际上从系统获取的ram空间大小。换句话说,如果不激活交换,则内存压力为100%,然而如果激活交换,则当前内存压力低于例如约80%。两个不同阈值l1和l2(其中l1《l2)可以用于配置lmk做出决策的方式,当内存压力低于l1、在l1与l2之间或高于l2时配置不同的行为。
13.然而,这些解决方案具有一些缺点。首先,在达到一个或多个内存阈值时杀死分数较高的应用程序是非常静态的且不适合交换。事实上,当ram交换空间快满时,电子装置的性能很差,因为数据不断进出交换空间且需要大量的cpu资源。
14.其次,基于与内存压力相关的两个阈值来杀死分数较高的应用程序并不有效,因为这些阈值不容易调整。阈值设置对性能的影响取决于ram交换空间大小,因此很难成为在所有情况下都能正常工作的通用解决方案。
15.本发明的设计考虑了上述内容。


技术实现要素:

16.根据本发明的第一方面,提供一种用于控制电子装置的存储器资源的计算机实施的方法,所述方法包括:
[0017]-设置至少一个内存交换大小限制,所述内存交换大小限制低于称为交换内存空间的内存交换大小,所述内存交换大小限定由所述电子装置用于交换的所述存储器资源的一部分的最大大小;以及
[0018]-获得在所述电子装置上运行的多个程序中的每个程序的分数,高分数对应于低优先级水平;
[0019]-获得监测信息,所述信息属于包括以下项的群组:
[0020]
ο表示在预定时间段期间程序的所监测活动的信息,
[0021]
ο表示习得的用户使用所述程序的习惯的信息,所述信息包括所述程序在预定时间段内获得焦点的次数;
[0022]-从所述监测信息导出动态分数增量,所述动态分数增量为正或负,在程序获得的每个焦点处将分数递减值应用于所述动态分数增量;
[0023]-通过将所述动态分数增量添加到所获得分数来调整所述至少一个程序的所获得分数;以及
[0024]-当达到所述内存交换大小限制并且与所述程序相关联的所述调整后分数等于或高于与所述达到的内存交换大小限制相关联的优先级阈值时,终止执行所述多个程序中的程序。
[0025]
通过上述方法,不会超出或仅在短时间内超出交换大小限制。因此,此种解决方案
避免具有使装置变慢的几乎满的交换内存空间。
[0026]
因此,本发明的方法向电子装置的最终用户提供更好的体验质量,因为电子装置的存储器资源以某种方式管理,使得避免交换空间几乎满或已满并且cpu高度忙于从交换内存输入和输出数据的情况。因此,在不减慢电子装置速度的情况下,可以确保交换的可靠运行。
[0027]
有利地,分数由应用管理器设置并且通知给实施所述方法的装置。
[0028]
通过上述方法,可以根据实际使用情况的监测或事先了解用户的习惯,以动态的方式给出偏好。
[0029]
例如,可能更喜欢经常使用的应用程序。通过重点测量时间,与长时间使用的应用程序相比,例如天气预报的短时间使用的应用程序可能更受喜欢。相反地,启动时间长的应用程序可能不受喜欢。
[0030]
基于任何id(账户id、人脸识别、输入代码、向用户提出的问题)或在一段时间内(一天或一周)或从启动开始,此种学习通常可以针对装置进行,而不管用户如何,或者相反地针对使用此装置的每个用户进行。
[0031]
同样,动态分数增量可以基于在监测的预定时段期间运行程序获得焦点的次数来计算。例如,通过将此次数乘以预定焦点分数增量来获得分数增量。
[0032]
在另一方面,所述方法进一步包括:
[0033]-获得包括在预定时间段期间使用的内存交换空间量的所监测信息,所述电子装置根据称为swappiness的配置值使用交换,所述swappiness定义所述电子装置将内容复制到交换内存空间的数量和频率,swappiness越高,使用的交换就越多;以及
[0034]-使用所述所监测信息调整所述swappiness,当所述所监测信息低于预定阈值时减小所述swappiness,并且当所述所监测信息超过所述预定阈值时增加所述swappiness。
[0035]
电子装置使用交换的方式由swappiness的配置值设置,所述swappiness定义处理器将复制ram内容以进行交换的数量(和频率)。默认值可以设置成“60”,但是swappiness可以取“0”到“100”之间的任何值。swappiness参数的值越高,处理器交换的积极性就越大。
[0036]
可以在相当长的一段时间内(例如一天)测量使用的内存交换空间量。时间段可以是固定的或动态改变的,例如随着交换内存空间的平均填充水平变得越来越高,时间段变得更短。
[0037]
当电子装置实际上不需要在交换中存储数据时,例如当未达到交换内存空间的50%的阈值时,可以减小swappiness。优点是可以提高装置的性能,因为cpu很少由交换操作使用并且可用于其它操作。相反,当超过所述阈值50%时,则可以增加swappiness。
[0038]
在另一方面中,所述方法进一步包括当未达到所述内存交换大小限制sl时:
[0039]-获得已用交换内存的水平;
[0040]-获得低于所述内存交换大小限制的至少一个中间内存交换大小限制,以及相关联的中间优先级阈值;以及
[0041]-当所述内存交换使用大小已达到所述相关联中间内存交换大小限制时,终止分数等于或高于所述相关联中间优先级阈值的至少一个程序。
[0042]
当仍未达到但接近交换内存限制时,这种方法决定杀死分数高于最小值的程序。一个优点是预测何时会达到交换内存限制并尽量避免它。可以限定多于一个中间内存交换
大小限制。例如,可以将内存交换大小值的范围划分为多个规则或不规则的步骤或间隔,并且可以定义与间隔一样多的中间阈值,每个阈值与对应的最小分数限制相关联,在接近交换内存大小限制时低于前一个阈值。
[0043]
通过本发明,随着接近内存大小限制,进程逐渐被杀死,优先级水平较低的程序,即分数较高的程序首先被杀死。
[0044]
在又一方面中,所述方法进一步包括对于所述多个程序:
[0045]-获得配置信息,所述信息属于包括以下项的群组:
[0046]
ο工厂嵌入式程序列表,包括每个程序的相关联分数增量;
[0047]
ο喜欢和/或不喜欢的程序列表,包括每个程序的相关联分数增量;
[0048]
ο焦点处的程序的分数递减值;
[0049]-将所述配置信息存储在存储器中,
[0050]-针对所述多个程序中的至少一个程序导出静态分数增量;
[0051]-通过将所述静态分数增量添加到所获得分数来调整所获得分数,
[0052]-所述终止包括基于调整后的分数决定终止所述多个程序中的程序。
[0053]
优点是存储器控制器内的某些程序优于其它程序。
[0054]
在此实施例中,通过配置以静态方式给出偏好。例如,列表由制造商或客户端预定。
[0055]
分数增量对于喜欢的程序可能为负且对于不喜欢的程序可能为正。优点是通过简单的加法或减法从最初从应用程序管理器获得的分数中容易地导出当前分数。增量分数可以为正或负。例如,属于喜欢的程序列表的程序可以受益于预定的负分数增量。相反,可以通过正的分数预定增量减小不喜欢的程序的所获得分数。
[0056]
在又一方面中,所述调整包括通过将所述静态分数增量和所述动态分数增量添加到所述所获得分数来确定当前分数,并且所述终止使用所述确定的当前分数。
[0057]
使用基于监测/学习的动态调整分数和基于配置的静态调整的优点在于,通过考虑所有类型的约束来做出终止决策。
[0058]
在又一方面中,所述方法包括:
[0059]-建立和存储自预定时间段以来在电子装置上运行或已经运行的程序的列表,所述列表对于每个程序至少包括所述程序的标识符、所述所获得分数、所述静态分数增量、所述动态分数增量和所述当前分数;以及
[0060]-所述列表由所述终止使用。
[0061]
优点是便于选择要杀死的程序,因为所有相关信息都在列表中可用。
[0062]
预定时间段可能比当前时间(启动时间)更长或更短,在这种情况下,列表必须定期和/或在进入待机状态时存储在nvram中。唯一标识符通常是程序名称,因为它在重启之后必须是唯一且稳定的。
[0063]
在又一方面中,在接收到改变通知时更新存储在所述程序列表中的所获得分数,所述通知包括程序的标识符和改变的分数;并且基于改变的分数更新当前分数。
[0064]
以众所周知的方式,通过应用程序/程序管理器定义并动态地管理分数值。在特定程序的每次分数改变时,应用程序管理器都会通知低内存管理器lmk,lmk相应地更新列表。
[0065]
在又一方面中,所述配置信息包括无法被杀死的程序的列表(称为白名单),所述
列表包括每个列出的程序的相关联存储器资源量,并且只要所述程序对存储器资源的使用不超过所述预定的最大已用存储器资源量,所述终止就无法决定终止所述程序。
[0066]
所述信息是可以由电子装置的客户端定义的配置信息。优点是保护一些程序不被杀死,无论它们的分数如何。例如,这些程序已经由用户或电子装置的制造商预先识别。
[0067]
预定的已用存储器资源量定义正在运行的程序不应超过的存储器层级。当将白名单信息设置成0xffffff的最大值时,无法选择终止所述程序。相反,当将白名单信息设置成零时,所述程序不被视为列入白名单。
[0068]
优选地,这应该仅用于几个程序。
[0069]
此资源量可以存储在与由lmk维持的列表lmk_apps_list中的程序相关联的白名单字段中。
[0070]
在另一方面中,所述监测信息包括针对所述多个程序中的程序的信息,所述信息包括由所述程序使用的交换资源量。
[0071]
检查每进程的交换占用允许偏爱低交换消耗装置或相反地高交换消耗装置。事实上,杀死低交换程序不会释放大量交换内存。相反,杀死高交换程序可能会释放更多交换空间,但代价是重新启动程序时启动时间更长。
[0072]
本发明的另一目标涉及一种用于控制电子装置的存储器资源的装置,所述装置包括处理器,所述处理器被配置成:
[0073]-设置至少一个内存交换大小限制,所述内存交换限制低于称为交换内存空间的内存交换大小,所述内存交换大小限定由所述电子装置用于交换的所述存储器资源的一部分的最大大小;以及
[0074]-获得在所述电子装置上运行的多个程序中的每个程序的分数,高分数对应于低优先级水平;
[0075]-获得监测信息,所述信息属于包括以下项的群组:
[0076]
ο表示在预定时间段期间程序的所监测活动的信息;
[0077]
ο表示习得的用户使用所述程序的习惯的信息,所述信息包括所述程序在预定时间段内获得焦点的次数;
[0078]-从所述监测信息导出动态分数增量,所述动态分数增量为正或负,在程序获得的每个焦点处将分数递减值应用于所述动态分数增量;
[0079]-通过将所述动态分数增量添加到所获得分数来调整所述至少一个程序的所获得分数;以及
[0080]-当达到所述内存交换大小限制并且与所述至少一个程序相关联的所述调整后分数等于或高于与所述内存交换大小限制相关联的优先级阈值时,终止执行所述多个程序中的至少一个程序。
[0081]
在另一方面中,所述交换内存空间属于ram存储器资源,交换的数据在存储于所述交换内存空间中之前进行压缩。
[0082]
优点是内存扩展更重要。
[0083]
此装置可以实施先前呈现的方法的任何方面。
[0084]
本发明进一步涉及一种电子装置,所述电子装置包括用于控制根据本发明的所述电子装置的存储器资源的装置。
[0085]
电子装置是例如机顶盒、平板计算机、智能手机或pc(用于“个人计算机”)。在电子装置上运行的程序例如是管理电子装置的总线的软件、管理voip(ip承载语音)服务的一个或多个软件、网页浏览器、游戏、tv遥控器程序等。
[0086]
本发明的实施例中的一个或多个还提供一种计算机程序,所述计算机程序包括在由一个或多个处理器执行时使所述一个或多个处理器执行以上方法的指令。本发明的实施例中的一个或多个还提供一种计算机可读存储介质,所述计算机可读存储介质包括当由计算机执行时使所述计算机执行以上方法的指令。本发明的实施例中的一个或多个还提供一种计算机可读介质,所述计算机可读介质包含根据以上方法产生的数据内容。
附图说明
[0087]
可以参考以下描述和附图更好地理解本公开,这些描述和附图以实例的方式给出并且不限制保护范围,并且在附图中:
[0088]-图1描绘根据本发明的实施例的执行方法的电子装置;
[0089]-图2描绘根据本发明的实施例的用于控制电子装置的存储器资源的装置的示例性结构;以及
[0090]-图3描绘根据本发明的另一实施例的用于控制电子装置的存储器资源的方法的步骤。
[0091]
附图中的组件不一定是按比例的,而是将重点放在说明本发明的原理上。
具体实施方式
[0092]
应理解,图1中所示的元件可以以各种形式的硬件、软件或其组合来实施。优选地,这些元件在一个或多个适当编程的通用装置上以硬件和软件的组合实施,所述通用装置可以包含处理器、存储器和输入/输出接口。在本文中,短语“耦合”被定义为表示直接连接或通过一个或多个中间组件间接连接。此类中间组件可以包含基于硬件和软件的组件。
[0093]
本说明书说明本公开的原理。因此,应理解,本领域技术人员将能够设计各种布置,所述布置虽然没有在本文中明确地描述或显示,但体现本公开的原理并且包含在本公开的精神和范围内。
[0094]
本文中叙述的所有实例和条件语言旨在用于指导性目的以帮助读者理解本公开的原理和由发明人为本领域技术发展所贡献的概念,并且应解释为但不限于这种具体叙述的实例和条件。
[0095]
此外,本文中叙述本公开的原理、方面和实施例以及其具体实例的所有陈述旨在涵盖其结构等效物和功能等效物两者。另外,预期此类等效物包含当前已知的等效物以及将来开发的等效物两者,即,所开发的执行相同功能的任何元件,而不考虑结构。
[0096]
因此,例如,本领域的技术人员将了解,本文中呈现的框图表示体现本公开的原理的说明性电路系统的概念视图。类似地,应了解,任何流程图、作业图、状态迁移图、伪码等表示可以基本上表示在计算机可读介质中且由计算机或处理器执行的各种过程,无论是否明确地示出此计算机或处理器。
[0097]
可以通过使用专用硬件以及能够执行与适当软件相关联的软件的硬件来提供图中所示的各种元件的功能。当由处理器提供时,所述功能可以由单个专用处理器、由单个共
享处理器,或由多个个别处理器提供,其中的一些可以共享。此外,术语“处理器”或“控制器”的明确使用不应被解释为专门指代能够执行软件的硬件,并且可能隐式地包含但不限于数字信号处理器(“dsp”)硬件、用于存储软件的只读存储器(“rom”)、随机存取存储器(“ram”)和非易失性存储装置。
[0098]
也可以包含常规和/或自定义的其它硬件。类似地,图中所示的任何开关仅为概念性的。开关的功能可以通过程序逻辑的操作、通过专用逻辑、通过程序控制和专用逻辑的相互作用或甚至手动地实行,特定技术可由实施者选择,如根据上下文更具体地理解。
[0099]
在本公开的权利要求中,表达为用于执行规定的功能的构件的任何元件意图涵盖执行所述功能的任何方式,包含例如a)执行所述功能的电路元件的组合或b)呈任何形式的软件,因此包含固件、微码等,其与用于执行所述软件的适当电路系统组合以执行所述功能。由此类权利要求限定的本公开在于如下事实:由各种所述构件提供的功能以权利要求需要的方式组合并且放在一起。因此认为,可以提供这些功能的任何构件等同于本文所示的构件。
[0100]
在以下描述中,描述用于控制例如机顶盒或移动电话(例如,智能手机)的电子装置的存储器资源的实例方法,以及执行所述方法的装置200。出于解释的目的,阐述各种具体细节以提供对优选实施例的透彻理解。然而,本领域的技术人员将明白,可以在没有这些特定细节的情况下实践本公开。
[0101]
如在图1上表示的电子装置包括处理器101、存储单元102、输入装置103、显示装置104、例如ram的存储器资源105以及由总线107连接的接口单元106。当然,计算机设备100的组成元件可以由除了总线连接之外的连接来连接。
[0102]
处理器101控制电子装置100的操作。存储单元102存储能够管理要由处理器101执行的存储器资源105的至少一个程序,以及由处理器101执行的计算所使用的参数、由处理器101执行的计算的中间数据等。处理器101可以由任何已知且合适的硬件、或软件、或硬件和软件的组合形成。例如,处理器101可以由例如处理电路的专用硬件,或由例如执行存储于其存储器中的程序的cpu(中央处理单元)等可编程处理单元形成。
[0103]
存储单元102可以由能够以计算机可读方式存储程序、数据等的任何合适的存储装置或构件形成。存储单元102的实例包含非暂时性计算机可读存储介质,例如半导体存储器装置,以及加载到读取和写入单元中的磁性、光学或磁光记录介质。程序使处理器101执行用于根据本公开的任何实施例管理存储器资源105的过程,如下文参考图3所描述。在另一实施例中,电子装置100包括用于控制其存储器资源的装置lmk 200,其实施为通过总线107连接到电子装置100的其它部分的处理电路。例如,装置lmk 200具有由图2所说明的结构。
[0104]
输入装置103可以由键盘、例如鼠标的指向装置等构成,以供用户输入命令。输出装置104可以由显示装置形成,以显示例如图形用户界面(gui)、根据本公开的实施例生成的图像。例如,输入装置103和输出装置104可以通过触摸屏面板整体地形成。
[0105]
接口单元106提供设备100与外部设备之间的接口。接口单元106可以经由缆线或无线通信与外部设备通信。在实施例中,外部设备可以是usb硬盘驱动器。
[0106]
在电子装置100是机顶盒的情况下,所述电子装置可以例如包括用于无线/缆线/地面/卫星通信的一个或多个tx/rx电路108。
[0107]
此电子装置100具有有限的存储器资源,并且当存储器资源已耗尽时或当使用交换,交换内存空间已满或几乎满时无法以可靠的方式运行。
[0108]
关于图2,呈现根据本发明的实施例的用于控制电子装置100的存储器资源的装置lmk 200的示例性材料结构。装置200包含ram存储器203(例如,ram)、配备有例如处理器且由计算机程序控制的处理单元2022,所述处理单元表示用于设置至少一个内存交换限制的模块,所述内存交换限制低于称为交换内存空间的内存交换大小,所述内存交换大小限定由所述电子装置用于交换的所述存储器资源的一部分的最大大小;用于获得在所述电子装置上运行的多个程序中的每个程序的分数的模块;以及用于当达到空闲存储器资源的水平时,或当达到所述内存交换限制中的至少一个且与所述至少一个程序相关联的分数等于或高于至少一个优先级阈值(pt)时,终止执行所述多个程序中的至少一个程序的模块。在初始化时,在由处理单元202的处理器之前,例如计算机程序的代码指令被加载到ram 203中。ram 203包含数据,例如内存和/或交换阈值、分数阈值、配置信息i
conf
.和监测信息i
monit
.。在实施例中,配置和监测信息由lmk存储在列表lmk_apps_list中,此列表由lmk随时间维护。
[0109]
图2仅说明可以构造用于控制存储器资源的装置200以执行根据本发明的方法的步骤的几种可能方式中的一种,现在将在下文中结合图3详细描述本发明的实施例。
[0110]
在下文中,我们将互换地使用术语程序和应用程序。进程是在计算机或处理器中运行的程序的实例。当启动程序时会启动新进程。
[0111]
具有在电子装置100上运行的至少两种不同类别的程序:出厂嵌入程序和下载程序。其中,可以终止一些程序并且无法终止其它程序。例如,操作系统是无法终止的程序,而管理文件共享的程序是可以终止的程序。
[0112]
下面,我们更具体地考虑可以终止的正在运行的程序。
[0113]
在此实施例中,本发明的方法可以由低内存管理器lmk实施。
[0114]
在步骤31中,通过lmk获得配置信息i
conf

[0115]
1.配置信息
[0116]
配置信息包括多个预定静态特性或特征,它们存储在存储器中并且由lmk在电子装置启动时或在需要时读取。例如,配置信息存储在存储器或对象的特定结构中,包括一些属性或特性,如关于安卓操作系统所熟知。
[0117]
有利地,这些特征存储在称为nvram(对于“非易失性随机存取存储器”)的特殊种类的存储器中,即使电源关闭,所述存储器也会保留所存储的数据。这与动态ram(dram)和静态ram(sram)形成对比,这两者仅在施加电力时才保持数据。目前,最知名的nv-ram形式是闪存存储器。当然,nvram的内容可能会在启动时复制到ram中。
[0118]
这些配置特征是静态的,并且它们的值不会被lmk修改。
[0119]
然而,例如当已经下载新版本的软件时,它们可以在电子装置100的两次启动之间更新。
[0120]
这些配置特征包括至少两种类型的信息,下文描述其中的一些实例:
[0121]-与内存/交换阈值相关的信息,lmk将使用这些阈值来决定何时必须杀死在电子装置上运行的多个程序中的程序。定义最低水平的空闲内存fml和最大交换内存限制sl。内存交换空间ssize的大小预先已经以众所周知的方式配置并且例如设置为1吉字节。将交换
内存限制sl始终设置为低于交换空间大小。例如,将sl设置成600兆字节。相关特性是:
[0122]
·
至少一个最低水平的空闲内存fml:prop.lmk.:100;
[0123]
·
已用交换内存大小sl的至少一个限制:prop.lmk.swap_limit:620;
[0124]
·
至少一个默认优先级阈值pt:prop.lmk.min_score:1。
[0125]
优选地,优先级阈值与每个fml或sl相关联。有利地,如下文可以详述,可以定义若干对(fml、pt)和(sl、pt)。
[0126]
例如,对于(sl、pt),配置值可以是(620、0)、(580、100)、(550、200
°
、(500、300)和(400、800)。
[0127]
对于(fml、pt),可以将以下值设置为:(20、0)、(40、100)、(60、200)、(80、300)和(100、800)。
[0128]
优点是可以使用渐进式杀死策略。
[0129]
有利地,使用ram中的交换,例如zram。
[0130]
例如,将ram交换空间大小设置成1吉字节,并且将zram交换内存限制sl总是设置为低于交换空间大小。例如,sl等于620兆字节。sl
[0131]-与特权或非特权程序以及在电子装置上运行时应用于这些程序的特定优先级规则有关的信息:
[0132]
ο无法杀死的程序列表,称为白名单。此列表可以由制造商或由客户端定义。
[0133]
此列表可以作为静态特性存储在一个特性中,所述特性包含程序的名称,以及任选地程序不应超过的已用存储器资源量(以兆字节为单位)。如果程序使用超过此水平的内存,则它可能会作为未列入白名单的程序被杀死:
[0134]
·
prop.lmk.whitelist:appw1,100+appw2,120;
[0135]
ο受到优先对待的喜欢程序的列表(称为favoritelist),和/或受到不利对待的不喜欢程序的列表(称为unfavoritelist)。为此目的,喜欢的程序与负分数增量相关联以递减与所述程序相关联的分数,并且相反,不喜欢的程序与正分数增量相关联以递增其分数。此分数增量对于所有喜欢/不喜欢的程序可能通用,或者每程序进行配置。
[0136]
任选地,仅下载的程序可以配置为喜欢或不喜欢,而启动时嵌入的程序无法配置。
[0137]
喜欢和不喜欢的列表各自在具有其名称和分数调整的专用特性中定义:
[0138]
·
prop.lmk.favorite_apps:appsf1,-50+appsf2,-50+appsf3,-100
[0139]
·
prop.lmk.unfavorite_apps:appsu1,+50+appsu2,+50+appsu3,+100;
[0140]
或者,可以仅定义一个具有正或负分数增量的喜欢列表,将负分数增量分配给喜欢的程序,而将正分数增量分配给不喜欢的程序。
[0141]
ο工厂嵌入式程序的列表:
[0142]
οprop.lmk.embedded_apps:appe1、appe2、appe3
[0143]
程序按名称列出。
[0144]
ο为非工厂嵌入式程序配置的分数增量:
[0145]
·
prop.lmk.non_embedded_apps_score_increment
[0146]
ο应用于由程序获得每个焦点处以了解用户的喜欢的分数递减值:
[0147]
·
prop.lmk.focus_score_decrement:-10
[0148]
所有上述特性是静态的。它们在配置步骤31期间获得并且无法由lmk改变。
[0149]
2.动态程序列表和相关联属性lmk_apps_list
[0150]
在步骤32中,通过lmk设置称为lmk_apps_list的列表。在电子装置100第一次启动时,此列表为空。在存储器中,此列表可以具有包括项目的表格的结构,所述项目包括信息字段。项目对应于在电子装置上运行的程序,并且其相关联字段对应于此程序的属性。例如,项目可以用c语言实施。它可以在启动时存储在ram中达一定学习时间段,或存储在nvram中达更长的学习时间段,并且由lmk维护。
[0151]
每当电子装置启动程序时,lmk都会在列表lmk_apps_list中创建一个新项目。
[0152]
列表lmk_apps_list至少包括特定于每个程序的以下信息字段:
[0153]
·
程序名称(唯一id);
[0154]
·
当前进程id,其在程序被杀死并重新启动时发生变化。如果程序不在运行,则将其设置成0;
[0155]
·
分数am-sc。
[0156]
当前在电子装置100上运行的所有程序都由程序或应用标识符am-id标识。通常,标识符是pid(进程id),并且可以从pid获得作为唯一id的程序名称。如果启动、杀死和重新启动程序,则其pid改变,但其名称不改变。
[0157]
通常,从负责管理正在电子装置上运行的程序的程序或应用程序管理器am 110接收此标识符。例如,此应用程序管理器am被实施为通过总线107连接到电子装置100的其它部分的处理电路,或者作为替代方案,此应用程序管理器am被实施为加载在存储单元102中的程序并导致处理器101执行用于管理在电子装置100上运行的程序的过程。
[0158]
与正在运行的程序相关联的分数am-sc还可以在特定或共同通知结合其标识符am-id从应用程序管理器am接收。
[0159]
在下文中,高分数对应于低优先级水平。当然,可能已经选择相反的约定。
[0160]
例如,分数am-sc具有在-800到1000之间的范围内的值。将空值分配给焦点处的程序。系统程序通常具有较高优先级且因此被分配为负分数。
[0161]
有利地,对于每个程序,列表lmk_apps_list可以进一步包括以下静态属性或字段:
[0162]
·
白名单字段设置为在上述白名单中列出时与此程序相关联的存储器层级的值,或者如果在白名单中没有设置存储器层级的值,则值为0xffffff,或者针对白名单上未列出的程序,值为0。
[0163]
·
分数静态调整“lmk_score_static_delta”,其可以为正或负),如从先前定义的静态配置特性中计算:
[0164]
οprop.lmk.favorite_apps
[0165]
ο以及prop.lmk.embedded_apps
[0166]
·
以及prop.lmk.non_embedded_apps_score_increment。
[0167]
这些属性的值用存储在配置特性中的配置信息填充。
[0168]
对于在这些特性中的至少一个中标识的每个特权或非特权程序,因此可以从上述分数递增和递减中导出静态分数增量,这些分数递增和递减存储为与程序的标识符相关联的另一个静态特性:
[0169]
另外,列表lmk_apps_list进一步包括一些动态属性,所述动态属性的值可以根据
在预定时间段内收集的监测信息i
monit
来确定。此监测信息由lmk在步骤33中周期性地获得,并相应地触发列表的一些动态属性或字段的动态更新。
[0170]
有利地,所列程序的这些动态属性可以包括:
[0171]
·
分数动态调整“lmk__score_dynamic_delta”,其可以为正或负。所述分数动态调整可以从由lmm获得监测信息中确定,如将在下文中更详细地描述。
[0172]
·
当前分数值“lmk_score”,其表示用于决定应杀死哪些程序的分数。此当前分数的值可以通过以下方式计算:
[0173]
·
lmk_score=am-sc+lmk_score_static_delta+lmk_score_dynamic_delta.
[0174]
有利地,可以另外应用以下规则:
[0175]
ο如果(am-sc》0),则lmk_score=max(lmk_score,1)。这是一个校正,
[0176]
以确保当前程序将在当前处于焦点的应用程序之前被杀死(分数=0)。
[0177]
因此,在步骤34中,可以通过添加由配置定义的此静态分数增量的值和基于在一定时间段内获得的监测信息的此动态分数增量的值来修改程序的所接收分数am-sc。随后将分数的修改值存储在列表中的对应程序的字段“lmk_score”中。此所存储值作为程序的当前分数,直到接收到新的监测信息并触发字段“lmk_score”的值的新更新。
[0178]
3.应用程序管理器通知
[0179]
由于应用程序管理器am动态地管理所有正在运行的程序在启动、获得焦点、失去焦点、在某一延迟之后没有获得焦点时的分数am-sc,因此与正在运行的程序相关联的分数值am-sc可能会随着时间而改变。
[0180]
在程序的每次分数变化时,am向lmk通知变化。lmk可以在任何时间从am接收到此通知。所述通知可以至少包括与程序的标识符am-id相关联的新分数值am-sc。例如,当程序获得焦点时,am将通知发送到lmk,所述通知包括程序的标识符app-id和设置成0的分数am-sc。例如,这是安卓中众所周知的当前行为。
[0181]
应注意,存在可以触发lmk对列表lmk_apps_list的更新的其它种类的事件。例如,当lmk检测到程序的执行结束时,在从am接收到包括结束程序的标识符的结束通知后,它可以例如通过设置对应于“失效”而不是“运行”的值来更新列表中的程序的状态。或者,将程序的过程标识符设置成零。
[0182]
4.监测信息
[0183]
监测信息i
monit
是指从在预定时间段内观察正在运行的程序的行为所产生的数据或测量值。它可以从嵌入到电子装置100中或替代地lmk本身中的专用监测单元或电路获得。
[0184]
例如,监测信息包括程序在预定时间段内获得焦点的次数。这从具有与程序的标识符相关联的分数0的通知中获得,所述通知从amm接收到。可以将时间段设置为一天、一周或两周。所述时间段可以是可配置的。
[0185]
监测信息的此具体实例可以用于导出动态分数增量“lmk__score_dynamic_delta”的值,以用于在步骤34中调整正在运行的程序的当前分数lmk_score。
[0186]
可以通过将prop.lmk.focus_score_decrement乘以在预定时段内所监测的焦点数目来计算此动态分数增量。因此,如果程序在观察时间段内获得焦点2次,则将分数增量lmk_score_dynamic_delta设置为2x(-10)=-20。例如,可以将最小值设置成-100,以避免
程序的分数下降太突然。
[0187]
监测信息的另一实例表示:
[0188]
·
为节省电池使用的电量。优选地,使用大量电力来节省电池的程序因分数提高而处于不利地位;
[0189]
·
程序在监测时间段内启动的次数。例如,经常启动的程序可能因分数降低而受到喜欢;
[0190]
·
在做出杀死决策时或在最后一个监测时间段内,程序的存储在交换中的数据量。优选地,低交换消耗装置可能因分数提高而不受喜欢。以此方式,低交换程序可能首先被杀死,因为杀死高交换消耗装置会在下一次启动时产生影响;
[0191]
·
程序的启动持续时间。优选地,长启动程序的分数降低。
[0192]
·
关注程序的持续时间。与长时间使用的应用程序相比,短时间使用的应用程序(例如天气预报)更受喜欢。(以关注的时间测量);
[0193]-等。
[0194]
因此,此监测信息提供随时间推移对用户习惯的简单了解,并且可以针对以下项完成:
[0195]
·
对于电子装置,
[0196]
·
或对于使用电子装置的每个用户;
[0197]
·
对于某一时间段,例如一天或一周,或者从启动开始;
[0198]
·
基于任何id(谷歌账户、人脸识别、输入代码、可以向用户提出问题)。
[0199]
此监测信息i
monit
可以存储在lmk 200的存储器m或电子装置100的存储器中,例如作为监测列表的项目的属性,所述列表的项目对应于程序。
[0200]
如已经提及,监测列表和lmk_app_list两者可能处于ram中,这意味着它们将在每次启动时被抑制,因为ram被重置。这对应于启动策略(即学习仅从启动开始,因此在每次启动时重新启动)。
[0201]
在这种情况下,与程序获得焦点的次数有关的信息或与在监测时间段期间启动程序的次数有关的信息可以简单地存储为计数器,在每次启动时重置。
[0202]
应注意,即使使用启动策略,lmk_apps_list的一些静态属性可能会在下次启动时保持其值,因为它们已经一次性进行配置。例如,程序标识符就是这种情况。这些属性可以存储在例如闪存存储器的nvram中的专用结构中。
[0203]
对于称为时间段策略的另一类型的学习策略,这些列表可能处于另一种类的存储器中,例如即使电源关闭,仍保留所存储数据的nvram。为了更容易地访问数据,可以在升压时完成ram中的复制。
[0204]
通过此策略,与程序获得焦点的次数有关的信息或与在监测时间段期间启动程序的次数有关的信息可以有利地存储为日期的列表或序列。以此方式,可以在最新启动之前开始的滑动时间段计算lmk_apps_list的动态字段的值,例如动态分数增量lmk_score_dynamic_delta。
[0205]
通过此策略,可以每天、每周等选择用于学习的预定时间段。还可以调整学习时间段,以便推断lmk的更动态或相反地更稳定的行为。
[0206]
相反,其值取决于am通知的am分数字段被重置。
[0207]
通过本发明,监测信息因此用于以简单的方式了解用户处理多个程序的习惯,并且这种学习在分数增量方面转置。
[0208]
应注意,监测信息还可以用作机器学习装置的条目,所述机器学习装置将输出列表的一些特性的学习值,例如lmk_score_dynamic_delta等。机器学习装置可能已经使用特定的数据集训练,所述特定数据集包括预先收集的监测信息。优点是它提供更详细的学习。
[0209]
5.杀死一些正在运行的程序的决策
[0210]
一旦进行配置,lmk就准备好根据存储在列表lmk_app_list中的信息来控制正在运行的程序对存储器资源的使用。
[0211]
lmk定期地确定是否应杀死正在运行的程序以释放一些ram和zram交换内存。
[0212]
为了实现这一点,lmk执行以下步骤:
[0213]
·
在步骤36中,获取表示空闲内存ufm的当前水平的信息,即在电子装置100上运行的程序未使用的内存部分的大小,以及表示已用交换内存的当前水平“swap_used_size”的信息。
[0214]
例如,交换内存的当前水平是250兆字节,这意味着在压缩之前存储于zram交换中的数据是250兆字节。
[0215]
·
在步骤37中,获取关于以下项的配置信息:
[0216]
·
至少一个空闲内存水平或阈值fml;
[0217]
·
至少一个已用交换大小限制sl;
[0218]
·
与所述fml和sl相关联的分数阈值pt;以及
[0219]
·
对于每个正在运行的程序,其当前分数lmk_score。
[0220]
·
在步骤38中,通过比较空闲内存ufm的当前水平与空闲内存阈值fml以及已用交换内存us的当前水平与预定交换大小限制sl来决定终止至少一个正在运行的程序。
[0221]
作为第一选项,我们假设没有达到空闲内存fml的水平。因此,仅考虑已用交换内存的水平并将其用于做出杀死决策。
[0222]
如果已用交换内存的水平已达到交换大小限制sl中的至少一个,则需要杀死正在运行的程序。通过将当前分数中的每一个和与达到的交换大小限制sl相关联的分数阈值pt相比较,lmk使用当前分数lmk_score选择此程序。
[0223]
在第一实施例中,如果已设置仅一个最大交换大小限制sl以及一个相关联的优先级阈值pt,则可以将此单个优先级阈值设置为1或2。以此方式,当前分数大于pt=1或2的正在运行的程序被杀死,但焦点处的程序(lmk-score=0)将不会被杀死。
[0224]
优选地,在第二实施例中,一旦已用交换内存us的当前水平接近但尚未达到最大交换大小限制sl,就可以做出杀死程序的决策。在这种情况下,可以根据已用交换内存的当前水平与交换大小限制sl的接近度而改变所考虑的分数阈值。换句话说,设置多于一个交换大小限制,每个交换大小限制与对应(中间)优先级阈值ipt相关联。
[0225]
此第二实施例允许逐渐地杀死正在运行的程序。
[0226]
现在通过以下伪代码更详细地描述实施方案的实例:
[0227]
int步骤=(sl/16);
[0228]
如果(us》sl)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
ipt=0;
[0229]
否则如果(us》sl-步骤)
ꢀꢀꢀꢀꢀꢀ
ipt=100;
[0230]
否则如果(us》sl-2*步骤)
ꢀꢀꢀꢀ
ipt=200;
[0231]
否则如果(us》sl-3*步骤)
ꢀꢀꢀꢀ
ipt=300;
[0232]
否则如果(us》sl-4*步骤)
ꢀꢀꢀꢀ
ipt=600;
[0233]
否则如果(us》sl-5*步骤)
ꢀꢀꢀꢀ
ipt=900;
[0234]
否则如果(us》sl-6*步骤)
ꢀꢀꢀꢀ
ipt=906;
[0235]
否则分数=0xffffffff;//无需杀死程序
[0236]
因此,如所描述,针对多个中间交换大小限制中的每一个设置特定的中间优先级阈值ipt。以此方式,定义若干测试,即lmk使用它来决定列表lmk_apps_list中的哪个程序将被杀死。
[0237]
为此目的,应用以下规则:
[0238]
·
程序不得列入白名单或消耗的内存不得超过其白名单特性中指示的内存;
[0239]
·
作为最高lmk_score运行程序(在多于一个程序具有最高分数的情况下,选择其中的一个,例如最重的(消耗最多内存的程序);
[0240]
·
具有大于ipt的当前分数lmk_score。
[0241]
如果一个程序满足这些规则,则程序被杀死,这会导致从zram交换空间和ram中释放一些内存。
[0242]
然后通过标记已杀死的程序来更新列表以指示所述程序失效。例如,可以为每个程序存储额外属性,其中值表示正在运行或活动的程序的“运行”和表示已杀死或已完成的程序的“失效”,或者进程id被设置为零。不从列表中删除已杀死的程序的优点是,从监测获得的关于此程序的习得信息不会丢失,并且可以在下次启动时使用。
[0243]
作为第二选项,同时考虑空闲内存和已用交换内存的阈值。在这种情况下且如第1节中所描述,可能已经配置几对(fml、pt)和(sl、pt),并且它们与上文针对第一选项描述的相同类型的实施方案一起使用,将两个优先级阈值中的最小值应用于程序以做出杀死决策。
[0244]
作为第三选项,仅考虑空闲内存fml的水平,而不考虑交换大小限制来决定要杀死哪个程序。
[0245]
因此,本发明还涉及一种用于控制电子装置中的存储器资源的计算机实施的方法,所述方法包括:
[0246]-获得在所述电子装置上运行的多个程序中的每个程序的分数;
[0247]-当达到空闲存储器资源的水平并且与所述至少一个程序相关联的分数等于或高于与所述空闲存储器资源水平相关联的所述优先级阈值时,终止执行所述多个程序中的至少一个程序。
[0248]
有利地,如上文针对第一选项所描述,可以使用配置信息(静态分数增量)和/或监测信息(动态分数增量)在lmk内调整程序的分数。
[0249]
6.交换使用的监测
[0250]
任选地,定期监测存储在多个正在运行的程序的交换空间中的数据量。监测的时间段可以固定或动态地改变。例如,当存储在交换中的数据量较高时,所述监测的时间段缩短。
[0251]
lmk可以如在步骤33中定期获取表示已用交换水平的此监测信息,并且使用所述
监测信息来决定所配置swappiness水平sw是否仍然合适,或者相反,是否需要改变。
[0252]
当电子装置的用户实际上不需要交换时,即在对于存储在交换空间中的数据量设置为50%的交换内存大小的实例,所述时间段期间监测的已用交换空间水平保持较低并且低于预定限制ut时,lmk可能会决定减小swappiness。
[0253]
优点是可以提高装置的性能,因为cpu很少由交换操作使用并且可用于其它操作。
[0254]
本发明的主要益处是:
[0255]-交换用于更多内存并且永远不会几乎满,以避免电子装置运行缓慢;
[0256]-一些程序可以根据配置进行偏好设置;
[0257]-如果经常使用一些程序,则这些程序可能更受喜欢;
[0258]-在以下项之间提供平衡:
[0259]
ο提前杀死且应用程序内部的导航会很流畅,但是当我们返回到程序时,这些程序经常会重新启动;
[0260]
ο延迟杀死,并且当我们回到程序时,程序将很少重新启动,但程序内部的导航有时会变慢。
[0261]-易于通过swap_size_limit sl进行调整;
[0262]-易于理解,易于配置。
[0263]
尽管上文已参考具体实施例描述本发明,但是本发明不限于具体实施例,并且处于本发明的范围内的修改对于本领域技术人员将是显而易见的。
[0264]
在参考前述说明性实施例之后,本领域技术人员会想到许多另外的修改和变化,这些修改和变化仅作为实例给出并且并不意欲限制本发明的范围,所护范围仅通过所附权利要求书来确定。具体来说,在适当的情况下,来自不同实施例的不同特征可以互换。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1