CN108701026B - 用于在存储器约束下管理进程的方法和装置 - Google Patents
用于在存储器约束下管理进程的方法和装置 Download PDFInfo
- Publication number
- CN108701026B CN108701026B CN201780014741.7A CN201780014741A CN108701026B CN 108701026 B CN108701026 B CN 108701026B CN 201780014741 A CN201780014741 A CN 201780014741A CN 108701026 B CN108701026 B CN 108701026B
- Authority
- CN
- China
- Prior art keywords
- memory
- score
- adjustment value
- threshold
- under
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 397
- 230000007704 transition Effects 0.000 claims abstract description 63
- 238000001514 detection method Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 description 23
- 238000013459 approach Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 239000003112 inhibitor Substances 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/171—Portable consumer electronics, e.g. mobile phone
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Computer Security & Cryptography (AREA)
- Telephone Function (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本文公开了用于在存储器约束下管理进程的方法和装置。示例方法包括检测进程将从前台操作模式转变至后台操作模式。在未将所述进程转变至所述后台操作模式的情况下,计算预计存储器不足得分。在未将所述进程转变至所述后台操作模式的情况下,将所述预计存储器不足得分与得分阈值进行比较。在未将所述进程转变至所述后台操作模式的情况下,当所述预计存储器不足得分大于所述得分阈值时,终止所述进程。
Description
技术领域
本公开一般涉及存储器管理,并且更具体地涉及在存储器约束下管理进程的方法和装置。
背景技术
应用启动时间是用户感知计算设备(诸如例如,利用谷歌安卓TM平台的设备)的用户体验的关键部分。当应用花费很长时间来启动时,用户便可能对应用和/或计算设备感到失望。这种用户失望可能驱使用户不再继续使用应用和/或计算设备。
附图说明
图1时根据本公开的教导构造的用于在存储器约束下管理进程的示例处理器平台的框图。
图2是表示机器可读指令的流程图,该机器可读指令在被执行时使图1的示例处理器平台将进程从前台操作转变至后台操作。
图3是表示机器可读指令的流程图,该机器可读指令在被执行时使图1的示例处理器平台标识用于在低存储器状况期间终止的进程。
图4是表示机器可读指令的流程图,该机器可读指令在被执行时使图1的示例处理器平台为进程计算存储器不足(OOM)得分。
图5是例示出结合存储器限制的示例存储器不足得分阈值的数据表。
图6是标识结合不同进程状态的存储器不足调整值的数据表。
图7是表示机器可读指令的流程图,该机器可读指令在被执行时使图1的示例处理器平台确定是否允许进程从前台操作转变至后台操作。
图8是表示机器可读指令的流程图,该机器可读指令在被执行时使图1的示例处理器平台为进程计算预计OOM得分。
附图不按比例绘制。在可能的情况下,在整个附图和所附书面描述中将使用相同的附图标记来指代相同或相似的部件。
具体实施方式
应用启动时间是用户感知计算设备(诸如例如,利用谷歌安卓TM平台的设备)的用户体验的关键部分。当存储器资源对应用可用时,应用趋向于较快地启动。在本文所公开的示例中,应用(有时被称为“app”)利用一个或多个进程来提供应用功能。为了确保存储器资源可用,当可用存储器低时,谷歌安卓TM平台利用低存储器抑制器来根据进程的有序优先级来终止那些进程。虽然本文所公开的示例涉及谷歌安卓TM平台,但可附加地或替代地使用任何其他计算平台,诸如例如微软(MICROSOFT)Windows操作系统、苹果(APPLE)Macintosh操作系统、Linux操作系统等。
可认为进程在给定时间以多个不同状态中的一个状态执行。例如,在谷歌安卓TM平台中,进程可作为前台应用、作为可见应用、作为辅助服务器、作为隐藏应用、作为内容提供者、或者作为空应用来执行。作为前台应用执行的进程是当前在计算设备的显示器(或外部显示器)上显示的进程。作为可见应用执行的进程是正被活跃执行且在计算设备的显示器(或外部显示器)上显示,但不与所关注的应用窗口相关联的进程。作为辅助服务器执行的进程是停留在准备执行任务,但并未活跃地执行此任务的进程。示例副服务器进程可包括例如时钟应用、后台同步应用(例如,电子邮件客户端)、音乐播放器应用等。作为隐藏应用的进程是当前正执行但不可见的进程。作为内容提供者的进程是向另一进程(例如,前台应用)供给信息的进程。作为空app执行的进程是已被关闭,但被保留在存储器中以使得重启该应用不需要向存储器重新加载信息的应用。
如本文所使用的,作为前台应用执行的进程被称为在前台执行。同样,如本文所使用的,作为前台应用执行(例如,作为可见应用、作为辅助服务器、作为隐藏应用、作为内容提供者、或者作为空应用来执行)的进程被称为在后台执行。
当存储器低时,进程控制器终止进程。在本文所公开的示例中,进程控制器可周期性地和/或不定期地执行存储器检查以确定存储器是否将被回收。在本文所公开的示例中,进程控制器根据优先级次序来终止进程。在本文所公开的示例中,基于进程当前执行的状态来给予进程不同等级的优先级。例如,为了回收存储器,将典型地在终止前台应用之前终止作为后台应用执行的进程。为了确定首先终止哪个进程,计算存储器不足(OOM)得分。OOM得分基于例如由进程利用的存储器的量、进程的状态、以及基于进程状态的调整值。在本文所公开的示例中,后台中使用大量存储器的进程接收比前台中使用相同量的存储器的进程高的得分。在本文所公开的示例中,较高得分指示该进程应该被终止以释放存储器的较高可能性。系统相关进程典型地将接收非常低的得分,而用户发起的进程典型地将接收较高得分。因此,典型地将在系统进程之前终止用户发起的进程来释放存储器,从而确保系统的稳定性(例如,防止崩溃)。
在本文所公开的示例中,可将进程从前台状态转变至后台状态。此类转变可在例如用户按压计算设备的按钮(例如,主页按钮、开始按钮等)时发生。当以前台状态执行时,进程可接收第一OOM得分,而一旦转变至后台状态,进程可接收比第一OOM得分高的第二OOM得分。此类较高得分指示进程在移动至后台时具有与其在前台执行的情况不同的被终止的可能性(例如,更大)。然而,现有办法在计算第二得分之前等待进程停止并移动至后台。在一些情形中,进程可能被转变至后台而没想到会在不久后被终止。因此,当进程被转变至后台状态而不确定此类转变是否将导致进程被终止时,附加资源(例如,处理器周期、存储器地址)被利用。
在本文所公开的示例中,在检测到进程将被转变至后台之际,进程控制器确定此类转变是否将可能导致进程被终止。为了实现此类确定,基于进程利用的存储器的量、以及对应于在后台执行的进程的默认调整值来计算预计OOM得分。在本文所公开的示例中,默认调整值为六,在负十七到正十五的范围内。附加地或替代地,可执行对特定于要被转变的进程的调整值的查找。预计OOM得分表示一旦进程被转变至后台进程的预期OOM得分,并且因此,可在将进程转变至后台时使用该预计得分以确定进程是应该被允许转变还是应该被终止。
图1是能够执行以下结合图2、3、5、7和/或8描述的指令以在存储器约束下管理进程的示例处理器平台100的框图。处理器平台100可以是例如个人计算机、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM的平板)、个人数字助理(PDA)、因特网设备、DVD播放器、CD播放器、数字视频记录仪、蓝光播放器、游戏控制台、个人视频记录仪、机顶盒、或任何其他类型的计算设备。
所例示示例的处理器平台100包括处理器112。所例示示例中的处理器112是硬件。例如,处理器112可由来自任何所期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器实现。在图1的所例示示例中,处理器112包括进程控制器160、阈值比较器170、进程状态转变检测器175、优先级调整器165、以及存储器不足得分计算器180。在本文所公开的示例中,示例进程控制器160、示例阈值比较器170、示例进程状态转变检测器175、示例存储器不足得分计算器180以及示例优先级调整器165被实现为处理器112的组件。然而,在一些示例中,示例进程控制器160、示例阈值比较器170、示例进程状态转变检测器175、示例存储器不足得分计算器180、和/或示例优先级调整器165由与处理器112分离的(诸)电路系统实现。
所例示示例的处理器112包括本地存储器113(例如,高速缓存)。所例示示例中的处理器112经由总线118与包括易失性存储器114和非易失性存储器116的主存储器通信。由处理器112执行的进程将数据存储在易失性存储器114和/或非易失性存储器116中。由进程控制器160控制处理器112执行的(诸)进程对易失性存储器114和/或非易失性存储器116的利用。易失性存储器114可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其他类型的随机存取存储器设备实现。非易失性储存器116可由闪存和/或其他任何所期望类型的存储器设备实现。存储器控制器控制对主存储器114、116的访问。
图1的所例示示例的示例进程控制器160控制处理器112的进程执行。具体而言,当例如检测到低存储器状况时,示例进程控制器160终止进程。在本文所公开的示例中,除检测低存储器状况之外,示例进程控制器160利用由阈值比较器170执行的阈值比较来对照基于可用存储器的量的OOM阈值比较进程的OOM得分和/或预计OOM得分。
图1的所例示示例的示例阈值比较器170将当前可用存储器的量与一个或多个存储器阈值进行比较以确定当前可用存储器的量是否小于或等于一个或多个存储器阈值(例如,是否检测到低存储器状况)。下文结合图5来讨论示例存储器阈值。虽然在本文所公开的示例中,相对于可用存储器的量来比较存储器阈值,但可附加地或替代地使用用于执行存储器比较的任何其他办法,诸如例如可使用在已使用存储器的量大于或等于阈值时标识低存储器状况的比较。在本文所公开的示例中,阈值比较器170附加地将由OOM得分计算器180计算的OOM得分同与未被超过的可用存储器阈值相对应的得分阈值进行比较。
图1的所例示示例的示例进程状态转变检测器175检测进程何时将从前台转变至后台。在本文所公开的示例中,示例进程状态转变检测器175监视图1的所例示示例的输入设备122以检测例如用户何时按下主页按钮。附加地或替代地,可附加地或替代地使用进程从前台转变至后台的任何其他输入和/或指示来检测进程何时从前台转变至后台。
图1的所例示示例的示例存储器不足(OOM)得分计算器180为进程确定OOM得分和/或预计OOM得分。在本文所公开的示例中,OOM得分计算器180基于进程利用的易失性存储器114的百分比来计算OOM得分和预计OOM得分。在本文所公开的示例中,OOM得分计算器180标识缩放至范围在零(对应于易失性存储器114的百分之零被进程利用)至十六(对应于易失性存储器114的百分之百被进程利用)的百分比。然而,可附加地或替代地使用任何其他范围的值。例如,可使用从零到一千的范围。OOM得分计算器180随后将优先级调整器165提供的调整值添加至缩放百分比。
图1的所例示示例的示例优先级调整器165确定要在计算OOM得分和/或预计OOM得分时使用的优先级调整。为了为OOM得分的计算提供调整值,示例优先级调整器165基于进程的当前操作状态(例如,前台应用、可见应用、辅助服务器、隐藏应用、内容提供者、空应用等)来执行对进程的优先级调整值的查找。在本文所公开的示例中,通过读取存储在/proc/<pid>/oom_adj处的值来执行查找,其中<pid>是进程的标识符。然而,可附加地或替代地使用任何其他办法。
为了提供用于计算预计OOM得分的调整值,优先级调整器170为后台应用确定默认调整。即,当进程将要转变至后台时,不使用当前进程状态来确定调整值。例如,如果使用当前进程状态,则进程将被标识为在前台操作(例如,其还未转变至后台,使得/proc/<pid>/oom_adj处的值将反映对应于进程的前台操作的调整),并且将很可能接收低调整。在本文所公开的示例中,默认调整是六。然而,可附加地或替代地使用任何其他调整值。如上所述,调整值范围在从-17至+15。然而,可附加地或替代地使用任何其他范围。
在本文所公开的示例中,使用对后台应用的默认调整,因为,例如进程可被转变至多个不同的后台操作状态(例如,可见应用、辅助服务器、隐藏应用、内容提供者、空应用等)中的一个。那些不同的后台操作状态中的每一个可具有不同调整值。在一些示例中,确定可能的预计操作状态,且执行查找来确定对应于该预计操作状态的调整值。
返回OOM得分计算器180,在将调整得分计算在内时,利用易失性存储器114的四分之一(例如,接收缩放百分比四)的第一相对重要进程(例如,具有调整负五的进程)将导致OOM得分为负一。反之,利用非常少存储器(例如,接收缩放百分比零)的不如第一进程重要的第二进程(例如,具有调整为正五的进程)将导致为五的OOM得分。例如,如果存在低存储器状况使得具有七或更高得分的进程要被终止,则第一进程和第二进程将都不被终止。然而,利用本文所公开的技术,如果第一进程要被转变至后台,将使用默认调整值(例如,值为六),从而导致预计OOM得分为十(例如,缩放百分比四加上默认调整值六)。假设现有的低存储器状况使得具有得分为七或更大的进程要被终止,则第一进程将在转变至后台之前被进程控制器160终止。
相比之下,如果在第一进程从前台转变至后台之际不利用本文所公开的技术,则将不会在转变之前终止第一进程。替代地,将允许第一进程转变至后台并随后在稍后的时间终止第一进程。利用本文所公开的技术,在转变之前终止第一进程确保进程不被转变至后台而没想到会在此后不久终止。此类办法增强了计算平台100的操作,因为易失性存储器在低存储器情形中被更快地释放。
在图1的所例示示例中,所例示示例的处理器平台100还包括接口电路120。接口电路120可由任何类型的接口标准实现,诸如以太网接口、通用串行总线(USB)、蜂窝接口、蓝牙接口、和/或PCI快速接口。
在所示示例中,一个或多个输入设备122被连接至接口电路120。(诸)输入设备122允许用户将数据和命令输入到处理器112。(诸)输入设备可例如由音频传感器、麦克风、相机(静止的或视频)、键盘、按钮、鼠标、触屏、轨迹板、轨迹球、等点鼠标和/或语音识别系统实现。
一个或多个输出设备124也被连接至所例示示例中的接口电路120。输出设备124可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器、阴极射线管显示器(CRT)、触屏、触觉输出设备)、打印机和/或扬声器实现。因此,所例示的示例中的接口电路120通常包括图形驱动器卡、图形驱动器芯片或图形驱动器处理器。
所例示示例中的接口电路120还包括诸如发射机、接收机、收发机、调制解调器和/或网络接口卡之类的通信设备,以促进经由网络126(例如,以太网连接、数字订户线路(DSL)、电话线、同轴电缆、蜂窝电话系统等)与外部机器(例如,任何种类的计算设备)交换数据。
所示示例的处理器平台100还包括一个或多个用于存储软件和/或数据的大容量存储设备128。此类大容量存储设备128的示例包括软盘驱动器、硬盘驱动器、紧凑盘驱动器、蓝光盘驱动器、RAID系统和数字多功能盘(DVD)驱动器。
以下结合图2、3、5、7和/或8描述的经编码指令132可被存储在大容量存储设备128中、易失性存储器114中、非易失性存储器116中和/或诸如CD或DVD之类的可移除有形计算机可读存储介质上。
尽管图1例示出实现示例处理器平台100的示例方式,但是图1中示出的元件、过程和/或设备中的一个或多个能以任何其他方式被组合、拆分、重新布置、省略、消除和/或实现。此外,图1的示例进程控制器160、示例阈值比较器170、示例进程状态转变检测器175、示例存储器不足得分计算器180、和/或示例优先级调整器165中的任一者可由硬件、软件、固件和/或硬件、软件和/或固件的任何组合实现。因此,例如图1的示例进程控制器160、示例阈值比较器170、示例进程状态转变检测器175、示例存储器不足得分计算器180、和/或示例优先级调整器165的任一者可由一个或多个模拟或数字电路、逻辑电路、可编程处理器、专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)实现。当阅读覆盖纯软件和/或固件实现的本专利的装置或系统权利要求中的任一者时,图1的示例进程控制器160、示例阈值比较器170、示例进程状态转变检测器175、示例存储器不足得分计算器180、和/或示例优先级调整器165的至少一个由此被明确地定义为包括存储软件和/或固件的有形计算机可读存储设备或存储盘(例如存储器、数字多功能盘(DVD)、紧凑盘(CD)、蓝光盘等等)。此外,图1的示例处理器平台100可包括作为图1中所例示的那些的附加或替代的一个或多个元件、进程和/或设备,和/或可包括任何或所有所例示的元件、进程和/或设备中的多于一个。
在图2、3、5、7和/或8中示出了表示用于实现图1的示例处理器平台100的示例机器可读指令的流程图。在这些示例中,机器可读指令包括用于由诸如图1的示例处理器平台100中示出的处理器112之类的处理器执行的程序。程序可以被具体化在存储于诸如CD-ROM、软盘、硬驱动器、数字多功能盘(DVD)、蓝光盘或与处理器112关联的存储器那样的有形计算机可读存储介质上的软件里,但是全部或部分程序可以替代地由除处理器112之外的器件执行,并且/或者可以具体化在固件或专用硬件里。此外,虽然参考图1所例示的流程图描述了示例程序,但是可替代地使用实现示例处理器平台100的许多其他方法。例如,各个框的执行次序可以改变,和/或所描述的框中的一些框可以被改变、消除、或组合。
如上文所述,可使用存储于有形计算机可读介质上的经编码指令(例如,计算机和/或机器可读指令)来实现图2、3、5、7和/或8的示例进程,有形计算机可读介质诸如硬盘驱动器、闪存、只读存储器(ROM)、紧凑盘(CD)、数字多功能盘(DVD)、高速缓存、随机存取存储器(RAM)和/或在任何持续时间(例如,在扩展时间段内、永久地、在简短的实例期间、在临时缓冲期间和/或在信息的高速缓存期间)存储信息的任何其他存储设备或存储盘。如本文中所使用的,术语有形计算机可读存储介质被明确地定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播的信号以及排除传输介质。如本文中所使用的,“有形计算机可读存储介质”和“有形机器可读存储介质”可互换地使用。附加地或替代地,可使用存储于非瞬态计算机和/或机器可读存储介质上的经编码指令(例如,计算机和/或机器可读指令)实现图2、3、5、7和/或8的示例过程,非瞬态计算机可读存储介质诸如硬盘驱动器、闪存、只读存储器、紧凑盘、数字多功能盘、高速缓存、随机存取存储器和/或在任何持续时间(例如,在扩展时间段内、永久地、在简短的实例期间、在临时缓冲期间和/或在信息的高速缓存期间)存储信息的任何其他存储设备或存储盘。如本文中所使用,术语非瞬态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。如本文所使用的那样,当短语“至少”被用作与权利要求同步使用的转换术语时是和术语“包括”一样的开放式的。
图2是表示机器可读指令200的流程图,该机器可读指令200在被执行时使图1的示例处理器平台100将进程从前台操作转变至后台操作。当在前台执行示例进程时(框210),图2的示例过程开始。在本文所公开的示例中,当进程的状态是“前台App”时,认为进程在前台运行(例如,被执行)。当进程被活跃地执行且被显示为处理平台100的显示器上的最顶端应用时,进程接收“前台App”的状态。
示例进程状态转变检测器175确定是否将进程转变至后台操作(框220)。当例如以下情况发生时,示例进程状态转变检测器175标识进程要被转变至后台状态:主页按钮被按下、电话呼叫传入、另一进程被转变至前台、onPause()函数将被执行、onStop()函数将被执行等。如果进程并非要转变至后台(框220返回结果否),则进程继续在前台执行(例如,作为“前台App”)。如果进程要被转变至后台(框220返回结果是),则进程被进程控制器160转变至后台(框230)。在本文所公开的示例中,将进程转变至后台涉及将进程状态标记为除“前台App”之外的状态。通过将进程标记为处于除“前台App”之外的状态,进程可例如被分配较少的处理器资源,不被允许访问显示器等。图2的示例过程200随后终止。
图3是表示机器可读指令300的流程图,该机器可读指令300在被执行时使图1的示例处理器平台100标识用于在低存储器状况期间终止的进程。当进程控制器160确定是否执行低存储器检查时(框305),图3的示例过程300开始。在本文所公开的示例中,周期性地(例如,每二十秒、每分钟等)进行对执行低存储器检查的确定。然而,能以任何方式来进行对执行存储器检查的确定,这些方式诸如例如响应于应用被打开、响应于应用被关闭等。如果没有检查要被执行,则示例进程控制器160进行等待直到作出对执行低存储器检查的下一确定。在本文所公开的示例中,可在前一存储器检查之后不久将进程从前台操作转变至后台操作,并且如此,进程不必驻留在存储器中直到执行下一低存储器检查。
如果执行低存储器检查(框305返回结果是),则示例进程控制器160确定未使用存储器的量(框310)。虽然在图3的所例示示例中确定未使用存储器,但可附加地或替代地使用任何其他存储器值,诸如例如高速缓存的存储器、提交的存储器等。示例阈值比较器170确定未使用的存储器是否低于低存储器阈值(框320)。虽然在本文所公开的示例中,根据未使用的存储器来检查存储器阈值,但可附加地或替代地使用任何其他办法来检测低存储器状况何时存在,这些办法诸如例如检测已使用存储器何时超过阈值。
在本文所公开的示例中,可使用一个或多个存储器阈值,每个存储器阈值表示不同程度的存储器不足。图4是例示出不同存储器阈值的示例数据表400。示例表400包括标识存储器阈值的存储器阈值列410,以及标识OOM得分阈值的得分阈值列415,当存储器的量低于由存储器阈值列410标识的存储器阈值时,将使用该OOM得分阈值。在本文所公开的示例中,示例数据表400被存储在图1的大容量存储128中。然而,示例数据表400可被存储在任何其他位置,诸如例如非易失性存储器116、易失性存储器114、远程位置(例如,经由网络126进行通信的分开的服务器)等。在本文所公开的示例中,使用两个文件来存储示例数据表400。示例存储器阈值列410被存储在位于“/sys/module(模块)/lowmemorykiller(低存储器抑制器)/parameters(参数)/minfree(最小空闲)”的第一文件中,而示例得分阈值列415被存储在位于“/sys/module/lowmemorykiller/parameters/adj”的第二文件中。然而,可附加地或替代地使用用于存储示例数据表400的任何其他办法。例如,示例数据表400可被存储在单个文件中。
在图4的所例示示例中,示出三行430、440、450。第一示例行430指示,当可用存储器低于五十八兆字节(58MB)时,具有大于或等于零的OOM得分的进程可被终止以回收存储器。第二示例行440指示,当可用存储器低于九十兆字节(90MB)时,具有大于或等于五的OOM得分的进程可被终止以回收存储器。第三示例行450指示,当可用存储器低于两百兆字节(200MB)时,具有大于或等于十五的OOM得分的进程可被终止以回收存储器。虽然在图4的所例示示例中,用兆字节来表示存储器阈值,但可附加地或替代地使用用于设置存储器阈值的任何其他测量单位和/或办法,诸如例如使用可用存储器的百分比、使用以千兆字节计的阈值等。虽然在图4的所例示示例中,示出三个示例行,但可附加地或替代地使用任何数量的行。因此,如在图4的示例表400中示出的,不同的存储器阈值与不同的存储器不足得分阈值相关联。
返回图3,如果未使用存储器的量并非小于或等于(即,大于)低存储器阈值(例如,在图4的存储器阈值列410中标识的存储器阈值)(框320返回结果否),控制继续进行至框305,其中示例进程控制器160等待直到作出对用于执行低存储器检查的下一确定(框305)。
如果未使用存储器的量小于或等于存储器阈值(框320返回结果是),则示例存储器不足得分计算器180为当前正执行进程计算存储器不足(OOM)得分(框340)。OOM得分是指示其中进程应该被终止以释放存储器的次序的值。较高OOM得分指示进程应该首先被终止。下文结合图5来公开用于为进程计算OOM得分的示例办法。一般而言,使用较大量存储器的进程将接收比使用较小量存储器的进程高的OOM得分。
一确定存储器不足得分,示例进程控制器160就终止其中经计算OOM得分大于或等于对应OOM得分阈值(例如,违反图4中与存储器阈值相对应的得分阈值列415)的进程。此类终止确保存储器资源被释放以供其他进程使用。在本文所公开的示例中,首先终止具有最高存储器不足得分的进程。然而,可附加地或替代地使用用来标识用于终止的进程的任何其他办法。例如,首先可选择具有最大存储器消耗以及具有比OOM得分阈值大的OOM得分的进程。在一些示例中,在低存储器状况期间终止多个进程(例如,接收到大于OOM得分阈值的OOM得分的进程)以释放尽可能多的存储器。控制随后进行至框305,其中示例进程控制器160等待直到作出对执行低存储器检查的下一确定。
图5是表示机器可读指令500的流程图,该机器可读指令500在被执行时使图1的示例处理器平台100为进程计算存储器不足(OOM)得分。当示例存储器不足得分计算器180标识可使用存储器的总量时(框510),图5的示例过程500开始。在本文所公开的示例中,可使用存储器的总量与易失性存储器114的存储器容量相对应。然而,可附加地或替代地使用用于标识可使用存储器的量的任何其他办法。图6是标识OOM得分的示例计算的数据表600,可使用图5的示例过程500来确定OOM得分。图6的示例数据表600包括进程标识符列610、存储器使用列615、OOM调整列620、以及OOM得分列625。图6的示例数据表600标识第一示例进程640以及第二示例进程650。在图6的所例示示例中,第一进程640正在前台执行,而第二进程650正在后台执行。
回到图5的示例过程,示例存储器不足得分计算器180标识由所讨论进程使用的存储器的量(框520)。在所例示示例中,由所讨论进程使用的存储器的量与易失性存储器114中分配给进程的部分相对应。然而,可附加地或替代地使用用于标识由进程使用的存储器的量的任何其他办法。参看图6的所例示示例,第一示例进程640利用六十四兆字节(64MB),而第二示例进程利用三百八十四兆字节(384MB)。
示例存储器不足得分计算器180通过将进程所使用的存储器的量除以可使用存储器的量(例如,1024MB)来确定所讨论进程当前使用的可使用存储器量的百分比(框530)。在图6的所例示示例中,可使用存储器的量是一千零二十四兆字节(1024MB)。因此,第一示例进程640利用六又四分之一的百分比(以十进制记法为0.0625),而第二示例进程650利用三十七又二分之一的百分比(以十进制记法为0.375)。
示例存储器不足得分计算器180将百分比乘以缩放因子来创建缩放百分比(框540)。在本文所公开的示例中,缩放因子是十六,从而导致从零至十六的缩放百分比值的范围。然而,可附加地或替代地使用任何其他缩放因子,诸如例如缩放因子为一千。在图5的所例示示例中,缩放百分比被舍入(round)至最近整数。然而,可附加地或替代地使用用于舍入和/或缩放的任何其他办法。参看图6的示例,第一示例进程640导致缩放百分比为一(0.0625*16=1)。第二示例进程640导致缩放百分比为六(.375*16=6)。
示例存储器不足得分计算器180确定将被应用于缩放百分比的调整(框550)。在所例示的示例中,通过执行对调整值的查找来确定调整。在本文所公开的示例中,调整在负十七到正十五的范围内。在一些示例中,调整值被存储在“/proc/<pid>/oom_adj”中,其中<pid>表示进程的标识符。在图6的所例示示例中,第一示例进程640具有进程标识符“123”,如进程标识符列610所指示的那样。因此,用于第一示例进程的调整值可被存储在“/proc/123/oom_adj”中。第二示例进程650具有进程标识符“789”。因此,用于第二示例进程的调整值可被存储在“/proc/789/oom_adj”中。
在本文所公开的示例中,存储在“/proc/<pid>/oom_adj”中的值基于进程状态而变化。例如,当进程作为前台应用来执行时,标识低调整值(例如,负五、零、一)以例如确保用户在使用该应用时进程不会被终止。反之,当进程在后台执行时(例如,作为可见应用、作为辅助服务器、作为隐藏应用、作为内容提供者、或者作为空应用),标识较高调整值(例如,五、六、十、十五)以例如使进程能够被标识成在低存储器状况发生时终止。如图6的所例示示例中所示,第一示例进程640接收调整-1,而第二示例进程650接收调整12。
示例存储器不足得分计算器180将调整加至缩放百分比以创建OOM得分(框560)。然而,可附加地或替代地使用用于组合调整与缩放百分比的任何其他办法。例如,缩放百分比可乘以调整来创建OOM得分。图5的示例过程随后终止。如图6的示例数据表600所示,第一示例进程640的所得OOM得分(在示例OOM得分列625中示出)为零(例如,1+-1=0)。第二示例进程650的所得OOM得分为十二(例如,6+6=12)。参看图4的示例数据表400中描述的低存储器阈值,如果可用存储器将低于第二存储器阈值440(导致得分阈值为五),则第二示例进程650将被终止以释放存储器。
图7是表示机器可读指令的流程图,该机器可读指令在被执行时使图1的示例处理器平台100确定是否允许进程从前台操作转变至后台操作。如上所述,周期性地执行是否执行低存储器检查的确定。在一些示例中,应用可从前台操作转变至后台操作,而没想到会等待下一低存储器检查然后被终止。确定是否允许进程从前台操作转变至后台操作降低了进程将转变至后台而没想到会在下一存储器检查之际被终止的可能性。而且,当处理器平台100在低存储器状况下时,可更快地释放存储器。更快地释放存储器导致改进的应用启动时间。
如上述图2的示例过程200,当进程正在前台执行时(框710),图7的示例过程700开始。在本文所公开的示例中,当进程的状态是“前台App”时,认为进程在前台运行(例如,被执行)。当进程被活跃地执行且被显示为处理平台100的显示器上的最顶端应用时,进程接收“前台App”的状态。
示例进程状态转变检测器175检测进程将在何时转变至后台操作(框720)。当例如以下情况发生时,示例进程状态转变检测器175标识进程要被转变至后台状态:主页按钮被按下、电话呼叫传入、另一进程被转变至前台、onPause()函数将被执行、onStop()函数将被执行等。如果进程并非要转变至后台(框720返回结果否),则进程继续在前台执行(例如,作为“前台App”)。如果进程将转变至后台(框720返回结果是),而不是将进程立即转变至后台(如上文结合图2所描述的),则示例进程控制器120确定是否允许进程转变至后台(框725)。
为了确定是否允许进程转变至后台,示例进程控制器120标识可用存储器的量(框730)。在本文所公开的示例中,通过从存储器的总量减去处理器112当前执行的所有进程使用的高速缓存存储器的量来确定可用存储器的量。然而,可附加地或替代地使用任何其他存储器值。示例阈值比较器170确定可用存储器的量是否小于或等于存储器阈值(例如,图4的示例数据表400中示出的存储器阈值)(框735)。在本文所公开的示例中,存储器阈值(例如,第一存储器阈值430、第二存储器阈值440、第三存储器阈值450)中的每一个被顺序地用来确定是否违反了存储器阈值中的一个或多个。如果未使用存储器的量大于存储器阈值(框735返回结果否),则低存储器状况不存在,且允许进程被进程控制器120转变至后台(框760)。
如果未使用存储器的量小于或等于存储器阈值(框735返回结果是),则低存储器状况存在,且执行是否从前台操作转变至后台操作的进一步调查。示例存储器不足得分计算器180随后确定进程的预计OOM得分(框745)。预计OOM得分不表示进程的当前OOM得分,而是替代地预计一旦进程转变至后台的进程的OOM得分。计算预计OOM得分的示例程序会结合图8来进一步详细描述。示例阈值比较器170确定预计OOM得分是否大于与存储器阈值相关联的得分阈值,参看框735,该存储器阈值使阈值比较器170返回结果是。例如,如果违反了多个存储器阈值,则使用与最低存储器阈值相对应的得分阈值。例如,如果未使用存储器的量是七十兆字节(70MB),这违反了第二存储器阈值440(例如,阈值为九十兆字节(90MB))和第三存储器阈值450(例如,阈值为两百兆字节(200MB))两者,则将在框750的确定中使用得分阈值五(对应于第二存储器阈值440)。附加地或替代地,可使用任何其他得分阈值,诸如例如与最高存储器阈值相对应的得分阈值、与同大于未使用存储器的量的存储器阈值相关联的得分阈值的平均相对应的得分阈值等。
如果预计OOM得分并非大于得分阈值(框750返回结果否),则低存储器状况存在,但此进程向后台的转变将不可能使进程终止。控制随后继续进行至框760,其中进程控制器120将进程转变至后台(框760)。
如果预计OOM得分大于得分阈值(框750返回结果是),则低存储器状况存在,且当转变至后台时,进程将很可能在下一低存储器检查之际终止。代替允许进程转变至后台,示例进程控制器120终止进程,由此释放原本在后续低存储器检查之际将以其他方式释放的存储器。在后续低存储器检查之前释放存储器确保比等待后续存储器检查快地避免低存储器状况。
图8是表示机器可读指令745的流程图,该机器可读指令745在被执行时使图1的示例处理器平台100为进程计算预计OOM得分。当示例进程状态转变检测器175检测到进程将被转变至后台(框720返回结果是),且阈值比较器170确定未使用存储器的量小于或等于存储器阈值(框735返回结果是)时,图8的示例过程745开始。在图8的所例示示例中,示例存储器不足得分计算器180标识可使用存储器的总量(框810)。在本文所公开的示例中,可使用存储器的总量与易失性存储器116的存储器容量相对应。然而,可附加地或替代地使用用于标识可使用存储器的量的任何其他办法。
在进程被转变至后台之前,示例存储器不足得分计算器180标识由所讨论进程使用的存储器的量(框820)。在所例示示例中,由所讨论进程使用的存储器的量与易失性存储器116中分配给进程的部分相对应。然而,可附加地或替代地使用用于标识由进程使用的存储器的量的任何其他办法。
示例存储器不足得分计算器180通过将进程所使用的存储器的量除以可使用存储器的量来确定所讨论进程当前使用的可用存储器量的百分比(框830)。示例存储器不足得分计算器180将百分比乘以缩放因子(例如,十六、一千等)来创建缩放百分比(框840)。在图8的所例示示例中,缩放百分被舍入至最近整数。
优先级调整器165随后确定将被应用于缩放百分比的预计调整(框850)。在本文所公开的示例中,使用与后台进程相对应的默认调整来确定预计调整。与结合图5的框550描述的调整查找相比,优先级调整器165不执行基于将被转变至后台的进程的进程标识符的查找。例如,如果将在检测到转变时(例如,转变发生之前)执行查找,则所标识的值将与进程在前台操作时(即,并非在后台操作时)的调整值相对应。
在图8的所例示示例中,预计调整使用默认值六。然而,可附加地或替代地使用任何其他值。例如,预计调整可基于与已处于后台操作的一个或多个其他进程(例如,与正被转变至后台的进程不同的进程)相对应的调整值。而且,可根据进程将被转变至何种状态来使用不同的预计调整值。例如,将从前台应用转变至可见应用的进程可接收与将从前台应用转变至空应用的进程不同的预计调整。在本文所公开的示例中,调整在负十七到正十五的范围内。
示例存储器不足得分计算器180将预计调整加至缩放百分比以创建OOM得分(框860)。然而,可附加地或替代地使用用于组合调整与缩放百分比的任何其他办法。例如,缩放百分比可乘以调整来创建OOM得分。图8的示例过程随后终止,且控制返回图7的框750。
例如,如果现有剩余七十兆字节的低存储器状况(例如,违反了第二存储器阈值440,导致对应OOM得分阈值为五),且图6的第一示例进程640将被转变至后台,则预计OOM得分六将被加至缩放百分比一,从而导致预计OOM得分为七。因此,第一示例进程640将被终止而不被允许转变至后台。
从前述内容将理解,上文公开的方法、装置和制品实现了存储器约束下的进程管理。本文公开的示例办法实现了进程的较早终止,这些进程原本将在转变至后台操作模式时由于低存储器状况而终止。在本文所公开的示例中,使用预计调整(例如,不基于进程当前操作状态的调整)来计算预计OOM得分。如文本所公开的,在允许进程转变至后台之前终止进程不仅释放了与进程相关联的存储器,而且导致提高的处理器效率。例如,无需消耗与维持同进程相关联的状态信息相关联的CPU时钟周期。而且,不消耗与将进程转变至后台模式相关联的CPU时钟周期。不在很可能将于后续低存储器检查之际被终止的进程上花费CPU时钟周期使其他进程能够更快地响应。例如,与进程相关联的所呈现图形用户接口可以更快响应,从而导致增强的用户体验。
示例1是一种用于管理存储器利用的方法,该方法包括:检测进程将从前台操作模式转变至后台操作模式。方法包括在未将进程转变至后台操作模式的情况下,计算预计存储器不足得分;方法包括在未将进程转变至后台操作模式的情况下,将预计存储器不足得分与得分阈值进行比较。方法包括在未将进程转变至后台操作模式的情况下,当预计存储器不足得分大于得分阈值时,终止进程。
示例2包括示例1的主题,其中计算预计存储器不足得分包括确定由进程当前使用的可使用存储器量的百分比。计算预计存储器不足得分包括确定预计调整值。计算预计存储器不足得分包括基于百分比和预计调整值来创建预计存储器不足得分。
示例3包括示例2的主题,其中对预计调整值的确定包括确定后台进程的默认调整值。
示例4包括示例2的主题,其中对预计调整值的确定包括执行对当前与以后台操作模式操作的第二进程相关联的调整值的查找。
示例5包括示例4的主题,其中后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
示例6包括示例1-5中任一项的主题,且进一步包括基于低存储器阈值来确定得分阈值。
示例7包括示例1-6中任一项的主题,且进一步包括在预计存储器不足得分小于或等于得分阈值时允许进程转变至后台操作模式。
示例8时一种处理器平台,该处理器平台包括进程状态转变检测器,该进程状态转变检测器用于检测由处理器执行的进程将从前台操作模式转变至后台操作模式。处理器平台包括存储器不足得分计算器,该存储器不足得分计算器用于在未将进程转变至后台操作模式的情况下,计算预计存储器不足得分。处理器平台包括阈值比较器,该阈值比较器用于在未将进程转变至后台操作模式的情况下,将预计存储器不足得分与得分阈值进行比较。处理器平台包括进程控制器,该进程控制器用于在未将进程转变至后台操作模式的情况下,当预计存储器不足得分大于得分阈值时,终止进程。
示例9包括示例8的主题,其中存储器不足得分计算器用于确定由处理器当前使用的可使用存储器量的百分比。示例9进一步包括优先级调整器,该优先级调整器用于确定预计调整值,存储器不足得分计算器用于基于百分比和预计调整值来创建预计存储器不足得分。
示例10包括示例9的主题,其中优先级调整器通过确定后台进程的默认调整值来确定预计调整值。
示例11包括示例9的主题,其中优先级调整器通过执行对当前与以后台操作模式操作的第二进程相关联的调整值的查找来确定预计调整值。
示例12包括示例11的主题,其中后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
示例13包括示例8-12中任一项的主题,其中阈值比较器用于基于低存储器阈值来确定得分阈值。
示例14包括示例8-13中任一项的主题,其中进程控制器进一步用于在预计存储器不足得分小于或等于得分阈值时允许进程转变至后台操作模式。
示例15是至少一种有形计算机可读存储盘或存储设备,包括指令,指令在被执行时,使处理器至少用于检测进程将从前台操作模式转变至后台操作模式。指令在被执行时进一步使处理器用于在未将进程转变至后台操作模式的情况下,计算预计存储器不足得分。指令在被执行时进一步使处理器用于在未将进程转变至后台操作模式的情况下,将预计存储器不足得分与得分阈值进行比较。指令在被执行时进一步使处理器用于在未将进程转变至后台操作模式的情况下,当预计存储器不足得分大于得分阈值时,终止进程。
示例16包括示例15的主题,其中指令在被执行时进一步使处理器用于确定由进程当前使用的可使用存储器量的百分比。指令在被执行时进一步使处理器用于确定预计调整值。指令在被执行时进一步使处理器用于基于百分比和预计调整值来创建预计存储器不足得分。
示例17包括示例16的主题,其中指令在被执行时进一步使处理器用于通过确定后台进程的默认调整值来确定预计调整值。
示例18包括示例16的主题,指令在被执行时进一步使处理器用于通过执行对当前与以后台操作模式操作的第二进程相关联的调整值的查找来确定预计调整值。
示例19包括示例18的主题,其中后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
示例20包括示例15-19中任一项的主题,其中指令在被执行时进一步使处理器用于基于低存储器阈值来确定得分阈值。
示例21包括示例15-20中任一项的主题,其中指令在被执行时进一步使处理器用于在预计存储器不足得分小于或等于得分阈值时允许进程转变至后台操作模式。
示例22是一种设备,包括用于检测进程将从前台操作模式转变至后台操作模式的装置。设备包括用于在未将进程转变至后台操作模式的情况下,计算预计存储器不足得分的装置。设备包括用于在未将进程转变至后台操作模式的情况下,将预计存储器不足得分与得分阈值进行比较的装置。设备包括用于在未将进程转变至后台操作模式的情况下,当预计存储器不足得分大于得分阈值时,终止进程的装置。
示例23包括示例22的主题,其中用于计算的装置包括用于确定由处理器当前使用的可使用存储器量的百分比的装置。用于计算的装置包括用于确定预计调整值的装置。用于计算的装置包括用于基于百分比和预计调整值来创建预计存储器不足得分的装置。
示例24包括示例21的主题,其中用于确定预计调整值的装置包括用于确定后台进程的默认调整值的装置。
示例25包括示例21的主题,进一步包括用于执行对当前与以后台操作模式操作的第二进程相关联的调整值的查找的装置。
示例26包括示例25的主题,其中后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
示例27包括示例22-26中任一项的主题,且进一步包括用于基于低存储器阈值来确定得分阈值的装置。
示例28包括示例22-27中任一项的主题,且进一步包括用于在预计存储器不足得分小于或等于得分阈值时允许进程转变至后台操作模式的装置。
尽管本文中已公开了某些示例方法、装置和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部方法、装置和制品。
Claims (22)
1.一种用于管理存储器利用的方法,所述方法包括:
检测进程将从前台操作模式转变至后台操作模式;
在未将所述进程转变至所述后台操作模式的情况下,计算预计存储器不足得分;
在未将所述进程转变至所述后台操作模式的情况下,将所述预计存储器不足得分与得分阈值进行比较;以及
在未将所述进程转变至所述后台操作模式的情况下,当所述预计存储器不足得分大于所述得分阈值时,终止所述进程,
其中所述预计存储器不足得分能基于由所述进程利用的存储器的量、所述进程的状态、以及基于所述进程的状态的调整值。
2.如权利要求1所述的方法,其特征在于,对所述预计存储器不足得分的计算包括:
确定由所述进程当前使用的可使用存储器量的百分比;
确定预计调整值;以及
基于所述百分比和所述预计调整值来创建所述预计存储器不足得分。
3.如权利要求2所述的方法,其特征在于,对所述预计调整值的确定包括确定后台进程的默认调整值。
4.如权利要求2所述的方法,其特征在于,对所述预计调整值的确定包括执行对当前与以所述后台操作模式操作的第二进程相关联的调整值的查找。
5.如权利要求4所述的方法,其特征在于,所述后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
6.如权利要求1-5中任一项所述的方法,其特征在于,进一步包括基于低存储器阈值来确定所述得分阈值。
7.如权利要求1-5中任一项所述的方法,其特征在于,进一步包括在所述预计存储器不足得分小于或等于所述得分阈值时,允许所述进程转变至所述后台操作模式。
8.一种包括代码的机器可读介质,所述代码在被执行时,使机器执行如权利要求1-7中任一项所述的方法。
9.一种处理器平台,包括:
进程状态转变检测器,所述进程状态转变检测器用于检测由处理器执行的进程将从前台操作模式转变至后台操作模式;
存储器不足得分计算器,所述存储器不足得分计算器用于在未将所述进程转变至所述后台操作模式的情况下,计算预计存储器不足得分;
阈值比较器,所述阈值比较器用于在未将所述进程转变至所述后台操作模式的情况下,将所述预计存储器不足得分与得分阈值进行比较;以及
进程控制器,所述进程控制器用于在未将所述进程转变至所述后台操作模式的情况下,当所述预计存储器不足得分大于所述得分阈值时,终止所述进程,
其中所述预计存储器不足得分能基于由所述进程利用的存储器的量、所述进程的状态、以及基于所述进程的状态的调整值。
10.如权利要求9所述的处理器平台,其特征在于,所述存储器不足得分计算器用于确定由所述进程当前使用的可使用存储器量的百分比,并且进一步包括:
优先级调整器,所述优先级调整器用于确定预计调整值,所述存储器不足得分计算器用于基于所述百分比和所述预计调整值来创建所述预计存储器不足得分。
11.如权利要求10所述的处理器平台,其特征在于,所述优先级调整器通过确定后台进程的默认调整值来确定所述预计调整值。
12.如权利要求10所述的处理器平台,其特征在于,所述优先级调整器用于通过执行对当前与以所述后台操作模式操作的第二进程相关联的调整值的查找来确定所述预计调整值。
13.如权利要求12所述的处理器平台,其特征在于,所述后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
14.如权利要求9-13中任一项所述的处理器平台,其特征在于,所述阈值比较器用于基于低存储器阈值来确定所述得分阈值。
15.如权利要求9-13中任一项所述的处理器平台,其特征在于,所述进程控制器进一步用于在所述预计存储器不足得分小于或等于所述得分阈值时,允许所述进程转变至所述后台操作模式。
16.一种设备,包括:
用于检测进程将从前台操作模式转变至后台操作模式的装置;
用于在未将所述进程转变至所述后台操作模式的情况下,计算预计存储器不足得分的装置;
用于在未将所述进程转变至所述后台操作模式的情况下,将所述预计存储器不足得分与得分阈值进行比较的装置;以及
用于在未将所述进程转变至所述后台操作模式的情况下,当所述预计存储器不足得分大于所述得分阈值时,终止所述进程的装置,
其中所述预计存储器不足得分能基于由所述进程利用的存储器的量、所述进程的状态、以及基于所述进程的状态的调整值。
17.如权利要求16所述的设备,其特征在于,用于计算的装置包括:
用于确定由所述进程当前使用的可使用存储器量的百分比的装置;
用于确定预计调整值的装置;以及
用于基于所述百分比和所述预计调整值来创建所述预计存储器不足得分的装置。
18.如权利要求17所述的设备,其特征在于,用于确定所述预计调整值的装置包括用于确定后台进程的默认调整值的装置。
19.如权利要求16所述的设备,其特征在于,进一步包括用于执行对当前与以所述后台操作模式操作的第二进程相关联的调整值的查找的装置。
20.如权利要求19所述的设备,其特征在于,所述后台操作模式是以下各项中的至少一者:可见应用、辅助服务器、隐藏应用、内容提供者或空应用。
21.如权利要求16-20中任一项所述的设备,其特征在于,进一步包括用于基于低存储器阈值来确定所述得分阈值的装置。
22.如权利要求16-20中任一项所述的设备,其特征在于,进一步包括用于在所述预计存储器不足得分小于或等于所述得分阈值时,允许所述进程转变至所述后台操作模式的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/089,439 | 2016-04-01 | ||
US15/089,439 US10552320B2 (en) | 2016-04-01 | 2016-04-01 | Using a projected out of memory score to selectively terminate a process without transitioning to a background mode |
PCT/US2017/020205 WO2017172213A1 (en) | 2016-04-01 | 2017-03-01 | Methods and apparatus to manage a process under a memory constraint |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701026A CN108701026A (zh) | 2018-10-23 |
CN108701026B true CN108701026B (zh) | 2024-04-09 |
Family
ID=59961514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780014741.7A Active CN108701026B (zh) | 2016-04-01 | 2017-03-01 | 用于在存储器约束下管理进程的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10552320B2 (zh) |
CN (1) | CN108701026B (zh) |
DE (1) | DE112017001783T5 (zh) |
WO (1) | WO2017172213A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109313604B (zh) * | 2016-06-27 | 2023-05-23 | 英特尔公司 | 用于压缩虚拟存储器的动态配置的计算系统、装置和方法 |
CN109213539B (zh) * | 2016-09-27 | 2021-10-26 | 华为技术有限公司 | 一种内存回收方法及装置 |
US20180129537A1 (en) * | 2016-11-10 | 2018-05-10 | Microsoft Technology Licensing, Llc | Managing memory usage using soft memory targets |
US10169576B2 (en) * | 2016-11-15 | 2019-01-01 | International Business Machines Corporation | Malware collusion detection |
KR102557267B1 (ko) * | 2018-10-12 | 2023-07-20 | 삼성전자주식회사 | 메모리의 저장 용량을 확보하기 위한 디스플레이 장치 |
CN112306371A (zh) | 2019-07-30 | 2021-02-02 | 伊姆西Ip控股有限责任公司 | 存储管理的方法、设备和计算机程序产品 |
EP3812902B1 (en) * | 2019-10-25 | 2022-07-27 | Thomson Licensing | Method for controlling memory resources in an electronic device, device for controlling memory resources, electronic device and computer program |
US11861395B2 (en) | 2020-12-11 | 2024-01-02 | Samsung Electronics Co., Ltd. | Method and system for managing memory for applications in a computing system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576569A (zh) * | 2009-08-21 | 2012-07-11 | 拉姆伯斯公司 | 原位内存退火 |
WO2013072824A1 (en) * | 2011-11-17 | 2013-05-23 | International Business Machines Corporation | Adjustment of destage rate based on read and write response time requirements |
CN103838633A (zh) * | 2012-11-20 | 2014-06-04 | 国际商业机器公司 | 在动态虚拟机存储器调整中避免内存不足 |
CN105144083A (zh) * | 2013-04-24 | 2015-12-09 | 三星电子株式会社 | 用于管理用户设备的存储器的方法和设备 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7465231B2 (en) * | 2004-05-20 | 2008-12-16 | Gametap Llc | Systems and methods for delivering content over a network |
US8510743B2 (en) | 2007-10-31 | 2013-08-13 | Google Inc. | Terminating computer applications |
JP5449060B2 (ja) * | 2010-06-30 | 2014-03-19 | 三菱重工業株式会社 | 風力発電装置 |
US8352691B2 (en) * | 2010-08-17 | 2013-01-08 | International Business Machines Corporation | Facilitation of simultaneous storage initialization and data destage |
TW201241640A (en) * | 2011-02-14 | 2012-10-16 | Microsoft Corp | Dormant background applications on mobile devices |
US20120324481A1 (en) | 2011-06-16 | 2012-12-20 | Samsung Electronics Co. Ltd. | Adaptive termination and pre-launching policy for improving application startup time |
US9250958B2 (en) | 2012-11-19 | 2016-02-02 | Qualcomm Innovation Center, Inc. | System, method, and apparatus for improving application-launch latencies |
US8972801B2 (en) * | 2013-02-04 | 2015-03-03 | International Business Machines Corporation | Motivating lazy RCU callbacks under out-of-memory conditions |
US20150067238A1 (en) | 2013-08-29 | 2015-03-05 | Sandisk Technologies Inc. | Computing Device and Method for Predicting Low Memory Conditions |
CN104050035B (zh) * | 2014-05-14 | 2018-05-25 | 小米科技有限责任公司 | 应用程序的处理方法及装置 |
US9720823B2 (en) * | 2015-06-18 | 2017-08-01 | Oracle International Corporation | Free memory trending for detecting out-of-memory events in virtual machines |
US10101910B1 (en) * | 2015-09-15 | 2018-10-16 | Amazon Technologies, Inc. | Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager |
US10248321B1 (en) * | 2015-09-15 | 2019-04-02 | Amazon Technologies, Inc. | Simulating multiple lower importance levels by actively feeding processes to a low-memory manager |
US10133601B2 (en) * | 2016-03-31 | 2018-11-20 | Intel Corporation | Memory management |
-
2016
- 2016-04-01 US US15/089,439 patent/US10552320B2/en active Active
-
2017
- 2017-03-01 DE DE112017001783.1T patent/DE112017001783T5/de active Pending
- 2017-03-01 WO PCT/US2017/020205 patent/WO2017172213A1/en active Application Filing
- 2017-03-01 CN CN201780014741.7A patent/CN108701026B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576569A (zh) * | 2009-08-21 | 2012-07-11 | 拉姆伯斯公司 | 原位内存退火 |
WO2013072824A1 (en) * | 2011-11-17 | 2013-05-23 | International Business Machines Corporation | Adjustment of destage rate based on read and write response time requirements |
CN103838633A (zh) * | 2012-11-20 | 2014-06-04 | 国际商业机器公司 | 在动态虚拟机存储器调整中避免内存不足 |
CN105144083A (zh) * | 2013-04-24 | 2015-12-09 | 三星电子株式会社 | 用于管理用户设备的存储器的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20170285977A1 (en) | 2017-10-05 |
DE112017001783T5 (de) | 2018-12-13 |
US10552320B2 (en) | 2020-02-04 |
CN108701026A (zh) | 2018-10-23 |
WO2017172213A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701026B (zh) | 用于在存储器约束下管理进程的方法和装置 | |
CN111158910B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
US10025513B2 (en) | Execution method and apparatus | |
CN110888746B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
US8745362B2 (en) | Operating system aware branch predictor using a dynamically reconfigurable branch history table | |
WO2019024641A1 (zh) | 数据同步方法、装置、存储介质以及电子设备 | |
US20140143791A1 (en) | System, method, and apparatus for improving application-launch latencies | |
US20100082855A1 (en) | Associating process priority with i/o queuing | |
KR20160132432A (ko) | 멀티 프로세스 애플리케이션들을 위한 동적 자원 관리 | |
CN105335099A (zh) | 一种内存清理方法及终端 | |
CN104199784B (zh) | 一种基于分级存储的数据迁移方法及装置 | |
US20170147493A1 (en) | Prefetch confidence and phase prediction for improving prefetch performance in bandwidth constrained scenarios | |
CN105430478A (zh) | 一种网络视频缓冲播放方法、装置及电视机 | |
CN111475299B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN110889062A (zh) | 页面加载方法及装置、终端和计算机可读存储介质 | |
CN115576645A (zh) | 一种虚拟处理器调度方法、装置、存储介质及电子设备 | |
CN111381953B (zh) | 进程管理方法、装置、存储介质及电子设备 | |
KR20130073697A (ko) | 메모리 정리를 실행하는 전자 기기 및 그 방법 | |
CN103678584A (zh) | 基于应用搜索的应用排序方法及装置 | |
CN108536512B (zh) | 界面切换方法、装置及终端设备 | |
CN111008079A (zh) | 进程管理方法、装置、存储介质及电子设备 | |
US20200081741A1 (en) | Information processing apparatus and memory management method | |
CN111651261B (zh) | 进程管理方法、装置、终端设备及计算机可读存储介质 | |
CN115269243A (zh) | 一种检测进程的方法、装置、设备及存储介质 | |
CN111078405B (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 |