CN109086141A - 内存管理方法和装置以及计算机可读存储介质 - Google Patents
内存管理方法和装置以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109086141A CN109086141A CN201811106286.6A CN201811106286A CN109086141A CN 109086141 A CN109086141 A CN 109086141A CN 201811106286 A CN201811106286 A CN 201811106286A CN 109086141 A CN109086141 A CN 109086141A
- Authority
- CN
- China
- Prior art keywords
- memory
- chained list
- data
- metadata
- management
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种内存管理方法和装置以及计算机可读存储介质,涉及计算机技术领域。内存管理方法包括:分别读取内存数据最近最少使用LRU链表和内存元数据LRU链表的统计信息,其中,内存数据LRU链表用于管理存储文件数据的内存页,内存元数据LRU链表用于管理存储文件系统元数据的内存页;响应于内存回收被触发,根据读取的统计信息确定当前的内存状态;根据当前的内存状态进行内存回收。从而,可以使得内存中的文件数据、文件系统元数据可以清楚地被区分和管理,从而提高了内存命中率,提高了文件系统读取元数据和目录项时的效率,减少了磁盘寻道时间,提高了文件系统的性能。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种内存管理方法和装置以及计算机可读存储介质。
背景技术
操作系统Linux为了提高文件系统的访问速度,利用随机存取存储器(RandomAccess Memory,简称:RAM)实现了页高速缓冲存储器(Page Cache)功能,以将文件的元数据和数据存储在内存中。通常,用于存储元数据和目录项的内存为Buffer(缓冲),用于存储数据的内存为Cache(缓存)。Page Cache所使用的内存被计入可用内存中,因此在内存不足时可以回收部分Page Cache使用的内存。当回收的Page Cache被再次访问时,文件系统又需要从磁盘重新加载。
发明内容
发明人对相关技术进行分析后发现,当前主流的机械硬盘容量已经达到10TB,一台服务器会配置多个机械硬盘。以12盘位服务器为例,基于如此容量的磁盘创建第四代扩展文件系统(Fourth extended file system,简称:Ext4),预期使用80%的磁盘空间,即文件数据占用的磁盘空间约为100TB,文件的元数据及目录项所占用的磁盘空间约达到百GB。而RAM的空间一般为几十到几百GB。在大规模分布式存储系统中,文件访问的热点不明显,大部分时候呈现随机访问的状态,Page Cache的命中率非常不乐观。
因此,现有的内存管理方法的内存命中率较低。
本发明实施例所要解决的一个技术问题是:如何提高内存命中率。
根据本发明一些实施例的第一个方面,提供一种内存管理方法,包括:分别读取内存数据最近最少使用LRU链表和内存元数据LRU链表的统计信息,其中,内存数据LRU链表用于管理存储文件数据的内存页,内存元数据LRU链表用于管理存储文件系统元数据的内存页;响应于内存回收被触发,根据读取的统计信息确定当前的内存状态;根据当前的内存状态进行内存回收。
在一些实施例中,内存数据LRU链表包括不活跃数据链表和活跃数据链表,内存元数据LRU链表包括不活跃元数据链表和活跃元数据链表。
在一些实施例中,根据当前的内存状态进行内存回收包括:响应于数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量,按照预设比例分别回收内存中的文件数据和文件系统元数据。
在一些实施例中,根据当前的内存状态进行内存回收包括:响应于数据LRU链表中的不活跃数据链表管理的内存页数量多于活跃数据链表管理的内存页数量,对内存中的文件数据进行回收。
在一些实施例中,根据当前的内存状态进行内存回收包括:响应于文件系统元数据所占用的内存超过预设比例,对内存中的文件系统元数据进行回收。
在一些实施例中,根据读取的统计信息确定当前的内存状态包括:响应于文件系统元数据所占用的内存不超过预设比例,判断数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。
根据本发明一些实施例的第二个方面,提供一种内存管理装置,包括:存储信息读取模块,被配置为分别读取内存数据最近最少使用LRU链表和内存元数据LRU链表中的统计信息,其中,内存数据LRU链表用于管理存储文件数据的内存页,内存元数据LRU链表用于管理存储文件系统元数据的内存页;内存状态确定模块,被配置为响应于内存回收被触发,根据读取的统计信息确定当前的内存状态;管理模块,被配置为根据当前的内存状态进行内存回收。
在一些实施例中,内存数据LRU链表包括不活跃数据链表和活跃数据链表,内存元数据LRU链表包括不活跃元数据链表和活跃元数据链表。
在一些实施例中,管理模块进一步被配置为响应于数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量,按照预设比例分别回收内存中的文件数据和文件系统元数据。
在一些实施例中,管理模块进一步被配置为响应于数据LRU链表中的不活跃数据链表管理的内存页数量多于活跃数据链表管理的内存页数量,对内存中的文件数据进行回收。
在一些实施例中,管理模块进一步被配置为响应于文件系统元数据所占用的内存超过预设比例,对内存中的文件系统元数据进行回收。
在一些实施例中,内存状态确定模块进一步被配置为响应于文件系统元数据所占用的内存不超过预设比例,判断数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。
根据本发明一些实施例的第三个方面,提供一种内存管理装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行前述任意一种内存管理方法。
根据本发明一些实施例的第四个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意一种内存管理方法。
上述发明中的一些实施例具有如下优点或有益效果:本发明的实施例可以将文件数据和文件系统元数据分别进行缓存和管理,并且在进行内存回收时根据当前的内存状态进行内存管理,从而可以使得内存中的文件数据、文件系统元数据可以清楚地被区分和管理,从而提高了内存命中率,提高了文件系统读取元数据和目录项时的效率,减少了磁盘寻道时间,提高了文件系统的性能。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明一些实施例的内存管理方法的流程示意图。
图2A为根据本发明另一些实施例的内存管理方法的流程示意图。
图2B为根据本发明又一些实施例的内存管理方法的流程示意图。
图3为根据本发明再一些实施例的内存管理方法的流程示意图。
图4为根据本发明再一些实施例的内存管理方法的流程示意图。
图5为根据本发明一些实施例的内存管理装置的结构示意图。
图6为根据本发明另一些实施例的内存管理装置的结构示意图。
图7为根据本发明又一些实施例的内存管理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
发明人对现有技术进行分析后发现,在现有技术中,因为Buffer与Cache使用相同的LRU(Least Recently Used,最近最少使用)链表及回收策略,而Cache中缓存的文件数据的内存页远远多于Buffer中缓存的文件系统元数据和目录项的内存页,因此Page Cache中大部分为数据缓存,元数据所占的比例非常有限,导致Buffer命中率极低。分布式存储的数据管理节点往往需要频繁统计目录占用的磁盘空间、扫描所有目录及文件等,这些操作需要访问文件的目录项和元数据。因此可能出现文件被频繁访问但未命中Cache,频繁需要从磁盘加载数据的情况。由于Ext4的元数据及数据并非连续存储,因此在读写文件时,先读取小块元数据,再读写数据,加剧磁头抖动,增加了磁头寻道时间,严重影响磁盘吞吐率。在大量文件同时读写时,文件系统的整体性能较差。
因此,发明人提出了将文件数据和文件系统元数据分别采用不同的LRU链表进行存储的方法,实现了对文件数据和文件系统元数据的可控管理。图1为根据本发明一些实施例的内存管理方法的流程示意图。如图1所示,该实施例的内存管理方法包括步骤S102~S106。
在步骤S102中,分别读取内存数据LRU链表和内存元数据LRU链表的统计信息。内存数据LRU链表用于管理存储文件数据的内存页,文件数据例如包括普通文件中的实际数据。内存元数据LRU链表用于管理存储文件系统元数据的内存页,文件系统元数据是用于描述一个文件的特征的数据,例如可以包括访问权限、文件拥有者、文件数据块的分布信息、目录项信息等等。
读取的统计信息例如可以包括每个链表中的数据量、文件数据或文件系统元数据当前在内存中的占比等等。
在相关技术中,文件数据和文件系统元数据不加以区分,而是均采用同一个LRU链表进行管理。本发明的实施例将内存中的Buffer和Cache分别采用不同的LRU链表进行管理,从而可以分别监控文件数据和文件系统元数据的存储信息。
在一些实施例中,内存数据LRU链表包括不活跃数据链表和活跃数据链表,内存元数据LRU链表包括不活跃元数据链表和活跃元数据链表。例如,可以采用File Active List管理活跃的文件数据的内存页,采用File Inactive List管理不活跃的文件数据的内存页,采用Buffer Active List管理活跃的文件系统元数据的内存页,采用Buffer InactiveList管理不活跃的文件系统元数据的内存页。
在步骤S104中,响应于内存回收被触发,根据读取的统计信息确定当前的内存状态。
内存回收可以在多种情况下被触发。例如,系统内核线程可以周期性地检查内存水位,如果水位低于阈值,则触发内存回收;或者,在申请内存时,如果可用内存不足,也会触发内存回收。
内存状态可以包括一种或多种,例如可以为内存中文件数据或文件系统元数据中的活跃数据和不活跃数据的比较结果、文件数据或文件系统元数据在内存中的占比等等。
在步骤S106中,根据当前的内存状态进行内存回收。由于文件数据和文件系统元数据的统计信息可以分别被读取,从而可以根据需要对文件数据、文件系统元数据分别进行内存回收。
通过上述实施例的方法,可以将文件数据和文件系统元数据分别进行缓存和管理,并且在进行内存回收时根据当前的内存状态进行内存管理,从而可以使得内存中的文件数据、文件系统元数据可以清楚地被区分和管理,从而提高了内存命中率,提高了文件系统读取元数据和目录项时的效率,减少了磁盘寻道时间,提高了文件系统的性能。
在一些实施例中,可以根据活跃数据和不活跃数据的比较结果进行内存管理。下面参考图2A和2B描述本发明内存管理方法的实施例。
图2A为根据本发明另一些实施例的内存管理方法的流程示意图。如图2A所示,该实施例的内存管理方法包括步骤S202~S206。
在步骤S202中,分别读取内存数据LRU链表和内存元数据LRU链表的统计信息。
在步骤S204中,响应于内存回收被触发,确定是否数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量。
在步骤S206中,响应于数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量,按照预设比例分别回收内存中的文件数据和文件系统元数据。
在一些实施例中,用户可以通过接口设置文件数据和文件系统元数据的回收比例。例如,用户可以选择0~100的数值区间进行设置,0表示仅回收文件系统元数据,60表示回收的内存中60%为文件数据、40%为文件系统元数据。
当数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量时,说明内存中存储的大部分文件数据是活跃的。通过按照预设比例分别回收内存中的文件数据和文件系统元数据,可以提高被回收的内存中不活跃的数据、元数据的占比,从而提高了内存命中率。
下面参考图2B描述本发明内存管理方法的实施例。
图2B为根据本发明又一些实施例的内存管理方法的流程示意图。如图2B所示,该实施例的内存管理方法包括步骤S212~S216。
在步骤S212中,分别读取内存数据LRU链表和内存元数据LRU链表中的统计信息。
在步骤S214中,响应于内存回收被触发,确定是否数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量。
在步骤S216中,响应于数据LRU链表中的不活跃数据链表管理的内存页数量多于活跃数据链表管理的内存页数量,对内存中的文件数据进行回收。
当文件数据中的不活跃数据较多时,可以优先对文件数据进行回收,以提高内存中文件数据的命中率。
图2A和2B的实施例可以结合起来使用,也可以分别结合其他的管理方法实施,这里不再赘述。
在一些实施例中,还可以根据文件系统元数据占用的内存比例进行内存管理。下面参考图3描述本发明内存管理方法的实施例。
图3为根据本发明再一些实施例的内存管理方法的流程示意图。如图3所示,该实施例的内存管理方法包括步骤S302~S306。
在步骤S302中,分别读取内存数据LRU链表和内存元数据LRU链表的统计信息。
在步骤S304中,响应于内存回收被触发,判断文件系统元数据所占用的内存是否超过预设比例。
在一些实施例中,用户可以通过接口设置该预设比例。
在步骤S306,响应于文件系统元数据所占用的内存超过预设比例,对内存中的文件系统元数据进行回收。
从而,可以在文件系统元数据占用内存较多时及时回收,避免文件系统元数据占用内存过多影响文件数据的命中率,从而提高了文件系统的性能。
该实施例的方法还可以包括步骤S308。
在步骤S308中,响应于文件系统元数据所占用的内存不超过预设比例,判断数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。从而,可以根据判断结果继续进行相应的处理。下面结合图4进行进一步的描述。
图4为根据本发明再一些实施例的内存管理方法的流程示意图。如图4所示,该实施例的内存管理方法包括步骤S402~S412。
在步骤S402中,分别读取内存数据LRU链表和内存元数据LRU链表的统计信息。
在步骤S404中,响应于内存回收被触发,判断文件系统元数据所占用的内存是否超过预设比例。如果是,执行步骤S406;如果不是,执行步骤S408。
在步骤S406中,对内存中的文件系统元数据进行回收。
在步骤S408中,判断内存比例回收条件为数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。如果是,执行步骤S410;如果不是,执行步骤S412。
在步骤S410中,对内存中的文件数据进行回收。
在步骤S412中,按照预设比例分别回收内存中的文件数据和文件系统元数据。
通过上述实施例的方法,可以首先基于文件系统元数据所占用的内存比例进行判断。如果内存中的文件系统元数据过多,可以优先对文件系统元数据进行回收以提高文件数据的命中率,否则可以根据文件数据的存储信息继续判断。如果文件数据中的活跃数据较多,则可以按照比例回收文件数据和文件系统元数据,从而可以尽量回收不活跃的文件数据和文件系统元数据,提高内存命中率。如果文件数据中的不活跃数据较多,则可以优先回收文件数据,以提高文件数据的命中率。
下面参考图5描述本发明内存管理装置的实施例。
图5为根据本发明一些实施例的内存管理装置的结构示意图。如图5所示,该实施例的内存管理装置50包括:存储信息读取模块510,被配置为分别读取内存数据最近最少使用LRU链表和内存元数据LRU链表的统计信息,其中,内存数据LRU链表用于管理存储文件数据的内存页,内存元数据LRU链表用于管理存储文件系统元数据的内存页;内存状态确定模块520,被配置为响应于内存回收被触发,根据读取的统计信息确定当前的内存状态;管理模块530,被配置为根据当前的内存状态进行内存回收。
在一些实施例中,内存数据LRU链表包括不活跃数据链表和活跃数据链表,内存元数据LRU链表包括不活跃元数据链表和活跃元数据链表。
在一些实施例中,管理模块530进一步被配置为响应于数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量,按照预设比例分别回收内存中的文件数据和文件系统元数据。
在一些实施例中,管理模块530进一步被配置为响应于数据LRU链表中的不活跃数据链表管理的内存页数量多于活跃数据链表管理的内存页数量,对内存中的文件数据进行回收。
在一些实施例中,管理模块530进一步被配置为响应于文件系统元数据所占用的内存超过预设比例,对内存中的文件系统元数据进行回收。
在一些实施例中,内存状态确定模块520进一步被配置为响应于文件系统元数据所占用的内存不超过预设比例,判断数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。
图6为根据本发明另一些实施例的内存管理装置的结构示意图。如图6所示,该实施例的内存管理装置60包括:存储器610以及耦接至该存储器610的处理器620,处理器620被配置为基于存储在存储器610中的指令,执行前述任意一个实施例中的内存管理方法。
其中,存储器610例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
图7为根据本发明又一些实施例的内存管理装置的结构示意图。如图7所示,该实施例的内存管理装置70包括:存储器710以及处理器720,还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730,740,750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口。存储接口750为SD卡、U盘等外置存储设备提供连接接口。
本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种内存管理方法。
本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种内存管理方法,包括:
分别读取内存数据最近最少使用LRU链表和内存元数据LRU链表的统计信息,其中,所述内存数据LRU链表用于管理存储文件数据的内存页,所述内存元数据LRU链表用于管理存储文件系统元数据的内存页;
响应于内存回收被触发,根据读取的统计信息确定当前的内存状态;
根据当前的内存状态进行内存回收。
2.根据权利要求1所述的内存管理方法,其中,所述内存数据LRU链表包括不活跃数据链表和活跃数据链表,所述内存元数据LRU链表包括不活跃元数据链表和活跃元数据链表。
3.根据权利要求2所述的内存管理方法,其中,所述根据当前的内存状态进行内存回收包括:
响应于数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量,按照预设比例分别回收内存中的文件数据和文件系统元数据。
4.根据权利要求2所述的内存管理方法,其中,所述根据当前的内存状态进行内存回收包括:
响应于数据LRU链表中的不活跃数据链表管理的内存页数量多于活跃数据链表管理的内存页数量,对内存中的文件数据进行回收。
5.根据权利要求1所述的内存管理方法,其中,所述根据当前的内存状态进行内存回收包括:
响应于文件系统元数据所占用的内存超过预设比例,对内存中的文件系统元数据进行回收。
6.根据权利要求1~5中任一项所述的内存管理方法,其中,所述根据读取的统计信息确定当前的内存状态包括:
响应于文件系统元数据所占用的内存不超过所述预设比例,判断数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。
7.一种内存管理装置,包括:
存储信息读取模块,被配置为分别读取内存数据最近最少使用LRU链表和内存元数据LRU链表的统计信息,其中,所述内存数据LRU链表用于管理存储文件数据的内存页,所述内存元数据LRU链表用于管理存储文件系统元数据的内存页;
内存状态确定模块,被配置为响应于内存回收被触发,根据读取的统计信息确定当前的内存状态;
管理模块,被配置为根据当前的内存状态进行内存回收。
8.根据权利要求7所述的内存管理装置,其中,所述内存数据LRU链表包括不活跃数据链表和活跃数据链表,所述内存元数据LRU链表包括不活跃元数据链表和活跃元数据链表。
9.根据权利要求8所述的内存管理装置,其中,所述管理模块进一步被配置为响应于数据LRU链表中的不活跃数据链表管理的内存页数量不多于活跃数据链表管理的内存页数量,按照预设比例分别回收内存中的文件数据和文件系统元数据。
10.根据权利要求8所述的内存管理装置,其中,所述管理模块进一步被配置为响应于数据LRU链表中的不活跃数据链表管理的内存页数量多于活跃数据链表管理的内存页数量,对内存中的文件数据进行回收。
11.根据权利要求7所述的内存管理装置,其中,所述管理模块进一步被配置为响应于文件系统元数据所占用的内存超过预设比例,对内存中的文件系统元数据进行回收。
12.根据权利要求7~11中任一项所述的内存管理装置,其中,所述内存状态确定模块进一步被配置为响应于文件系统元数据所占用的内存不超过所述预设比例,判断数据LRU链表中的不活跃数据链表管理的内存页数量是否多于活跃数据链表管理的内存页数量。
13.一种内存管理装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1~6中任一项所述的内存管理方法。
14.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1~6中任一项所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811106286.6A CN109086141B (zh) | 2018-09-19 | 2018-09-19 | 内存管理方法和装置以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811106286.6A CN109086141B (zh) | 2018-09-19 | 2018-09-19 | 内存管理方法和装置以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109086141A true CN109086141A (zh) | 2018-12-25 |
CN109086141B CN109086141B (zh) | 2021-01-26 |
Family
ID=64842255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811106286.6A Active CN109086141B (zh) | 2018-09-19 | 2018-09-19 | 内存管理方法和装置以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086141B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110555001A (zh) * | 2019-09-05 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及介质 |
CN110727605A (zh) * | 2019-09-27 | 2020-01-24 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN111143290A (zh) * | 2019-12-27 | 2020-05-12 | 浪潮电子信息产业股份有限公司 | 一种内存管理方法、系统、设备及计算机可读存储介质 |
WO2021254200A1 (zh) * | 2020-06-16 | 2021-12-23 | 北京紫光展锐通信技术有限公司 | 操作系统内存回收的页颠簸保护方法及装置 |
CN115328856A (zh) * | 2022-07-05 | 2022-11-11 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080195807A1 (en) * | 2007-02-09 | 2008-08-14 | International Business Machines Corporation | Destage Management of Redundant Data Copies |
CN104077242A (zh) * | 2013-03-25 | 2014-10-01 | 华为技术有限公司 | 一种缓存管理方法和装置 |
CN104239233A (zh) * | 2014-09-19 | 2014-12-24 | 华为技术有限公司 | 缓存管理方法、缓存管理装置和缓存管理设备 |
CN107992434A (zh) * | 2017-11-24 | 2018-05-04 | 郑州云海信息技术有限公司 | 用于分布式分层存储系统的下刷方法、装置及存储介质 |
-
2018
- 2018-09-19 CN CN201811106286.6A patent/CN109086141B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080195807A1 (en) * | 2007-02-09 | 2008-08-14 | International Business Machines Corporation | Destage Management of Redundant Data Copies |
CN104077242A (zh) * | 2013-03-25 | 2014-10-01 | 华为技术有限公司 | 一种缓存管理方法和装置 |
CN104239233A (zh) * | 2014-09-19 | 2014-12-24 | 华为技术有限公司 | 缓存管理方法、缓存管理装置和缓存管理设备 |
CN107992434A (zh) * | 2017-11-24 | 2018-05-04 | 郑州云海信息技术有限公司 | 用于分布式分层存储系统的下刷方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
代玲莉 等: "《Linux内核分析与实例应用》", 31 December 2002, 国防工业出版社 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110555001A (zh) * | 2019-09-05 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及介质 |
CN110727605A (zh) * | 2019-09-27 | 2020-01-24 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN110727605B (zh) * | 2019-09-27 | 2022-06-21 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN111143290A (zh) * | 2019-12-27 | 2020-05-12 | 浪潮电子信息产业股份有限公司 | 一种内存管理方法、系统、设备及计算机可读存储介质 |
WO2021254200A1 (zh) * | 2020-06-16 | 2021-12-23 | 北京紫光展锐通信技术有限公司 | 操作系统内存回收的页颠簸保护方法及装置 |
CN115328856A (zh) * | 2022-07-05 | 2022-11-11 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
CN115328856B (zh) * | 2022-07-05 | 2023-05-09 | 荣耀终端有限公司 | 一种文件页管理的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109086141B (zh) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086141A (zh) | 内存管理方法和装置以及计算机可读存储介质 | |
CN108009008B (zh) | 数据处理方法和系统、电子设备 | |
CN104850510B (zh) | 用于插入缓存块的方法和系统 | |
CN101189584B (zh) | 内存页面管理 | |
CN108139902A (zh) | 用于提供混合模式来访问ssd驱动器的方法和装置 | |
CN105224528B (zh) | 基于图计算的大数据处理方法和装置 | |
US8443149B2 (en) | Evicting data from a cache via a batch file | |
US9959054B1 (en) | Log cleaning and tiering in a log-based data storage system | |
Tai et al. | Improving flash resource utilization at minimal management cost in virtualized flash-based storage systems | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
CN105917318A (zh) | 用于实现基于ssd的i/o高速缓存的系统和方法 | |
CN104320448B (zh) | 一种基于大数据的计算设备的缓存与预取加速方法和装置 | |
US10725907B2 (en) | Information processing apparatus for specifying data region of garbage collection, information processing system and information processing method | |
CN109684231A (zh) | 用于识别固态盘中的热数据和流的系统及方法 | |
WO2016115957A1 (zh) | 一种面向用户与应用的计算机与智能设备加速方法和装置 | |
CN105117351A (zh) | 向缓存写入数据的方法及装置 | |
US20160306665A1 (en) | Managing resources based on an application's historic information | |
CN107315694B (zh) | 一种缓存一致性管理方法及节点控制器 | |
CN102999444A (zh) | 一种用于替换缓存模块中数据的方法及装置 | |
CN111737168A (zh) | 一种缓存系统、缓存处理方法、装置、设备及介质 | |
Fevgas et al. | LB-Grid: An SSD efficient grid file | |
CN106201918A (zh) | 一种基于大数据量和大规模缓存快速释放的方法和系统 | |
KR101940382B1 (ko) | 페이지의 프리페칭 방법 및 장치 | |
CN108829345A (zh) | 日志文件的数据处理方法和终端设备 | |
CN105359116B (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 |