CN114741205B - 一种匿名页回收方法及电子设备 - Google Patents

一种匿名页回收方法及电子设备 Download PDF

Info

Publication number
CN114741205B
CN114741205B CN202210626983.4A CN202210626983A CN114741205B CN 114741205 B CN114741205 B CN 114741205B CN 202210626983 A CN202210626983 A CN 202210626983A CN 114741205 B CN114741205 B CN 114741205B
Authority
CN
China
Prior art keywords
anonymous
anonymous page
page
system memory
compression algorithm
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
Application number
CN202210626983.4A
Other languages
English (en)
Other versions
CN114741205A (zh
Inventor
李鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Glory Smart Technology Development Co ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210626983.4A priority Critical patent/CN114741205B/zh
Publication of CN114741205A publication Critical patent/CN114741205A/zh
Application granted granted Critical
Publication of CN114741205B publication Critical patent/CN114741205B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了一种匿名页回收方法及电子设备。在该方法中,当电子设备检测到满足初步回收条件时,采用高压缩速率的第一压缩算法对系统内存中的匿名页进行初步压缩后从系统内存中换出到Zram Swap中进行存储。之后,当电子设备检测到满足深度回收条件时,采用高压缩比的第二压缩算法对Zram Swap中的匿名页进行深度压缩后从Zram Swap中换出到深度压缩Swap中进行存储。这样可以在保证用户体验的情况下,节省更多系统内存。

Description

一种匿名页回收方法及电子设备
技术领域
本申请涉及终端领域,尤其涉及一种匿名页回收方法及电子设备。
背景技术
电子设备的系统内存资源有限,当电子设备将在前台运行某个应用程序时,需要为该应用程序提供系统内存资源,若此时系统内存资源较少,则电子设备会回收其他后台应用进程占用的部分系统内存,其中包括回收部分匿名页,以便留出更多的系统内存,供该应用在前台运行时占用。
如何回收匿名页,以提高系统内存利用率,则是亟待解决的问题。
发明内容
本申请提供了一种匿名页回收方法及电子设备,在该方法中,电子设备可以采用高压缩速率的第一压缩算法先对系统内存中的匿名页进行初步回收,然后在基于初步回收结果,采用高压缩比的第二压缩算法对匿名页进行深度回收。这样可以在保证用户体验的情况下,节省更多系统内存,用于支持电子设备运行多应用或者大应用的场景,提升内存利用率。
第一方面,本申请提供了一种匿名页回收方法,该方法应用于电子设备,该方法包括:该电子设备检测到第一条件,使用第一压缩算法对系统内存中存储的第一匿名页进行压缩,将压缩后的该第一匿名页换出到第一存储区中存储;在使用该第一压缩算法对该第一匿名页压缩后,该系统内存中未被匿名页占用的大小增加了第一值,该第一值等于该第一匿名页在该系统内存中所占的大小减去经过该第一压缩算法压缩后所占的大小;该电子设备检测到第二条件,使用第二压缩算法对该第一匿名页中的第二匿名页进行压缩,将压缩后的该第二匿名页换出到第二存储区中存储;在使用该第二压缩算法对该第二匿名页压缩后,该系统内存中未被匿名页占用的大小增加了第二值,该第二值等于该第二匿名页在该第一存储区中所占的大小减去经过该第二压缩算法压缩后所占的大小;其中,该第二压缩算法的压缩速率小于该第一压缩算法的速率,并且,该第二压缩算法的压缩比大于该第一压缩算法的压缩比。
以一个具体的实例来看,电子设备的内存的大小为固定值S,电子设备的系统内存的大小为X1,电子设备的第一存储区的大小为Y1,电子设备的第二存储区的大小为Z1,系统内存、第一存储区和第二存储区分别为内存中的三个子存储区,S=X1+Y1+Z1,0<X1≤S,0≤Y1<S,0≤Z1<S。当第一匿名页在系统内存中占用的空间为M1时,经过第一压缩算法压缩后的第一匿名页在第一存储区中占用的空间为N1,M1>N1;此时,系统内存的大小变为X2,X2=X1-N1,第一存储区的大小变为Y2,Y2=Y1+N1,S=X2+Y2+Z1;可见,经过第一压缩算法对第一匿名页压缩后,系统内存中未被匿名页占用的大小多了M1-N1,也就是说,系统内存节省出M1-N1。当第二匿名页在第一存储区中占用的空间为M2,经过第二压缩算法压缩后的第二匿名页在第二存储区中占用的空间为N2,M2>N2;此时,第一存储区的大小变为Y3,Y3=Y2-M2,系统内存的大小变为X3,X3=X2+(M2-N2),第二存储区的大小变为Z2,Z2=Z1+N2,S=X3+Y3+Z2;可见,经过第二压缩算法对第二匿名页压缩后,系统内存中未被匿名页占用的大小多了M2-N2,也就是说,系统内存节省出M2-N2。
实施第一方面提供的方法后,先采用高压缩速率的压缩算法进行初步回收,后采用高压缩比的压缩算法进行深度回收的匿名页回收机制,这样,既保证了匿名页回收的时间效率、又提高了匿名页回收的空间效率,从时间维度和空间维度上提升系统内存回收效率,提高内存利用率,提升用户体验感。
结合第一方面提供的方法,该第一匿名页为该系统内存中存储的匿名页中的部分匿名页;该第二匿名页为以下任意一种:该第一匿名页中第一数量的匿名页/冷页,在对所有该第一匿名页进行检测时,满足系统内存节省条件的匿名页/冷页,在对第二数量的该第一匿名页进行检测时,满足系统内存节省条件的匿名页/冷页,其中,该冷页为在该第一存储区中存储时间多于预设时长的该第一匿名页。
这样,采用第一压缩算法进行初步回收时的回收对象可以有多种类型,采用第二压缩算法进行深度回收时的回收对象也可以有多种类型,从而提高本申请的可实施性。
结合第一方面提供的方法,该第一数量具体为该第一存储区中存储的全部或者部分该第一匿名页对应的数量;该第二数量具体根据该系统内存中未被占用的资源确定,当该系统内存中未被占用的资源越少时,该第二数量越多。
这样,由于采用高压缩比的第二压缩算法压缩匿名页时,耗时较长,也会占用一定的CPU资源,为了不会给用户带来应用程序加载慢、运行慢等的不良体验,因此根据多种规则来选择一定数量的第二匿名页进行压缩,能够在保证不影响用户体验的情况下,节省更多的系统内存。
结合第一方面提供的方法,该系统内存节省条件为,采用该第二压缩算法比采用该第一压缩算法对该第一匿名页进行压缩后,该第一匿名页所占的大小低于第三值。
这样,可以保证采用高压缩比的第二压缩算法压缩匿名页时,能够节省的系统内存存够大,从而避免浪费CPU资源去压缩,但是节省的系统内存较少的问题。
结合第一方面提供的方法,该第一条件为以下任意一种:满足第一周期,该系统内存中未被占用的大小少于第四值,该电子设备运行的应用程序数量多于第五值,或者该电子设备运行第一应用程序时占用的该系统内存的大小多于第六值。例如一些小型游戏类应用程序,其在运行过程中通常会占用大于第六值的系统内存。
这样,触发电子设备采用高压缩速率的第一压缩算法进行内存回收时的触发时机有多种,从而提高本申请的可实施性,扩大本申请的应用场景。
结合第一方面提供的方法,该第二条件为以下任意一种:满足第二周期,该系统内存中未被占用的大小少于第七值,该电子设备运行的应用程序数量多于第八值,或者该电子设备运行第二应用程序时占用的该系统内存的大小多于第九值。
这样,触发电子设备采用高压缩比的第二压缩算法进行内存回收时的触发时机有多种,从而提高本申请的可实施性,扩大本申请的应用场景。
结合第一方面提供的方法,在该电子设备使用该第一压缩算法对该第一匿名页压缩后,并且在该电子设备使用该第二压缩算法对该第二匿名页压缩之前,该方法还包括:当该电子设备的CPU访问该第一存储区中的该第一匿名页时,该电子设备将待访问的该第一匿名页经过第一压缩算法解压后从该第一存储区换出到该系统内存中,供该CPU直接访问。
这样,当CPU重新访问被采用第一压缩算法回收的匿名页时,还能将其解压到系统内存中,以供CPU快速访问。
结合第一方面提供的方法,在该电子设备使用该第二压缩算法对该第二匿名页压缩之后,该方法还包括:
当该电子设备的CPU访问该第二存储区中的该第二匿名页时,该电子设备将待访问的该第二匿名页经过第二压缩算法解压后从该第二存储区换出到该系统内存中,供该CPU直接访问。
这样,当CPU重新访问被采用第二压缩算法回收的匿名页时,还能将其解压到系统内存中,以供CPU快速访问。
结合第一方面提供的方法,在该电子设备使用该第二压缩算法对该第二匿名页压缩后,该方法还包括:该电子设备检测到第三条件,使用第三压缩算法对该第二匿名页中的第三匿名页进行压缩,将压缩后的该第三匿名页换出到第三存储区中存储;在使用该第三压缩算法对该第三匿名页压缩后,该系统内存中未被匿名页占用的大小增加了第十值,该第十值等于该第三匿名页在该第二存储区中所占的大小减去经过该第三压缩算法压缩后所占的大小;该第三压缩算法的压缩速率小于该第二压缩算法的速率,并且,该第三压缩算法的压缩比大于该第二压缩算法的压缩比。
这样,电子设备可以采用多级压缩算法进行对匿名页回收,以节省出更多的系统内存。
结合第一方面提供的方法,该系统内存中未被匿名页占用的空间,用于运行第三应用程序,或者用于同时运行多于第十一值的多个应用程序;其中,该第三应用程序的在运行过程中,占用该系统内存的大小多于第十二值。
这样,电子设备经过对匿名页回收后,可以节省出更多系统内存,并将该节省出的系统内存用于支持电子设备运行多应用或者大应用的场景,提升内存利用率。
第二方面,本申请提供了一种芯片,该芯片应用于电子设备,该芯片包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面中任一项描述的方法。
第三方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,当该指令在电子设备上运行时,使得该电子设备执行如第一方面中任一项描述的方法。
第四方面,本申请提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器;其中,该一个或多个存储器与该一个或多个处理器耦合,该一个或多个存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,当该一个或多个处理器执行该计算机指令时,使得该电子设备执行如第一方面中任一项描述的方法。
附图说明
图1A为本申请实施例提供的Zram Swap与系统内存的逻辑关系示意图;
图1B为本申请实施例提供的Zram Swap内存回收机制的原理示意图;
图2A为本申请实施例提供的电子设备100的硬件结构示意图;
图2B为本申请实施例提供的电子设备100的架构框图;
图3为本申请实施例提供的匿名页回收方法流程图;
图4为本申请实施例提供的深度回收机制的原理示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
首先,为了便于理解,下面先对本申请实施例涉及的相关术语及相关概念进行介绍。本发明的实施方式所使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
1、内存
内存也被称为内存储器、主存储器等。内存可以包含一个或多个随机存取存储器(random access memory,RAM)。内存可以由处理器(Central Processing Unit,CPU)直接进行读写,可以用于暂时存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于暂时存储用户及应用程序的数据等。
2、系统内存
系统内存是在内存中划分的一部分空间,即系统内存包含在内存中,系统内存可以由处理器(Central Processing Unit,CPU)直接进行读写,可以用于暂时存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令)。
3、外存
外存也被称为外存储器等。外存可以包含一个或多个非易失性存储器(non-volatile memory,NVM)。外存包含设置在电子设备内部的NVM,也包含通过外部存储器接口连接的外部NVM。外存不能被CPU直接进行读写,但外存可以存储可执行程序和存储用户及应用程序的数据等,当CPU需要读写外存中的数据时,可以将外存中的数据提前加载到内存中,用于CPU直接进行读写。
4、内存页
内存页包含匿名页和文件页。本申请提供的内存回收主要涉及的是对系统内存中的匿名页进行回收。
对于匿名页来说,操作系统并未给匿名页提供名称标记,所以虚拟存储地址(Virtual Memory Address,VMA)无法根据名称对不同的匿名页进行区分,因此将没有名称标记的内存页称之为匿名页。在对匿名页回收时,为了CPU后续还能访问到该对应的匿名页,因此不能直接将匿名页在系统内存中释放(即删除),需要将其从系统内存中换出到Zram Swap中进行压缩存储,Zram Swap中的数据是可以被CPU访问到的。匿名页具体指,程序运行过程中的动态分配的系统内存页,包括堆,栈,数据段等。
对于文件页来说,操作系统会为文件页提供名称标记,即在VMA上会记录其对应的文件名,根据文件名可以对不同的文件页进行区分,因此将有名称标记的系统内存页称之为文件页。在对文件页回收时,可以直接将文件页在系统内存中释放(即删除)。之后CPU若要访问该文件页,可以根据该文件页的文件名将该文件页从外存加载到系统内存中,再进行读取。文件页具体是指,存放文件类数据的内存页,包括代码段、库文件以及程序交互所访问的文件数据等。
以电子设备播放音乐的场景为例,电子设备运行播放器的程序数据所占系统内存则属于匿名页,电子设备从外存中加载到系统内存中的音乐文件所占的系统内存则属于文件页。
5、Zram Swap
(1)定义:Zram Swap是在内存中划分的一部分空间。
可以理解的是,在本申请一些实施例中,将内存划分为,系统内存、Zram Swap。本申请实施例对内存、系统内存、Zram Swap三者的名称不作特殊限制,而三者的关系已在图1A中详细记载,具体如下:
参考图1A,图1A示例性示出本申请中Zram Swap与系统内存的逻辑关系示意图。
如图1A所示,内存的大小为固定值,是由电子设备配置的硬件设备,即前文所述的一个或多个RAM的大小决定。内存可以被逻辑划分为系统内存和Zram Swap,Zram Swap在内存能够占的最大空间由预先设置的固定上限值决定,Zram Swap在内存中实际所占的空间可以在最大空间范围内动态变化,实际所占的空间具体可以由当前存储的压缩后的匿名页的大小决定。相应的,系统内存则包含内存中除去Zram Swap的实际空间以外的其他所有空间,系统内存所包含的所有空间都可以存储操作系统或其他正在运行中的程序的可执行程序,和存储用户及应用程序的数据等。
总之,Zram Swap和系统内存是承载在同一硬件(一个或多个RAM)上的两个相对独立的空间。其中,独立性是指,两者存储内容不同,作用不同。相对性是指,当Zram Swap的实际空间占空间越大时,则相应的系统内存的空间会越少。
可以理解的是,图1A所示的Zram Swap与系统内存的关系仅为逻辑关系示意图,本申请并不对Zram Swap与系统内存所占的空间的大小、物理位置进行限制。
(2)作用:Zram Swap主要用于内存回收。
参考图1B,图1B示例性示出Zram Swap内存回收机制的原理示意图。
如图1B所示,在电子设备采用Zram Swap内存回收机制之前,内存全部被当做系统内存使用,即内存全部被用于存储操作系统或其他正在运行中的程序的可执行程序,和存储用户及应用程序的数据等。但当,系统内存资源不足时(例如快被进程占满时),操作系统把系统内存中的占用的部分匿名页换出,存放在Zram Swap里,从而释放出这些匿名页在系统内存中所占的原空间,即节省了系统内存。虽然,将换出的匿名页存在Zram Swap还是占用了内存中的一定空间,相应的减少系统内存可用空间。但是,电子设备可以通过ZramSwap内存回收机制将从系统内存中换出的匿名页经过压缩后再存储到Zram Swap中,压缩后的匿名页所占空间(即Zram Swap)比压缩前在系统内存中所占的原空间小很多,并且,当CPU后续需要读写Zram Swap中的匿名页时,则操作系统会将解压后的对应匿名页换回到系统内存中。总之,初步回收后节省的系统内存为图1B所示的节省系统内存对应的空间,该系统内存对应的空间即,系统内存中未被匿名页占用的大小增加了第一值。这样,不仅会释放出匿名页在换出前所占的大系统内存,而且这种采用将换出的匿名页压缩存入内存的ZramSwap中而不是存入外存中,相比后续CPU读写外存中的匿名页的速度,直接读写内存中ZramSwap的匿名页的速度可以提高很多,内存利用率也会提高。
可以理解的是,图1B所示的Zram Swap内存回收机制的原理示意图仅为示意,回收后的Zram Swap与系统内存的关系仅为逻辑关系示意图,本申请并不对Zram Swap与系统内存所占的空间的物理位置进行限制。
(3)性能:Zram Swap的内存回收机制的性能主要取决于所采用的压缩算法的性能指标。
参考表1,表1示例性示出压缩算法的性能指标。
表1
压缩算法 压缩比 压缩速率 解压速率
LZ4 3.0 780 1536
Zstd 5.0 326 723
如表1所示,压缩算法的性能指标包含压缩比、压缩速率、解压速率等。在表1给出的常用的两种压缩算法中,压缩速率高的LZ4算法,其压缩比较低,压缩比高的Zstd算法,其压缩速率较低。当Zram Swap内存回收机制采用的压缩算法的压缩比越大时,则压缩后的匿名页占用的Zram Swap的空间越小,可节省出更多的系统内存;当Zram Swap采用的压缩算法的压缩速率越快时,则说明匿名页回收速度越快,可以尽快腾出更多的系统内存。
Zram Swap内存回收机制为了兼顾压缩速率和压缩比,可以选择性能指标折中的算法,例如选择LZ4作为默认压缩算法,但是压缩后的匿名页依然占用了不少Zram Swap的空间。当电子设备处于多应用运行的场景,由于缺少系统内存资源,操作系统会清理后台应用所占的系统内存,这会导致下次运行该应用时需要重新加载,运行缓慢,影响用户体验。若为了节省更多空间,Zram Swap内存回收机制可以选择压缩比较高的算法,例如选择Zstd作为默认压缩算法。但是,因为该压缩算法的压缩速率较慢,这会导致匿名页回收效率低而不能及时腾出空间,进而使得应用程序长时间加载不出来,或运行缓慢,而且,压缩时还会长时间占用CPU,增加CPU的负担,导致用户体验进一步恶化。
为了解决上述问题,本申请提供了一种匿名页回收方法及电子设备。在该方法中,当电子设备检测到满足初步回收条件时,采用第一压缩算法对系统内存中的匿名页进行初步压缩后从系统内存中换出到Zram Swap中进行存储。之后,当电子设备检测到满足深度回收条件时,采用第二压缩算法对Zram Swap中的匿名页进行深度压缩后从Zram Swap中换出到深度压缩Swap中进行存储。
在本申请一种可实现方式中,电子设备采用第二压缩算法对Zram Swap中的匿名页进行深度压缩具体包括:电子设备可以根据CPU可用系统内存资源确定页面检测数量,然后按照页面检测数量对Zram Swap中存储的匿名页进行检测以获取目标匿名页(还可以称为第二匿名页),最后采用第二压缩算法对获取到的目标匿名页进行深度压缩。
在本申请实施例中,采用第一压缩算法对系统内存中的匿名页进行初步压缩后从系统内存中换出到Zram Swap中进行存储时,该被第一压缩算法压缩的系统内存中的匿名页还可以称为第一匿名页。
在本申请实施例中,初步回收条件还可以称为第一条件,深度回收条件还可以称为第二条件。Zram Swap还可以称为第一存储区,深度压缩Swap还可以称为第二存储区。
在本申请一种可实现方式中,电子设备按照获取的页面检测数量对Zram Swap中存储的匿名页进行检测以获取目标匿名页时,具体可以对匿名页中的冷页进行检测,将满足系统内存节省条件的冷页作为目标页。
在本申请一种可实现方式中,若电子设备的CPU后续需要访问Zram Swap中被第一压缩算法压缩的匿名页时,可以将待访问的匿名页解压后换回到系统内存中,以供CPU进行读写。若电子设备的CPU后续需要访问深度压缩Swap中被第二压缩算法压缩的匿名页时,可以将待访问的匿名页解压后换回到系统内存中,以供CPU进行读写。
在本申请一种可实现方式中,电子设备出了采用第一压缩算法的初步回收和采用第二压缩算法的深度回收外,还可以采用多级压缩算法的匿名页回收机制。例如,在深度回收之后,电子设备检测到满足第三条件时,可以采用第三压缩算法对第三匿名页进行匿名页回收。采用第三压缩算法进行匿名页回收后,系统内存中未被匿名页占用的大小增加了第十值,所述第十值等于所述第三匿名页在所述第二存储区中所占的大小减去经过所述第三压缩算法压缩后所占的大小。
在本申请实施例中,第一压缩算法、第二压缩算法和第三压缩算法直接互不相同。具体的,第一压缩算法的压缩比低于第二压缩算法的压缩比,并且,第一压缩算法的压缩速率高于第二压缩算法的压缩速率。第三算法的压缩比要高于第二压缩算法的压缩比,第二压缩算法的压缩速率高于第三压缩算法的压缩速率。
在本申请实施例中,深度压缩Swap也是在内存中划分的一部分空间。也就是说,内存可以被逻辑划分为系统内存、Zram Swap和深度压缩Swap三者。和Zram Swap类似,深度压缩Swap在内存中所占的最大空间由预先设置的固定上限值决定,深度压缩Swap在内存中所占的实际空间可以在最大空间范围内动态变化,具体可以由当前存储的深度压缩后的匿名页的大小决定。相应的,系统内存则包含内存中除去Zram Swap的实际空间、深度压缩Swap的实际空间以外的其他所有空间,系统内存所包含的所有空间都可以存储操作系统或其他正在运行中的程序的可执行程序,和存储用户及应用程序的数据等。总之,系统内存、ZramSwap和深度压缩Swap是承载在同一硬件(一个或多个RAM)上的三个相对独立的空间。
关于上文所述的,CPU可用系统内存资源、页面检测数量、目标匿名页和冷页的详细介绍可以参考后文的方法流程的描述,在此暂不赘述。
采用本申请提供的匿名页回收方法后,可实现以下技术效果:
构建了一种,先采用高压缩速率的压缩算法进行初步回收,后采用高压缩比的压缩算法进行深度回收的匿名页回收机制,这样,既保证了匿名页回收的时间效率、又提高了匿名页回收的空间效率,从时间维度和空间维度上提升系统内存回收效率,提高内存利用率,提升用户体验感。具体如下:
(1)当满足初步回收条件时,电子设备采用压缩速率较高的第一压缩算法进行初步回收系统内存。即能够快速的将系统内存中的匿名页回收到Zram Swap,从而及时节省出系统内存,以供CPU快速运行其他应用程序。由于初步回收耗时极短,避免给用户带来应用程序加载慢、运行慢等的不良体验,从而提升用户体验。
(2)当满足深度回收条件时,电子设备还会基于初步回收的目标匿名页采用压缩比较大的第二压缩算法进行深度回收。即,能够按照高压缩比将Zram Swap的目标页压缩为更小的数据后回收到深度压缩Swap,从而节省出更多的系统内存,以支撑供CPU实现多应用、大应用等场景。
基于上文对本申请涉及的术语介绍,以及本申请技术方案的综述,接下来介绍本申请涉及的软硬件架构。
电子设备可以是搭载iOS®、Android®、Microsoft®或者其它操作系统的便携式终端设备,例如手机、平板电脑、可穿戴设备、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence, AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备等等。本申请对电子设备的形态不作限制。
参考图2A,图2A示例性示出电子设备100的硬件结构示意图。
如图2A所示,电子设备100可以包括:处理器110,通用串行总线(universalserial bus,USB)接口120、外部存储器接口130、内部存储器140、外部存储器150、显示模块160、通信模块170、传感器模块180等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括通用串行总线USB接口120、外部存储器接口130等。
USB接口120是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口120可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
外部存储器接口130可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口130与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
内部存储器140可以包括一个或多个随机存取存储器(random access memory,RAM )。随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
随机存取存储器可以包括静态随机存储器(static random-access memory,SRAM)、动态随机存储器(dynamic random access memory, DRAM)、同步动态随机存储器(synchronous dynamic random access memory, SDRAM)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory, DDR SDRAM,例如第五代DDR SDRAM一般称为DDR5 SDRAM)等。
在本申请实施例中,内部存储器140对应的存储能力对应即前文所述的内存。该内存可被逻辑划分为系统内存、Zram Swap和深度压缩Swap,关于系统内存、Zram Swap和深度压缩Swap的之间的逻辑关系图可以参考前文的描述或图4。
当电子设备要运行某个应用程序时,该电子设备的CPU会将该应用程序的相关数据从外部存储器150中加载到内部存储器140中的系统内存中,此时内部存储器140中的系统内存对应的部分空间会存放应用进程的数据。也就是说运行应用程序时,电子设备的内部存储器140中的系统内存会包含文件页和匿名页。若电子设备检测到满足初步回收的条件,则将系统内存中的部分匿名页采用第一压缩算法进行压缩后换出到内部存储器140中的Zram Swap;若电子设备检测到满足深度回收的条件,则将Zram Swap中的部分或者全部匿名页采用第二压缩算法进行压缩后换出到内部存储器140中的深度压缩Swap中。
关于初步回收和深度回收的具体实现过程可以参考后文的方法实施例,在此暂不赘述。
外部存储器150可以包括一个或多个非易失性存储器(non-volatile memory,NVM)。非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,但是,需要将非易失性存储器中的内容提前加载到随机存取存储器中,才能用于处理器110直接进行读写。
在本申请实施例中,外部存储器150的存储能力即前文所述的外存。在本申请一些实施例中,外存还可以包括外部存储器接口130可以用于连接外部的非易失性存储器的存储能力。外部存储器150和外部存储器接口130可以用于连接外部的非易失性存储器存储的应用程序的数据、用户的数据可以提前加载到内部存储器140中,以供CPU直接访问。
非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。快闪存储器按照运作原理划分可以包括NOR FLASH、NAND FLASH、3D NAND FLASH等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,SLC)、多阶存储单元(multi-level cell,MLC)、三阶储存单元(triple-level cell, TLC)、四阶储存单元(quad-levelcell, QLC)等,按照存储规范划分可以包括通用闪存存储(英文:universal flashstorage,UFS)、嵌入式多媒体存储卡(embedded multi media Card,eMMC)等。
显示模块160可以包括显示屏。电子设备100可以通过GPU,显示屏,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。显示屏用于显示图像,视频等。显示屏包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD)。显示屏面板还可以采用有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flexlight-emitting diode,FLED),miniled,microLed,micro-oled,量子点发光二极管(quantum dot light emitting diodes,QLED)等制造。在一些实施例中,电子设备100可以包括1个或N个显示屏,N为大于1的正整数。
通信模块170可以包括移动通信模块、无线通信模块。移动通信模块可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
传感器模块180可以包括压力传感器、陀螺仪传感器、气压传感器、磁传感器、加速度传感器、距离传感器、接近光传感器、环境光传感器、指纹传感器、触摸传感器、骨传导传感器等。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android®系统为例,示例性说明电子设备100的软件结构。
参考图2B,图2B示例性示出本申请实施例提供的电子设备100的架构框图。
如图2B所示,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android®系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。例如可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层可以包括内存回收控制模块,内容提供器,资源管理器,窗口管理器,通知管理器,电话管理器等。
内存回收控制模块是用于检测是否满足初步回收条件和深度回收条件的。以及在满足初步回收条件时,则控制电子设备采用前文所述的Zram Swap内存回收机制(也称初步回收机制)对系统内存中的匿名页进行初步回收。以及在满足深度回收条件时,则向内核层中深度回收模块发送相应指令以控制深度回收模块进行深度回收。关于初步回收条件、深度回收条件、初步回收的具体实现过程和深度回收的具体实现过程可以参考后文的方法流程,这里不作详细赘述。
在本申请一些实施例中,内存回收控制模块还用于确定深度回收时的页面检测数量。该页面检测数量包含在内存回收控制模块向深度回收模块发送的指令中,具体可用于控制深度回收模块对Zram Swap中的匿名页/冷页进行检测时的页面数量,以获取目标匿名页。关于页面检测数量确定规则具体可以参考后文的方法流程,这里不作详细赘述。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
内核层是硬件和软件之间的层。内核层包含Zram模块,显示驱动,摄像头驱动等等。
Zram模块包括:Zram Swap、深度压缩Swap和深度回收模块。Zram Swap、深度压缩Swap则分别对应与将物理内部存储器140逻辑划分的两个虚拟空间。
Zram Swap是用于存储初步回收后的匿名页,初步回收的匿名页即电子设备采用Zram Swap内存回收机制时,通过第一压缩算法压缩后的匿名页。
深度压缩Swap是用于存储深度回收后的匿名页,深度回收的匿名页即电子设备采用深度回收机制时,通过第二压缩算法压缩后的匿名页。
深度回收模块用于接收应用程序框架层中的内存回收控制模块的下发的指令,并根据该指令在ZramSwap中检测以获取目标匿名页,然后采用第二压缩算法对目标匿名页进行深度压缩后换出到深度压缩Swap中进行存储。
硬件层是用于在内核层中对应驱动的控制下执行对应操作。硬件层包括但不限于RAM、显示屏、摄像头等等。
关于RAM的具体定义和作用可以参考前文对电子设备100硬件架构中的内部存储器140的描述,在此暂不赘述。
可以理解的是,在Android®系统中,内核层和应用程序框架层中还有AndroidRuntime包括核心库和虚拟机(图2B未示出)。其中,Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGLES),2D图形引擎(例如:SGL)等。
接下来,结合图3所示的方法流程来详细介绍本申请提供的匿名页回收方法。
如图3所示,该方法流程具体包括以下步骤:
阶段1(S101-S102):电子设备进行初步回收。
S101,电子设备检测到满足初步回收条件。
具体的,电子设备中应用程序框架层中的内存回收控制模块可以检测电子设备是否满足初步回收条件,或者,电子设备中的内核层中相应的初步内存回收控制模块也可以检测电子设备是否满足初步回收条件。
在本申请实施例中,初步回收的条件是指,电子设备的可用系统内存资源不足。例如当电子设备检测到系统内存资源低于预设数值(可称为第四值)(例如2千兆字节(Gigabyte,GB))时,则确定满足初步回收条件。本申请对初步回收条件不作具体限制,在一些示例中,初步回收条件还可以是可用系统内存资源低于3GB等等。或者,初步回收条件还可以是预先设置的初步回收周期的条件,该初步回收周期还可以称为第一周期,例如每隔固定(30分钟)时间执行一次初步回收,或者是电子设备运行的应用程序数量多于预设数量(可称为第五值)(例如5个),或者初步回收条件还可以是运行的应用程序为特定应用程序(还可以称为第一应用程序),例如该特定应用程序在运行时占用系统内存大于第六值等。
在本申请另一些实施例中,除了通过步骤S101所述的电子设备主动检测是否满足初步回收条件来触发后续的初步回收操作外,步骤S101也可以替换为,用户主动触发开启初步回收功能。具体的,以用户使用手机管家等的应用程序进行手机清理/手机加速为例,用户可以主动开启手机管家提供的初步回收的功能,以实现手机清理/手机加速。
S102,电子设备采用第一压缩算法将系统内存中的部分匿名页进行压缩并换出到Zram Swap中存储。
具体的,当电子设备中应用程序框架层中的内存回收控制模块检测到满足初步回收条件时,可以向内核层发送初步回收控制指令,控制内核层采用Zram Swap内存回收机制进行初步回收,即采用第一压缩算法对当前系统内存中部分或者全部匿名页进行压缩,然后释放匿名页在系统内存中占用的空间,并将压缩后的匿名页交换到Zram Swap中进行存储。或者,当内核层中相应的初步内存回收控制模块检测满足初步回收条件时,内核层可以直接采用Zram Swap内存回收机制进行初步回收。
第一压缩算法为压缩速率较高的算法,关于其详细描述可以参考前文的描述,在此暂不赘述。由于采用第一压缩算法可以将匿名页进行压缩,因此初步回收后采用第一压缩算法压缩后的匿名页在Zram Swap中所占空间小于未经压缩的匿名页在系统内存中所占的空间,这样便可以节省出部分系统内存,供CPU运行应用程序。
可见,为了避免因系统内存不足而影响应用程序的运行速度,所以本申请实施例中的初步回收主要考虑到系统内存回收的时效性,因此采用了第一压缩算法的压缩速率较高,以便快速将系统内存中的匿名页进行回收。但是,压缩速率高则压缩比相应的会比较低,所以对系统内存进行初步回收只是作为一种临时系统内存回收方案,为了保证系统内存回收不影响用户的其他体验的情况下,并且能够进一步解决系统内存不足的问题,本申请提供的内存回收方法还需对初步回收结果进行深度回收,具体见下文阶段2的描述。
阶段2(S103-S104):电子设备进行深度回收。
S103,电子设备检测到满足深度回收条件。
具体的,电子设备中应用程序框架层中的内存回收控制模块可以检测电子设备是否满足深度回收条件。
在本申请实施例中,深度回收条件具体包括:预先设置的深度回收周期的条件,例如深度回收周期是每隔第二值的时间执行一次深度回收,该第二值例如可以是(1小时);或者是,CPU的可用系统内存资源低于第七值时的条件,例如当系统内存资源低于500兆字节(Megabyte,MB)时,则确定满足深度回收条件。或者,深度回收条件还可以是电子设备运行的应用程序数量多于预设数量(还可称为第八值)(例如8个),或者深度回收条件还可以是前台运行的应用程序为特定应用程序(还可以称为第二应用程序),该特定应用程序在运行过程中占用的系统内存多于第九值等。例如一些大型游戏类应用程序,其在运行过程中通常会占用大于第九值的系统内存,在本申请中,第二值大于前文所述的第一值,第七值小于前文所述的第四值,第八值大于前文所述的第五值,第九值小于前文所述的第六值。总之,在本申请实施例中,初步回收条件与深度回收条件不同。
在本申请另一些实施例中,除了通过步骤S103所述的电子设备主动检测是否满足深度回收条件来触发后续的深度回收操作外,步骤S103也可以替换为,用户主动触发开启深度回收功能。具体的,以用户使用手机管家等的应用程序进行深度清理为例,用户可以主动开启手机管家提供的深度回收的功能,以实现深度清理/手机加速。
S104,电子设备采用第二压缩算法将Zram Swap中的目标匿名页进行压缩并换出到深度压缩Swap中存储。
具体的,当电子设备中应用程序框架层中的内存回收控制模块检测到满足深度回收条件时,可以向内核层中的深度回收模块发送深度回收控制指令,深度回收模块根据该指令将采用第二压缩算法将Zram Swap中的目标匿名页进行压缩,然后释放匿名页在ZramSwap中占用的空间,并将压缩后的匿名页交换到深度压缩Swap中进行存储。
由于第二压缩算法的压缩比高于第一压缩算法,因此深度回收后采用第二压缩算法压缩后的匿名页在深度压缩Swap中所占空间要小于采用第一压缩算法压缩后的匿名页在Zram Swap中所占空间,这样便可以节省出更多的系统内存,供CPU运行多应用程序或者大应用程序等。该多应用的数量例如可以多于预设的第十一值,该大应用又可以称为第三应用程序,该第三应用程序的在运行过程中,占用该系统内存的大小多于第十二值。
值得注意的是,电子设备执行步骤S104时,涉及到对Zram Swap中的目标匿名页进行深度回收。目标匿名页包括以下几种:
(1)在本申请一些示例中,电子设备获取的目标匿名页可以为Zram Swap中的部分或者全部匿名页。
具体的,电子设备内核层中的深度回收模块在接收到应用程序框架层中的内存回收控制模块发送的深度回收控制指令时,可以随机的/按照存储时间从前到后的顺序/按照占用空间从大到小的顺序,获取预设数量的匿名页。该预设数量可以对应全部或部分匿名页的数量。
其中,深度回收控制指令包括:用于指示进行深度回收的信息,和,用于指示目标匿名页获取规则的信息。该目标匿名页获取规则即上述随机的/按照存储时间从前到后的顺序/按照占用空间从大到小的顺序,获取预设数量的匿名页。
(2)在本申请另一些示例中,电子设备获取的目标匿名页可以为Zram Swap中的部分或者全部冷页。
具体的,电子设备内核层中的深度回收模块在接收到应用程序框架层中的内存回收控制模块发送的深度回收控制指令时,可以随机的/按照存储时间从前到后的顺序/按照占用空间从大到小的顺序,获取预设数量的冷页。该预设数量可以对应全部或部分冷页的数量。
其中,深度回收控制指令包括:用于指示进行深度回收的信息,和,用于指示目标匿名页获取规则的信息。该目标匿名页获取规则即上述随机的/按照存储时间从前到后的顺序/按照占用空间从大到小的顺序,获取预设数量的匿名页。
其中,冷页是指,在初步回收后深度回收前在Zram Swap的存储时间超过预设时间的匿名页,非冷页则相反,即在初步回收后深度回收前在Zram Swap的存储时间没有超过预设时间的匿名页。若CPU访问Zram Swap中的匿名页时,则需要将对应匿名页解压后换回到系统内存中,若CPU不访问Zram Swap中的匿名页,则匿名页会长期存储在Zram Swap进而成为冷页。
也就是说,冷页是CPU长期未访问的匿名页,因此可以认为冷页被CPU访问的可能性较低。所以只将冷页作为目标匿名页进行深度回收,而不对非冷页进行深度回收,可以避免CPU访问到非冷页时,需要较多的解压时间才能将深度压缩后的匿名页解压并换出到系统内存中,以供CPU访问。
(3)在本申请另一些示例中,电子设备获取的目标匿名页是,对匿名页/冷页进行系统内存节省条件检测,将满足系统内存节省条件的匿名页/冷页作为目标匿名页,将不满足系统内存节省条件的匿名页/冷页标记为已检测,避免下次深度回收时重复进行检测,浪费CPU资源。
具体的,电子设备内核层中的深度回收模块在接收到应用程序框架层中的内存回收控制模块发送的深度回收控制指令时,可以对Zram Swap中所有未被标记已检测的匿名页/冷页进行检测,将检测到的满足系统内存节省条件的匿名页/冷页作为目标匿名页。
其中,深度回收控制指令包括:用于指示进行深度回收的信息,和,用于指示进行系统内存节省条件检测的信息。
其中,系统内存节省条件具体为:采用第二压缩算法将匿名页/冷页压缩后,相比于,采用第一压缩算法将匿名页/冷页压缩后,能够节省出预设系统内存(还可称为第三值)的条件。本申请对该预设系统内存条件不做限定,该预设系统内存例如可以为512字节(Byte,B)。这样可以使得深度回收所能节省的空间更多,提升内存利用率,具体因为采用同一压缩算法压缩不同数据的匿名页时,能够节省的系统内存大小也不同,因此需要经过对匿名页的压缩来判断压缩后具体能够节省多少系统内存,对能够节省较多系统内存的匿名页进行回收。
由于在对匿名页/冷页进行检测是否满足系统内存节省条件时,会进行压缩处理,而压缩处理需要占用一定的CPU资源,因此,为了不影响前台应用的运行性能,本申请还可以根据CPU可用资源来限制页面检测数量,具体如下文第4种示例。
(4)在本申请另一些示例中,电子设备获取的目标匿名页是,在页面检测数量对应的匿名页/冷页中,满足上述系统内存节省条件的匿名页/冷页。
具体的,电子设备内核层中的深度回收模块在接收到应用程序框架层中的内存回收控制模块发送的深度回收控制指令时,可以在Zram Swap中未被检测过的所有匿名页/冷页中,随机的/按照存储时间从前到后的顺序/按照占用空间从大到小的顺序,选取的页面检测数量对应的匿名页/冷页,进行检测,将检测到的满足系统内存节省条件的匿名页/冷页作为目标匿名页,将不满足系统内存节省条件的匿名页/冷页进行标记,避免下次深度回收时重复进行检测,浪费CPU资源。
其中,深度回收控制指令包括:用于指示进行深度回收的信息,和,页面检测数量的信息。
其中,页面检测数量的确定规则可以是,电子设备内存回收控制模块检测到满足深度回收条件后可以根据当前CPU可用资源来确定页面检测数量,当CPU可用资源较多时,则页面检测数量越大;当CPU可用资源较少时,则页面检测数量越小。
可选的,CPU可用资源可以用当前CPU占用率来衡量。具体如下:
当CPU占用率低于L(例如20%),则说明CPU处于空闲状态可用资源较多,此时进行深度回收时不影响用户正常使用。以只对冷页进行系统内存节省条件检测为例,此时对应的页面检测数量可以等于Zram Swap中未被检测的所有冷页数,本申请实施例对此时的页面检测数量不作具体限制,例如此时的页面检测数量还可以为Zram Swap中未被检测的10个冷页数;若此时Zram Swap中未被检测的冷页数不足10,则页面检测数量等于所有冷页数;
当CPU占用率高于H(例如80%),则说明CPU处于繁忙状态可用资源较少,此时进行深度回收时将影响用户正常使用,因此可以不进行目标匿名页的检测,即此时对应的页面检测数量等于0,本申请实施例对此事的页面检测数量不作具体限制,例如此时的页面检测数量还可以为Zram Swap中未被检测的3个冷页数;若此时Zram Swap中未被检测的冷页数不足3,则页面检测数量等于所有冷页数;
当CPU占用率介于L与H之间(例如20%--80%),则说明CPU处于一般繁忙状态,则按照CPU占有率确定页面检测数量,以只对冷页进行系统内存节省条件检测为例,页面检测数量=
Figure 130119DEST_PATH_IMAGE001
,其中,N为zram swap中未检测的冷页数;M为当前CPU占用率;L为电子设备预设的值(例如20%);H为电子设备预设的值(例如80%)。
可见,考虑到系统内存回收的空间效率,因此在初步回收的基础上采用高压缩比的第二压缩算法进行深度回收,可以避免初步回收后节省的系统内存仍然有限,导致电子设备无法运行多应用程序或者大应用程序的问题。综合初步回收和深度回收,可以在不影响用户体验的前提现,节省更多的系统内存,供CPU使用,即,提升系统内存利用率,为用户带来无感知的系统内存回收体验。
阶段3(S105-S106):电子设备访问被压缩后的目标匿名页。
S105,当电子设备要访问Zram Swap中的匿名页时,将对应的匿名页解压后换出到系统内存中。
具体的,被初步回收的匿名页还有可能被电子设备的CPU再次访问,因此当检测到CPU要访问某个匿名页时,电子设备会根据待访问匿名页的索引地址获取对应的匿名页,并采用第一压缩算法将其解压后换回到系统内存中,以供CPU直接访问。
匿名页因为没有对应的在外存中存储的具体文件,所以为了避免不能再次被访问到,所以不能通过直接释放的方式来实现回收。但是,匿名页在内存中是有对应的索引地址,因此CPU可以通过待访问匿名页的索引地址重新访问到对应的匿名页。
S106,当电子设备要访问深度压缩Swap中的目标匿名页时,将对应的目标匿名页解压后换出到系统内存中。
具体的,被深度回收的目标匿名页还有可能被电子设备的CPU再次访问,因此当检测到CPU要访问某个目标匿名页时,电子设备会根据待访问目标匿名页的索引地址获取对应的目标匿名页,并采用第二压缩算法将其解压后换回到系统内存中,以供CPU直接访问。其中目标匿名页的名称在压缩后和压缩前保持一致。
本申请实施例对上述步骤S105、S106的顺序不作限制,也就是说,电子设备的CPU还可能先访问深度压缩Swap中的目标匿名页,后访问Zram Swap中的匿名页。
接下来参考图4所示的深度回收原理示意图,来详细说明本申请提供的匿名页回收方法的有益效果。
如图4所示,在初步回收之后且在深度回收之前,电子设备的内存被逻辑划分为系统内存和Zram Swap。系统内存中有部分空间被进程占用,Zram Swap存储的是采用第一压缩算法将原来系统内存中的匿名页进行压缩后的匿名页。由于Zram Swap采用的第一压缩算法的压缩比较低,因此Zram Swap仍然占用了内存中较多的空间,从而导致系统内存的可用空间较少。但是经过深度回收之后,电子设备的内存被逻辑划分为系统内存、Zram Swap和深度回收Swap。此时的Zram Swap占用的空间要小于深度回收之前的Zram Swap占用的空间,这是因为,深度回收时采用了第二压缩算法将Zram Swap中的部分匿名页(例如上文第四种方式获得的目标匿名页)进行压缩后换出到深度回收Swap进行存储,从而释放了他们在Zram Swap中的空间。并且,深度回收后Zram Swap和深度回收Swap两者所占的总空间也要比深度回收前Zram Swap和深度回收Swap两者所占的总空间小了图中所示节省系统内存对应的空间,这是因为深度回收采用的第二压缩算法的压缩比要大于初步压缩采用的第一压缩算法。图4中显示的节省系统内存对应的空间,即,统内存中未被匿名页占用的大小增加了第二值。
总之,采用本申请提供的匿名页回收方法后可以在不影响用户的正常体验下,进行内存回收,提高内存利用率,提升用户体验。
应理解,本申请提供的上述方法实施例中的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请还提供一种电子设备,该电子设备可以包括:存储器和处理器。其中,存储器可用于存储计算机程序;处理器可用于调用所述存储器中的计算机程序,以使得该电子设备执行上述任意一个实施例中的方法。
本申请还提供了一种芯片系统,所述芯片系统包括至少一个处理器,用于实现上述任意一个实施例中电子设备执行的方法中所涉及的功能。
在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存程序指令和数据,存储器位于处理器之内或处理器之外。
该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
可选地,该芯片系统中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请实施例并不限定。示例性地,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
示例性地,该芯片系统可以是现场可编程门阵列(field programmable gatearray,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processorunit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
本申请还提供一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当所述计算机程序被运行时,使得计算机执行上述任一个实施例中电子设备执行的方法。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)。当所述计算机程序被运行时,使得计算机执行上述任一个实施例中电子设备执行的方法。
本申请的各实施方式可以任意进行组合,以实现不同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如, DVD)、或者半导体介质(例如固态硬盘 SolidState Disk)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本发明技术方案的实施例而已,并非用于限定本发明的保护范围。凡根据本发明的揭露,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种匿名页回收方法,其特征在于,所述方法应用于电子设备,所述方法包括:
所述电子设备检测到第一条件,使用第一压缩算法对系统内存中存储的第一匿名页进行压缩,将压缩后的所述第一匿名页换出到第一存储区中存储;在使用所述第一压缩算法对所述第一匿名页压缩后,所述系统内存中未被匿名页占用的大小增加了第一值,所述第一值等于所述第一匿名页在所述系统内存中所占的大小减去经过所述第一压缩算法压缩后所占的大小;
所述电子设备检测到第二条件,使用第二压缩算法对所述第一匿名页中的第二匿名页进行压缩,将压缩后的所述第二匿名页换出到第二存储区中存储;所述第二匿名页为:全部的所述第一匿名页中,或者,第二数量的所述第一匿名页中,符合系统内存节省条件的匿名页/冷页;所述第二数量具体根据所述系统内存中未被占用的资源确定,当所述系统内存中未被占用的资源越少时,所述第二数量越多;所述系统内存节省条件为:采用所述第二压缩算法压缩后比压缩前所减少的数据量大于或等于第三值;所述冷页为在所述第一存储区中存储时间多于预设时长的所述第一匿名页;
在使用所述第二压缩算法对所述第二匿名页压缩后,所述系统内存中未被匿名页占用的大小增加了第二值,所述第二值等于所述第二匿名页在所述第一存储区中所占的大小减去经过所述第二压缩算法压缩后所占的大小;
其中,所述第二压缩算法的压缩速率小于所述第一压缩算法的速率,并且,所述第二压缩算法的压缩比大于所述第一压缩算法的压缩比。
2.根据权利要求1所述的方法,其特征在于,所述第一条件为以下任意一种:
满足第一周期,所述系统内存中未被占用的大小少于第四值,所述电子设备运行的应用程序数量多于第五值,或者所述电子设备运行第一应用程序时占用的所述系统内存的大小多于第六值。
3.根据权利要求1所述的方法,其特征在于,所述第二条件为以下任意一种:
满足第二周期,所述系统内存中未被占用的大小少于第七值,所述电子设备运行的应用程序数量多于第八值,或者所述电子设备运行第二应用程序时占用的所述系统内存的大小多于第九值。
4.根据权利要求1所述的方法,其特征在于,在所述电子设备使用所述第一压缩算法对所述第一匿名页压缩后,并且在所述电子设备使用所述第二压缩算法对所述第二匿名页压缩之前,所述方法还包括:
当所述电子设备的CPU访问所述第一存储区中的所述第一匿名页时,所述电子设备将待访问的所述第一匿名页经过第一压缩算法解压后从所述第一存储区换出到所述系统内存中,供所述CPU直接访问。
5.根据权利要求1所述的方法,其特征在于,在所述电子设备使用所述第二压缩算法对所述第二匿名页压缩之后,所述方法还包括:
当所述电子设备的CPU访问所述第二存储区中的所述第二匿名页时,所述电子设备将待访问的所述第二匿名页经过第二压缩算法解压后从所述第二存储区换出到所述系统内存中,供所述CPU直接访问。
6.根据权利要求1所述的方法,其特征在于,在所述电子设备使用所述第二压缩算法对所述第二匿名页压缩后,所述方法还包括:
所述电子设备检测到第三条件,使用第三压缩算法对所述第二匿名页中的第三匿名页进行压缩,将压缩后的所述第三匿名页换出到第三存储区中存储;在使用所述第三压缩算法对所述第三匿名页压缩后,所述系统内存中未被匿名页占用的大小增加了第十值,所述第十值等于所述第三匿名页在所述第二存储区中所占的大小减去经过所述第三压缩算法压缩后所占的大小;
所述第三压缩算法的压缩速率小于所述第二压缩算法的速率,并且,所述第三压缩算法的压缩比大于所述第二压缩算法的压缩比。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述系统内存中未被匿名页占用的空间,用于运行第三应用程序,或者用于同时运行多于第十一值的多个应用程序;其中,所述第三应用程序的在运行过程中,占用所述系统内存的大小多于第十二值。
8.一种芯片,所述芯片应用于电子设备,所述芯片包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行如权利要求1-7中任一项所述的方法。
9.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-7中任一项所述的方法。
10.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器;其中,所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-7中任一项所述的方法。
CN202210626983.4A 2022-06-02 2022-06-02 一种匿名页回收方法及电子设备 Active CN114741205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210626983.4A CN114741205B (zh) 2022-06-02 2022-06-02 一种匿名页回收方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210626983.4A CN114741205B (zh) 2022-06-02 2022-06-02 一种匿名页回收方法及电子设备

Publications (2)

Publication Number Publication Date
CN114741205A CN114741205A (zh) 2022-07-12
CN114741205B true CN114741205B (zh) 2022-11-11

Family

ID=82287897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210626983.4A Active CN114741205B (zh) 2022-06-02 2022-06-02 一种匿名页回收方法及电子设备

Country Status (1)

Country Link
CN (1) CN114741205B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949564A (zh) * 2020-08-13 2020-11-17 青岛海信传媒网络技术有限公司 一种内存交换方法及显示设备
WO2021243531A1 (zh) * 2020-06-02 2021-12-09 深圳市欢太科技有限公司 数据压缩方法、装置、电子设备及存储介质
CN114185494A (zh) * 2022-02-16 2022-03-15 荣耀终端有限公司 内存匿名页的处理方法、电子设备及可读存储介质
WO2022089452A1 (zh) * 2020-10-31 2022-05-05 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290848A (zh) * 2018-12-06 2020-06-16 中兴通讯股份有限公司 一种内存优化方法、终端和计算机可读存储介质
CN109814809B (zh) * 2019-01-14 2022-03-11 杭州宏杉科技股份有限公司 数据压缩方法及装置
KR102379176B1 (ko) * 2019-12-31 2022-03-28 성균관대학교산학협력단 메모리 스왑 방법 및 시스템
CN111683046B (zh) * 2020-04-29 2022-11-08 深圳赛安特技术服务有限公司 文件压缩以及获取的方法、装置、设备及存储介质
CN114116191B (zh) * 2021-06-24 2023-09-01 荣耀终端有限公司 内存冷页的处理方法及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021243531A1 (zh) * 2020-06-02 2021-12-09 深圳市欢太科技有限公司 数据压缩方法、装置、电子设备及存储介质
CN111949564A (zh) * 2020-08-13 2020-11-17 青岛海信传媒网络技术有限公司 一种内存交换方法及显示设备
WO2022089452A1 (zh) * 2020-10-31 2022-05-05 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质
CN114443268A (zh) * 2020-10-31 2022-05-06 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质
CN114185494A (zh) * 2022-02-16 2022-03-15 荣耀终端有限公司 内存匿名页的处理方法、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN114741205A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
CN111966492B (zh) 内存回收方法、装置、电子设备及计算机可读存储介质
US10169226B2 (en) Persistent content in nonvolatile memory
US20230418736A1 (en) Virtual Memory Management Method and Electronic Device
CN114185494B (zh) 内存匿名页的处理方法、电子设备及可读存储介质
US10037270B2 (en) Reducing memory commit charge when compressing memory
CN113590501A (zh) 一种数据存储方法及相关设备
WO2021218502A1 (zh) 一种页交换的方法、存储系统和电子设备
KR102314138B1 (ko) 모바일 장치 및 모바일 장치의 데이터 관리 방법
CN113590500A (zh) 一种内存管理方法及终端设备
US9324299B2 (en) Atlasing and virtual surfaces
US10073851B2 (en) Fast new file creation cache
CN117707639B (zh) 应用启动加速方法、电子设备及存储介质
CN116541180B (zh) 内存分配方法、电子设备及存储介质
CN114741205B (zh) 一种匿名页回收方法及电子设备
CN115981573B (zh) 数据管理方法、电子设备及计算机可读写存储介质
CN116185305A (zh) 业务数据存储方法、装置、计算机设备和存储介质
CN115981565A (zh) 存储器、数据存储方法及电子设备
CN116662222B (zh) 缓存管理方法及相关设备
US7073040B2 (en) Multilevel segmented memory
CN117369735B (zh) 数据存储方法、电子设备及存储介质
CN117369712B (zh) 垃圾回收的方法、页面存储的方法和电子设备
KR20200053052A (ko) 스토리지 장치 및 스토리지 장치로 전송되는 데이터를 관리하는 전자 장치
CN118444839A (zh) 数据处理方法、电子设备及存储介质
CN116954511A (zh) 存储处理方法和电子设备、可读存储介质
CN113778624B (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
TR01 Transfer of patent right

Effective date of registration: 20230916

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New Area, Pudong New Area, Shanghai

Patentee after: Shanghai Glory Smart Technology Development Co.,Ltd.

Address before: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040

Patentee before: Honor Device Co.,Ltd.

TR01 Transfer of patent right