CN114595066A - 一种预留内存的处理方法、装置、电子设备和介质 - Google Patents
一种预留内存的处理方法、装置、电子设备和介质 Download PDFInfo
- Publication number
- CN114595066A CN114595066A CN202210265475.8A CN202210265475A CN114595066A CN 114595066 A CN114595066 A CN 114595066A CN 202210265475 A CN202210265475 A CN 202210265475A CN 114595066 A CN114595066 A CN 114595066A
- Authority
- CN
- China
- Prior art keywords
- information
- array
- slice
- deleted
- item information
- 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.)
- Pending
Links
Images
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请实施例提供了一种预留内存的处理方法、一种预留内存的处理装置、电子设备和介质,所述方法包括获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息;将所述特征信息添加至与所述当前热度状态对应的乱序数组。本申请实施例可以采用分段的形式记录处于相同热度状态的连续内存切片,避免针对内存切片一一记录热度状态,减少了监测内存切片热度状态的数据开销。
Description
技术领域
本申请涉及预留内存的处理技术领域,特别是涉及一种预留内存的处理方法、一种预留内存的处理装置、电子设备和介质。
背景技术
虚拟化场景下宿主机内存分配架构中,为了减少元数据开销,宿主机的大多数内存都被预留出来,以便将来分配给虚拟机使用。这部分内存,对于宿主机内核不可用,内核原来功能无法监测这部分内存的冷热情况。
在一种现有技术中,使用了64字节的页结构来链接每个4千字节大小的冷热内存页。虽然页结构承担很多功能,不仅仅用于冷热记录,但是这种结构元数据的开销非常大,而且对于预留内存对于传统宿主机操作系统不可见,这种结构也无法用于预留内存的冷热情况记录。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种预留内存的处理方法和相应的一种预留内存的处理装置、电子设备和介质。
为了解决上述问题,本申请实施例公开了一种预留内存的处理方法,所述方法包括:
获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;
确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息;
将所述特征信息添加至与所述当前热度状态对应的乱序数组。
可选地,所述特征信息还包括与所述连续内存切片对应的进程信息;所述乱序数组由项信息组成;所述将所述特征信息添加至与所述当前热度状态对应的乱序数组包括:
按照所述当前热度状态在所述多个乱序数组中确定目标乱序数组;
基于所述特征信息添加至所在乱序数组的顺序,确定顺序信息;
依据所述特征信息和所述顺序信息,生成与所述连续内存切片对应的目标项信息;
将所述目标项信息存储至所述目标乱序数组中。
可选地,所述方法还包括:
响应于获取到的乱序数组操作指令时,确定所述乱序数组处理指令对应的待处理对象;
按照所述乱序数组操作指令对所述待处理对象进行相应处理;
其中,所述乱序数组操作指令包括查指令、增指令、删指令、扫描指令。
可选地,当所述数据操作指令为查指令时,所述待处理对象包括待查切片序号和待查进程信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定待遍历乱序数组;
按照预设顺序遍历所述待遍历乱序数组;
针对一个所述待遍历乱序数组,按照所述待遍历乱序数组中包含的顺序信息遍历其包含的项信息;
在检测到与所述待查切片序号和所述待查进程信息匹配的第一目标项信息时,输出所述第一目标项信息。
可选地,所述预留内存对应于多个非一致内存访问NUMA节点,一个所述NUMA节点对应于一个所述预设数组集;所述确定待遍历乱序数组包括:
确定与所述目标切片序号对应的目标NUMA节点;
确定与所述目标NUMA节点的数组集为待遍历乱序数组。
可选地,当所述数据操作指令为增指令时,所述待处理对象包括待增切片序号、待增大小信息、待增进程信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述数据操作指令对应的待增乱序数组;
按照所述待增乱序数组记载的顺序信息提取空闲项信息;
采用所述空闲项信息记录所述待增切片序号、所述待增大小信息、所述待增进程信息;
判断所述增指令是否包含第一位置信息;
若是,则按照所述第一位置信息更新所述待增乱序数组的顺序信息;
若否,则按照所述待增加乱序数组记载的历史插入位置更新所述待增乱序数组的顺序信息。
可选地,所述按照所述乱序数组操作指令对所述待处理对象进行相应处理还包括:
若所述待增大小信息为预设值,则遍历所述待增乱序数组中的项信息;
判断所述待增乱序数组中是否存在于所述待增切片序号相邻且与所述待增进程信息相同的第二目标项信息;
若是,则按照所述待增切片序号、待增大小信息更新所述第二目标项信息;
若否,则执行所述按照所述待增数组记载的顺序信息提取空闲项信息。
可选地,当所述数据操作指令为删指令时,所述待处理对象包括待删项信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述待删项信息对应的待删乱序数组;
若所述待删项信息对应所述待删乱序数组记录的顺序信息的末位,则按照所述待删项信息之前的项信息更新所述顺序信息;
若所述待删项信息不对应所述待删乱序数组记录的顺序信息的首位或末位,则将所述待删项信息的前一个项信息作为所述待删项信息的后一个项信息的相邻项信息,以更新所述顺序信息;
删除所述待删项信息。
可选地,所述乱序数组纪录有老化信息,所述老化信息用于指向与所述顺序信息中的首位对应的项信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理还包括:
若所述待删项信息对应所述待删乱序数组记录的顺序信息的首位,则按照所述顺序信息中所述待删项信息的下一个项信息更新所述老化信息。
可选地,当所述数据操作指令为删指令时,所述待处理对象包括第二位置信息、待删切片序号、待删大小信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述第二位置信息对应的第三目标项信息;
在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息小于所述第三目标项信息的大小信息时,按照所述待删大小信息更新所述第三目标项信息的大小信息,并更新所述第三目标项信息的切片序号;
在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息不小于所述第三目标项信息的大小信息时,删除所述第三目标项信息;
在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和不小于第三目标项信息的切片序号与大小信息之和时,按照所述待删大小信息更新所述第三目标项信息的大小信息;
在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和小于第三目标项信息的切片序号与大小信息之和时,确定第三目标项信息对应的目标内存段划分为不与所述待处理对象对应的第一内存分段和第二内存分段,按照所述更新所述第三目标项信息的大小信息,并生成针对所述第二内存分段的增指令。
可选地,当所述数据操作指令为扫描指令时,所述待处理对象包括待扫描乱序数组;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述待扫描乱序数组对应的第一热度状态;
扫描所述待扫描乱序数组中项信息对应的待扫描内存段;
在所述待扫描内存段对应的切片变更为第二热度状态时,确定所述第二热度状态对应的切片对应的待移动切片序号、待移动大小信息、待移动进程信息;
在所述待扫描乱序数组中更新与待移动切片序号、待移动大小信息、待移动进程信息对应的项信息;
将待移动切片序号、待移动大小信息、待移动进程信息添加至与所述第二热度状态对应的乱序数组。
本申请实施例还公开了一种预留内存的处理装置,所述装置包括:
获取模块,用于获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;
确定模块,用于确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息;
添加模块,用于将所述特征信息添加至与所述当前热度状态对应的乱序数组。
本申请实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述预留内存的处理方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述预留内存的处理方法的步骤。
本申请实施例包括以下优点:
通过获取预先针对与预留内存的预设热度状态对应的构建的包含多个乱序数组的数组集,确定所述预留内存中目标内存段的当前热度状态和特征信息,将所述特征信息添加至与所述当前热度状态对应的乱序数组,从而采用分段的形式记录处于相同热度状态的连续内存切片,避免针对内存切片一一记录热度状态,减少了监测内存切片热度状态的数据开销,并且按照能够将相同的当前热度状态的内存段的特征信息集合到一个乱序数组中,提高针对相同热度状态的内存段的处理效率,同时根据热度变化的老化时间顺序确定数组集中的分段内存的先后顺序,以及特征信息包含的切片序号和大小信息即刻标识一个内存段的热度状态,可以采用较少的数据开销即可监测宿主机的预留内存的冷热情况。
附图说明
图1是本申请的一种预留内存的处理方法实施例的步骤流程图;
图2是本申请的一种预留内存管理框架示意图;
图3是本申请的另一种预留内存的处理方法实施例的步骤流程图;
图4是本申请的一种预留内存的处理装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种预留内存的处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;
在虚拟化场景中,预留内存可以包括多个内存地址,不同内存地址对应的热度状态不完全相同,本申请实施例可以针对不同的热度状态构建不同的乱序数组,例如:热度状态可以包括:冷状态(也可以称为非活跃(inactive)状态)、热状态(也可以称为活跃(active)状态)。可以针对热状态构建热状态数组、针对冷状态构建冷状态数组,将热状态数组和冷状态数组作为数组集。
在一种示例中,热度状态还可以包括暂停(paused)状态和固定(pinned)状态,乱序数组集还可以包括:针对暂停状态构建的暂停状态数组、针对固定状态构建的固定状态数组。
步骤102,确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息;
内存段可以包括一个或多个内存切片,切片序号可以用于标识不同内存切片,进一步的,切片序号可以为内存切片的物理地址,大小信息可以为切片数量,可以根据切片序号和大小信息,确定目标内存段包含了多少个内存切片以及具体的物理地址。还可以根据内存切片容量大小和大小信息,确定内存段的容量大小。例如:单个内存切片容量大小为2MB(MebiByte兆字节),内存段的大小信息为3,则该内存段容量大小为6MB。
由上可知,可以通过切片序号和大小信息标识一段连续内存切片,并且由于预留内存的热度状态可能会存在局部性,即在某一时刻某一段连续的内存切片都为热状态,或者都是冷状态。可以采用分段形式记录多个内存切片的热度状态,即按照热度状态对内存切片进行划分,划分出处于相同热度状态的连续内存切片,进而确定与该处于相同热度状态的连续内存切片对应的特征信息,通过采用分段形式记录多个内存切片的热度状态减少监测预留内存热度状态的数据开销。
目标内存段可以是新增预留内存、或者是指定的内存段。
可以通过实时监测的方式,确定内存段的当前热度状态,以及与内存段对应的特征信息,特征信息可以用于包括但不限于内存段的元数据,用以区分和描述其对应的内存段。
在一示例中,可以通过如下方式确定内存段的当前热度状态,先要获取内存切片对应进程的虚拟地址,如果是虚拟化场景,先根据虚拟地址判断其虚拟化页表的访问位是否被置位;如果虚拟化页表的访问位被置位,则该内存切片对应的当前热度状态为热状态;如果虚拟化页表的访问位没有被置位,则读取进程的内核页表。如果内核页表访问位被置位,则该内存切片对应的当前热度状态为热状态;否则,当前热度状态为冷状态。
步骤103,将所述特征信息添加至与所述当前热度状态对应的乱序数组。
在确定内存段的特征信息和当前热度状态后,可以将该特征信息存储至当前热度状态对应的乱序数组中,从而使得在同一乱序数组中,均记录有同一热度状态的内存段对应的特征信息。
由于特征信息与处于相同热度状态的连续内存切片对应,使得一个特征信息与一段处于相同热度状态的连续内存切片对应,通过将特征信息添加至乱序数组中,使得乱序数组能够针对处于相同热度状态的连续内存切片记录相应的特征信息,实现采用分段的形式记录处于相同热度状态的连续内存切片,避免针对内存切片一一记录热度状态。
在本申请实施例中,通过获取预先针对与预留内存的预设热度状态对应的构建的包含多个乱序数组的数组集,确定所述预留内存中目标内存段的当前热度状态和特征信息,将所述特征信息添加至与所述当前热度状态对应的乱序数组,从而采用分段的形式记录处于相同热度状态的连续内存切片,避免针对内存切片一一记录热度状态,减少了监测内存切片热度状态的数据开销,并且按照能够将相同的当前热度状态的内存段的特征信息集合到一个乱序数组中,提高针对相同热度状态的内存段的处理效率,同时根据热度变化的老化时间顺序确定数组集中的分段内存的先后顺序,以及特征信息包含的切片序号和大小信息即刻标识一个内存段的热度状态,可以采用较少的数据开销即可监测宿主机的预留内存的冷热情况。
参照图2,示出了本申请的一种预留内存管理框架示意图,包括:针对预留内存划分的多个非一致内存访问NUMA(Non Uniform Memory Access)节点(如图2所示中的Node1、Node2)构建的数组集,一个NUMA节点对应于一个所述预设数组集,数组集包括不同热度状态对应的乱序数组(例如:图2中的inactive1、inactive2、active1、active 2),所述乱序数组由项信息组成,项信息用于记录包括内存段的特征信息,数据可以标识其包含的特征信息对应的内存段的热度状态,这些项信息可以根据其时间信息进行沉淀组织(例如:调用LRU算法即最近最少使用算法),从而实现直接处理预留内存的特征信息,进而处理为预留内存的热度状态。可以基于上述预留内存管理框架实现本申请实施例提供的预留内存管理方法。参照图3,示出了本申请的另一种预留内存的处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤301,获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;
可以通过读取上述预留内存管理框架中各个NUMA节点的乱序数组,以获得数组集。
步骤302,确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息,以及连续内存切片对应的进程信息;
步骤303,将所述特征信息添加至与所述当前热度状态对应的乱序数组;
在本申请的一种可选实施例中,步骤303包括:按照所述当前热度状态在所述多个乱序数组中确定目标乱序数组;基于所述特征信息添加至所在乱序数组的顺序,确定顺序信息;依据所述特征信息和所述顺序信息,生成与所述连续内存切片对应的目标项信息;将所述特征信息所述目标项信息存储至所述目标乱序数组中。
如图2所示,乱序数组中的项信息包括由idx字段、size字段、pid字段、next字段组成,其中,idx字段用于记录切片序号、size字段用于记录大小信息、pid字段用于记录进程信息、next字段用于记录该同一乱序数组下包含该next字段项信息的下一个项信息,即next字段用于指向下一项信息,进而可以通过乱序数组中各个项信息的next字段确定该乱序数组中项信息的顺序信息,该顺序信息与该乱序数组存储项信息的时间先后顺序对应。
另外,乱序数组中还可以记录有项信息数量、老化信息(例如可以设置old字段,采用old字段指向最老项信息,即乱序数组包含的项信息中最早记录的一个)、使用率等,可以按照实际需求扩充乱序数组中记录的相关信息,其中,老化信息用于指向与所述顺序信息中的首位对应的项信息。
步骤304,响应于获取到的乱序数组操作指令时,确定所述乱序数组处理指令对应的待处理对象;
数据操作指令可以是通过外部设备(例如:服务器、输入组件等)接收得到,也可以由上述预留内存管理框架生成。
待处理对象可以包括上述的切片序号、大小信息、进程信息。
步骤305,按照所述乱序数组操作指令对所述待处理对象进行相应处理;其中,所述乱序数组操作指令包括查指令、增指令、删指令、扫描指令。
通过响应于查指令、增指令、删指令、扫描指令等,实现宿主机内核对数据组中切片序号、大小信息、进程信息的处理,进而实现动态管理预留内存的热度状态。
在本申请的一种可选实施例中,当所述数据操作指令为查指令时,所述待处理对象包括待查切片序号和待查进程信息;所述步骤305包括:确定待遍历乱序数组;按照预设顺序遍历所述待遍历乱序数组;针对一个所述待遍历乱序数组,按照所述待遍历乱序数组中包含的顺序信息遍历其包含的项信息;在检测到与所述待查切片序号和所述待查进程信息匹配的第一目标项信息时,输出所述第一目标项信息。
当数据操作指令为查指令时,可以通过提取数据操作指令包含的用于标识乱序数组的数组标识,从而确定需要进行遍历的乱序数组。然后按照预设顺序对数组标识对应的乱序数组进行遍历,其中,针对每一个待遍历乱序数组,遍历待遍历乱序数组中包含的项信息,进而确定并输出与待查切片序号和待查进程信息匹配的第一目标项信息。
在本申请的一种可选实施例中,所述确定待遍历乱序数组包括:确定与所述目标切片序号对应的目标NUMA节点;确定与所述目标NUMA节点的数组集为待遍历乱序数组。
针对如上所述的预留内存划分的多个NUMA(Non Uniform Memory Access)节点相应设置有数组集,一个NUMA节点对应一个数组集。NUMA节点对应的预留内存的物理地址范围为预先设置,可以通过确定目标切片序号对应的物理地址,结合各个NUMA节点的物理地址范围,可以确定包含有目标切片序号对应的物理地址的NUMA节点为目标NUMA节点,进而确定目标NUMA节点对应的数组集包含的乱序数组为待遍历乱序数组。通过依据目标内存切片序号确定待遍历乱序数组,从而筛选待遍历乱序数组,提高查指令的响应效率。
以下以一个示例对数据操作指令为查指令时,对乱序数组的处理过程作进一步说明:
待处理对象为查找关键字,包括待查切片序号和待查进程信息;
a1)获取待查切片序号所在NUMA节点的乱序数组保护锁,并将保护锁调整为解锁状态;
b1)从本NUMA节点的所有乱序数组中,依此遍历每个乱序数组;
c1)对于每个乱序数组,从乱序数组的old字段(记录上述最老老化信息)所指向的项信息开始,依次便利所有项信息;
d1)判断待查切片序号是否在一个项信息所表示的范围内,并且项信息中记录的进程信息是否等于待查进程信息;找到,跳到步骤g1);否则,执行步骤e1);
e1)判断项信息的next是否为新项信息(最后一个项信息的next指向自己);是,跳转步骤d1);否则,执行步骤f1);
f1)判断本NUMA节点的所有乱序数组是否遍历完成;否,跳转步骤b;
g1)返回查找到的项信息(第一目标项信息),以及与待查切片序号和待查进程信息匹配的项信息的位置。
在本申请的一种可选实施例中,当所述数据操作指令为增指令时,所述待处理对象包括待增切片序号、待增大小信息、待增进程信息;所述步骤305包括:确定与所述数据操作指令对应的待增乱序数组;按照所述待增乱序数组记载的顺序信息提取空闲项信息;采用所述空闲项信息记录所述待增切片序号、所述待增大小信息、所述待增进程信息;判断所述增指令是否包含第一位置信息;若包含第一位置信息,则按照所述第一位置信息更新所述待增乱序数组的顺序信息;若不包含第一位置信息,则按照所述待增加乱序数组记载的历史插入位置更新所述待增乱序数组的顺序信息。
数据操作指令可以记录有与待增乱序数组相应的数组标识,按照该数组标识确定待增乱序数组,并提取空闲项信息,空闲项信息为特征信息为空的项信息。若增指令中包含指定的第一位置信息,则按照第一位置信息更新待增乱序数组的顺序信息,以使得记录有待增切片序号、待增大小信息、待增进程信息的项信息与第一位置信息对应。若增指令中不包含指定的第一位置信息,则按照上一次插入特征信息的位置更新顺序信息。
针对特定大小的待增大小信息先尝试合并这段新区域,此时,在按照所述待增乱序数组记载的顺序信息提取空闲项信息之前,步骤305还包括:若所述待增大小信息为预设值,则遍历所述待增乱序数组中的项信息;判断所述待增乱序数组中是否存在于所述待增切片序号相邻且与所述待增进程信息相同的第二目标项信息;若是,则按照所述待增切片序号、待增大小信息更新所述第二目标项信息;若否,则执行所述按照所述待增乱序数组记载的顺序信息提取空闲项信息。
在一实际示例中,预设值为1,即待增大小信息为1个单位大小的内存切片。可以理解的是,预设值可以自定义设置为1或者为其他值,预设值的大小不影响本申请实施例的实施。当大小信息为预设值时,则确定与待增切片序号相邻,且与待增进场信息相同的第二目标项信息。并按照待增大小信息和待增切片序号更新第二目标项信息,以将需要纪录的特征信息合并至第二目标项信息中,在不增将待增数组中项信息数量的情况下,记录与待增切片序号相关的特征信息,避免产生过多的零碎项信息,导致乱序数组快速填满。
以下以一个示例对数据操作指令为增指令时,针对指定的乱序数组的处理过程可以如下:
a2)确定待增大小信息大小,如果待增大小信息为1,执行步骤b2),如果待增大小信息不为1,则执行步骤e2);
b2)遍历指定乱序数组所在乱序数组的每个项信息;
c2)判断待增切片序号是否和改项信息的头部,或者尾部相邻;若是,则直接更新扩展该项信息的待增切片序号或待增大小信息,完成对增指令的响应;否则执行步骤d);
d2)判断遍历是否结束,未结束则步骤b2);否则,执行步骤e2);
e2)判断指定乱序数组是否已经满;如果满,需要将乱序数组扩容一倍,并复制原来的数据(乱序数组扩容前的项信息),同时更新指定乱序数组及其总数量等相关字段;
f2)从指定乱序数组中,从头获取一个空闲的项信息项;
g2)将[待增切片序号,待增大小信息,待增进程信息],生成新的项信息;
h2)判断是否存在指定插入位置(如上述的第一位置信息),如果有则将该指定位置确定为待插入位置;如果没有则使用该乱序数组的cur字段(上一次插入项信息的位置)所执行的位置为待插入位置;
i2)判断待插入位置,是否为指定乱序数组的头部;如果是,则将指定乱序数组的最老字段old指向当前项信息;
j2)否则,将待插入位置所在项信息的next字段,指向当前项信息;
k2)判断待插入位置,是否为指定乱序数组的尾部;如果不是,则将当前项信息的next字段记录为指向原来待插入位置的项信息的下一个项信息;
l2)否则,项信息的next字段指向当前项信息本身;
m2)更新指定乱序数组中的已使用的项信息个数。
在本申请的一种可选实施例中,当所述数据操作指令为删指令时,所述待处理对象包括待删项信息;所述步骤305包括:确定与所述待删项信息对应的待删乱序数组;若所述待删项信息对应所述待删乱序数组记录的顺序信息的末位,则按照所述待删项信息之前的项信息更新所述顺序信息;若所述待删项信息不对应所述待删乱序数组记录的顺序信息的首位或末位,则将所述待删项信息的前一个项信息作为所述待删项信息的后一个项信息的相邻项信息,以更新所述顺序信息;删除所述待删项信息。
上述的更新顺序信息为更新待删乱序数组中各个项信息中next字段,从而更新待删数组中与各个项信息对应的顺序信息。若待删项信息为待删乱序数组中最后一个项信息,则更新待删项信息的前一个项信息中next字段。
若待删项信息为待删乱序数组中不是最后一个项信息,也不是第一个项信息,则将待删项信息的前一个项信息作为待删项信息的后一个项信息的相邻项信息,以使待删项信息的前一个项信息的后一个项信息为待删项信息的后一个项信息,以更新顺序信息。
在更新顺序信息后,删除待删项信息包含的特征信息。
在本申请的一种可选实施例中,所述按照所述乱序数组操作指令对所述待处理对象进行相应处理还包括:若所述待删项信息对应所述待删乱序数组记录的顺序信息的首位,则按照所述顺序信息中所述待删项信息的下一个项信息更新所述老化信息。
若待删项信息对应顺序信息的首位,则需要更新老化信息,已使得老化信息指向删除待删项信息后顺序信息的首位对应的项信息,该项信息为删除待删项信息之前位于待删项信息的后一个项信息。
以下以一个示例对数据操作指令为扫描指令时,对乱序数组的处理过程作进一步说明:
a3)判断待删项信息否为乱序数组的old字段所指向的项信息;如果是,执行步骤b3)否则,执行步骤c3);
b3)需要更新old字段指向待删项信息的next字段所在的项信息;
c3)判断待删项信息是否为乱序数组的最后一个项信息;如果是则执行步骤d3),否则执行步骤e3);
d3)更新cur字段指向待删项信息的前一个项信息所在位置;
e3)更新待删项信息的前一个项信息的next字段更新为待删项信息next字段;
f3)清空待删项信息的内容;
g3)更新乱序数组中的已使用的项信息个数。
在本申请的一种可选实施例中,当所述数据操作指令为删指令时,所述待处理对象包括第二位置信息、待删切片序号、待删大小信息,表示需要删除指定位置(第二位置信息)中已记录的内存段(依据待删切片序号、待删大小信息确定)的特征信息,所述步骤305包括:
确定与所述第二位置信息对应的第三目标项信息;
在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息小于所述第三目标项信息的大小信息时,按照所述待删大小信息更新所述第三目标项信息的大小信息,并更新所述第三目标项信息的切片序号;
在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息不小于所述第三目标项信息的大小信息时,删除所述第三目标项信息;
在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和不小于第三目标项信息的切片序号与大小信息之和时,按照所述待删大小信息更新所述第三目标项信息的大小信息;
在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和小于第三目标项信息的切片序号与大小信息之和时,确定第三目标项信息对应的目标内存段划分为不与所述待处理对象对应的第一内存分段和第二内存分段,按照所述更新所述第三目标项信息的大小信息,并生成针对所述第二内存分段的增指令。
若待删切片序号与第三目标项信息的切片序号一致,且待删大小信息小于第三目标项信息的大小信息,则表示需要删除的内存段的特征信息与第三目标项信息对应,则可以按照待删大小信息更新第三目标信息的大小信息,例如待删大小信息为4,目标第三项信息中的大小信息为6,则更新后的第三目标项信息的大小信息为2。由于待删切片序号与第三目标项信息的切片序号一致,则按照待删大小信息和待删切片序号更新第三目标项信息的切片序号,例如:待删切片序号为003,待删大小信息为4,则更新后的第三目标项信息的切片序号为007。
若待删切片序号与第三目标项信息的切片序号一致,且待删大小信息不小于第三目标项信息的大小信息,则表示整个第三目标项信息都要删除,可以针对第三目标项信息生成删指令,具体的,基于第三目标项信息中的切片序号和大小信息生成删指令,并响应该删指令以删除第三目标项信息。
若待删切片序号与第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和不小于第三目标项信息的切片序号与大小信息之和,例如:第三目标项信息的切片序号为001,第三目标项信息的大小信息为4,待删切片序号为003,待删大小信息为4,则待删切片序号与待删大小信息之和为007,第三目标项信息的切片序号与大小信息之和为005,则更新第三目标项信息的大小信息,更新后的第三目标项信息的大小信息为2,以在第三目标项信息中删除与删指令对应的内存段的特征信息。
若待删切片序号与第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和小于第三目标项信息的切片序号与大小信息之和,则需要将第三目标项信息对应的内存段划分为第一内存段、第二内存段以及由待删切片序号和待删大小信息确定的第三内存段,由于需要删除第三内存段对应的特征信息,针对第一内存段按照更新第三目标项信息的大小信息即可完成更新,针对第二内存段则生成增指令,以在当前乱序数组中增加新的项信息,具体的,可以确定第二内存段的第一个切片对应的切片序号,以及确定第二内存段的大小信息、进程信息,并针对该切片序号、以及第二内段的大小信息、进程信息生成增指令,通过响应增指令以在当前乱序数组中增加与第二内存段匹配的项信息,具体执行过程可以参考书上述对增指令的处理过程即可,在此不再赘述。
以下以另一个示例对数据操作指令为删指令时,对乱序数组的处理过程作进一步说明:待处理对象包括第二位置信息、待删切片序号、待删大小信息、待删进程信息;
a4)判断待删切片序号与第二位置信息对应的第三目标项信息的起始位置切片序号一致;一致则执行步骤b4);不一致,则执行步骤e;
b4)判断待删大小信息是否小于第二位置信息对应的第三目标项信息的范围;如果是则执行步骤c4);否则执行步骤d4);
c4)缩容第三目标项信息,更新第三目标项信息的切片序号;
d4)删除第三目标项信息;
e4)判断待删切片序号与待删大小信息之和是否不小于第三目标项信息的末尾(即第三目标项信息的切片序号与大小信息之和);是则执行步骤f4),否则执行步骤g4);
f4)缩容第三目标项信息,并更新第三目标项信息的大小信息;
g4)删除第三目标项信息中待删切片序号、待删大小信息对应的中间部分;并对剩余的前半部分进行缩容,剩余的后半部分则需要向乱序数组的第三目标项之后插入一个新的项信息。
在本申请的一种可选实施例中,可以按照预设周期生成扫描指令,以扫描各个内存切片的冷热状态。当所述数据操作指令为扫描指令时,所述待处理对象包括待扫描乱序数组;待扫描乱序数组可以是一个或多个NUMA节点对应的数组集,也可以是指定NUMA节点对应的指定乱序数组。例如:待扫描数组可以为Node1对应的数组集,或者可以为Node2的inactive2数组。所述步骤305包括:确定与所述待扫描乱序数组对应的第一热度状态;扫描所述待扫描乱序数组中项信息对应的待扫描内存段;在所述待扫描内存段对应的切片变更为第二热度状态时,确定所述第二热度状态对应的切片对应的待移动切片序号、待移动大小信息、待移动进程信息;在所述待扫描乱序数组中更新与待移动切片序号、待移动大小信息、待移动进程信息对应的项信息;将待移动切片序号、待移动大小信息、待移动进程信息添加至与所述第二热度状态对应的乱序数组。
第一热度状态为构建待扫描乱序数组时对应的热度状态,例如:在构建乱序数组时,针对冷状态构建冷状态数组。若待扫描乱序数组为冷状态数组时,第一热度状态为冷状态;若待扫描乱序数组为热状态数组时,第一热度状态为热状态。扫描待扫描乱序数组时,确定其包含的各个项信息对应的内存切片的热度状态,当确认任意个内存切片的热度状态变为第二热度状态(第二热度状态为第一热度状态以外的热度状态的一个)时,确定变为第二热度状态的内存切片对应的特征信息,包括待移动切片序号、待移动大小信息、待移动进程信息。更新待扫描数组中与为第二热度状态的内存切片对应的项信息,以删除待扫描乱序数组中记得的与变为第二热度状态的内存切片的特征信息。并将待移动切片序号、待移动大小信息、待移动进程信息添加至与所述第二热度状态对应的乱序数组,具体的,可以针对待移动切片序号、待移动大小信息、待移动进程信息生成增指令,并响应该增指令,具体响应过程可以参考上述描述即可,在此不再赘述。通过上述扫描待扫描乱序数组,从而更新待扫描乱序数组对应的内存切片的热度状态,并在热度状态发生变化时,更新相应乱序数组的项信息。
以下以另一个示例对数据操作指令为扫指令时,对乱序数组的处理过程作进一步说明:
a5)逐个遍历待扫描乱序数组中间的每个项信息,记录其在乱序数组中的位置cur,以及前一个位置prev,和后一个位置next,其中待扫描乱序数组为冷状态数组;
b5)循环扫描该项信息长度内的每个内存切片对应的物理地址,判断是否还是冷状态;
c5)如果发现有一个切片,已经变成非热状态,例如变为热状态,即出现状态跳变;判断是否记录了跳变切片序号(待移动切片序号);
d5)如果没有记录跳变切片序号,则记录该切片序号,并初始化该切片对应的大小信息(待移动大小信息)为1;待移动切片序号、待移动大小信息、待移动进程信息
e5)如果已经记录了跳变切片循环,则更新待移动大小信息;
f5)如果内存切片的热度状态没有变化仍然是冷状态,则判断在本次响应扫描指令过程中且当前时刻之前是否记录了跳变切片序号;如果有则说明找到一段状态发生跳变的内存区域,需要将其从一个乱序数组移动到另一个乱序数组_out;
g5)参照上述步骤a4)~g4)提取出将这段内存区域的特征信息,并从当前扫描的乱序数组中删除;
h5)由于删除上述上述内存区域的特征信息过程中,可能删除旧项信息、或插入新项信息,导致其在乱序数组中的位置发生变化,故需要需要更新prev、cur、next的值;
i5)将提取到的上述内存区域的特征信息,插入到热状态乱序数组中;
j5)判断当前项信息内的内存切片是否扫描完成,未完成则返回步骤b5);否则,执行步骤k5);
k5)判断乱序数组内的所有项信息是否都遍历完成,未完成则返回步骤a5);否则,结束整个扫描过程,停止响应该扫描指令。
在本申请实施例中,通过获取预先针对与预留内存的预设热度状态对应的构建的包含多个乱序数组的数组集,确定所述预留内存中目标内存段的当前热度状态和特征信息,将所述特征信息添加至与所述当前热度状态对应的乱序数组,从而采用分段的形式记录处于相同热度状态的连续内存切片,避免针对内存切片一一记录热度状态,减少了监测内存切片热度状态的数据开销,并且按照能够将相同的当前热度状态的内存段的特征信息集合到一个乱序数组中,提高针对相同热度状态的内存段的处理效率,同时根据热度变化的老化时间顺序确定数组集中的分段内存的先后顺序,以及特征信息包含的切片序号和大小信息即刻标识一个内存段的热度状态,可以采用较少的数据开销即可监测宿主机的预留内存的冷热情况,通过响应于查指令、增指令、删指令、扫描指令等,实现宿主机内核对数据组中切片序号、大小信息、进程信息的处理,进而实现动态管理预留内存的热度状态。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请的一种预留内存的处理装置实施例的结构框图,具体可以包括如下模块:
获取模块401,用于获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个数组;
确定模块402,用于确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的切片序号和大小信息;
添加模块403,用于将所述特征信息添加至与所述当前热度状态对应的数组。
在本申请的一种可选实施例中,所述特征信息还包括与所述连续内存切片对应的进程信息;所述乱序数组由项信息组成;所述添加模块403包括:
目标乱序数组确定子模块,用于按照所述当前热度状态在所述多个乱序数组中确定目标乱序数组;
顺序信息确定子模块,用于基于所述特征信息添加至所在乱序数组的顺序,确定顺序信息;
目标项信息生成子模块,用于依据所述特征信息和所述顺序信息,生成与所述连续内存切片对应的目标项信息;
目标项信息存储子模块,用于将所述目标项信息存储至所述目标乱序数组中。
在本申请的一种可选实施例中所述装置还包括:
待处理对象确定模块,用于响应于获取到的乱序数组操作指令时,确定所述乱序数组处理指令对应的待处理对象;
待处理对象处理模块,用于按照所述乱序数组操作指令对所述待处理对象进行相应处理;
其中,所述乱序数组操作指令包括查指令、增指令、删指令、扫描指令。
在本申请的一种可选实施例中,当所述数据操作指令为查指令时,所述待处理对象包括待查切片序号和待查进程信息;所述待处理对象处理模块包括:
待遍历乱序数组确定子模块,用于确定待遍历乱序数组;
待遍历乱序数组遍历子模块,用于按照预设顺序遍历所述待遍历乱序数组;
项信息第一遍历子模块,用于针对一个所述待遍历乱序数组,按照所述待遍历乱序数组中包含的顺序信息遍历其包含的项信息;
第一目标项信息匹配子模块,用于在检测到与所述待查切片序号和所述待查进程信息匹配的第一目标项信息时,输出所述第一目标项信息。
在本申请的一种可选实施例中,所述预留内存对应于多个非一致内存访问NUMA节点,一个所述NUMA节点对应于一个所述预设数组集;所述待遍历乱序数组确定子模块包括:
目标NUMA节点确定单元,用于确定与所述目标切片序号对应的目标NUMA节点;
待遍历乱序数组确定单元,用于确定与所述目标NUMA节点的数组集为待遍历乱序数组。
在本申请的一种可选实施例中,当所述数据操作指令为增指令时,所述待处理对象包括待增切片序号、待增大小信息、待增进程信息;所述待处理对象处理模块包括:
待增乱序数组确定子模块,用于确定与所述数据操作指令对应的待增乱序数组;
空闲项信息提取子模块,用于按照所述待增乱序数组记载的顺序信息提取空闲项信息;
空闲项信息记录子模块,用于采用所述空闲项信息记录所述待增切片序号、所述待增大小信息、所述待增进程信息;
第一位置信息判断子模块,用于判断所述增指令是否包含第一位置信息;若是,则按照所述第一位置信息更新所述待增乱序数组的顺序信息;若否,则按照所述待增加乱序数组记载的历史插入位置更新所述待增乱序数组的顺序信息。
在本申请的一种可选实施例中,所述待处理对象处理模块还包括:
项信息第二遍历子模块,用于若所述待增大小信息为预设值,则遍历所述待增乱序数组中的项信息;
第二目标项信息判断子模块,用于判断所述待增乱序数组中是否存在于所述待增切片序号相邻且与所述待增进程信息相同的第二目标项信息;若是,则按照所述待增切片序号、待增大小信息更新所述第二目标项信息;若否,则调用所述空闲项信息提取子模块。
在本申请的一种可选实施例中,当所述数据操作指令为删指令时,所述待处理对象包括待删项信息;所述待处理对象处理模块包括:
待删乱序数组确定子模块,用于确定与所述待删项信息对应的待删乱序数组;
顺序信息第一更新子模块,用于若所述待删项信息对应所述待删乱序数组记录的顺序信息的末位,则按照所述待删项信息之前的项信息更新所述顺序信息;
顺序信息第二更新子模块,用于若所述待删项信息不对应所述待删乱序数组记录的顺序信息的首位或末位,则将所述待删项信息的前一个项信息作为所述待删项信息的后一个项信息的相邻项信息,以更新所述顺序信息;
待删项信息删除子模块,用于删除所述待删项信息。
在本申请的一种可选实施例中,所述乱序数组纪录有老化信息,所述老化信息用于指向与所述顺序信息中的首位对应的项信息;所述待处理对象处理模块还包括:
顺序信息第三更新子模块,用于若所述待删项信息对应所述待删乱序数组记录的顺序信息的首位,则按照所述顺序信息中所述待删项信息的下一个项信息更新所述老化信息。
在本申请的一种可选实施例中,当所述数据操作指令为删指令时,所述待处理对象包括第二位置信息、待删切片序号、待删大小信息;所述待处理对象处理模块包括:
第三目标项信息确定子模块,用于确定与所述第二位置信息对应的第三目标项信息;
第三目标项信息第一处理子模块,用于在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息小于所述第三目标项信息的大小信息时,按照所述待删大小信息更新所述第三目标项信息的大小信息,并更新所述第三目标项信息的切片序号;
第三目标项信息第二处理子模块,用于在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息不小于所述第三目标项信息的大小信息时,删除所述第三目标项信息;
第三目标项信息第三处理子模块,用于在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和不小于第三目标项信息的切片序号与大小信息之和时,按照所述待删大小信息更新所述第三目标项信息的大小信息;
第三目标项信息第四处理子模块,用于在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和小于第三目标项信息的切片序号与大小信息之和时,确定第三目标项信息对应的目标内存段划分为不与所述待处理对象对应的第一内存分段和第二内存分段,按照所述更新所述第三目标项信息的大小信息,并生成针对所述第二内存分段的增指令。
在本申请的一种可选实施例中,当所述数据操作指令为扫描指令时,所述待处理对象包括待扫描乱序数组;所述待处理对象处理模块包括:
第一热度状态确定子模块,用于确定与所述待扫描乱序数组对应的第一热度状态;
待扫描内存段确定子模块,用于扫描所述待扫描乱序数组中项信息对应的待扫描内存段;
第二热度状态确定子模块,用于在所述待扫描内存段对应的切片变更为第二热度状态时,确定所述第二热度状态对应的切片对应的待移动切片序号、待移动大小信息、待移动进程信息;
待扫描乱序数组更新子模块,用于在所述待扫描乱序数组中更新与待移动切片序号、待移动大小信息、待移动进程信息对应的项信息;
待处理对象添加子模块,用于将待移动切片序号、待移动大小信息、待移动进程信息添加至与所述第二热度状态对应的乱序数组。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述预留内存的处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述预留内存的处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种预留内存的处理方法和一种预留内存的处理装置、电子设备和介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种预留内存的处理方法,其特征在于,所述方法包括:
获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;
确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息;
将所述特征信息添加至与所述当前热度状态对应的乱序数组。
2.根据权利要求1所述的方法,其特征在于,所述特征信息还包括与所述连续内存切片对应的进程信息;所述乱序数组由项信息组成;所述将所述特征信息添加至与所述当前热度状态对应的乱序数组包括:
按照所述当前热度状态在所述多个乱序数组中确定目标乱序数组;
基于所述特征信息添加至所在乱序数组的顺序,确定顺序信息;
依据所述特征信息和所述顺序信息,生成与所述连续内存切片对应的目标项信息;
将所述目标项信息存储至所述目标乱序数组中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于获取到的乱序数组操作指令时,确定所述乱序数组处理指令对应的待处理对象;
按照所述乱序数组操作指令对所述待处理对象进行相应处理;
其中,所述乱序数组操作指令包括查指令、增指令、删指令、扫描指令。
4.根据权利要求3所述的方法,其特征在于,当所述数据操作指令为查指令时,所述待处理对象包括待查切片序号和待查进程信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定待遍历乱序数组;
按照预设顺序遍历所述待遍历乱序数组;
针对一个所述待遍历乱序数组,按照所述待遍历乱序数组中包含的顺序信息遍历其包含的项信息;
在检测到与所述待查切片序号和所述待查进程信息匹配的第一目标项信息时,输出所述第一目标项信息。
5.根据权要求4所述的方法,其特征在于,所述预留内存对应于多个非一致内存访问NUMA节点,一个所述NUMA节点对应于一个所述预设数组集;所述确定待遍历乱序数组包括:
确定与所述目标切片序号对应的目标NUMA节点;
确定与所述目标NUMA节点的数组集为待遍历乱序数组。
6.根据权利要求3所述的方法,其特征在于,当所述数据操作指令为增指令时,所述待处理对象包括待增切片序号、待增大小信息、待增进程信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述数据操作指令对应的待增乱序数组;
按照所述待增乱序数组记载的顺序信息提取空闲项信息;
采用所述空闲项信息记录所述待增切片序号、所述待增大小信息、所述待增进程信息;
判断所述增指令是否包含第一位置信息;
若是,则按照所述第一位置信息更新所述待增乱序数组的顺序信息;
若否,则按照所述待增加乱序数组记载的历史插入位置更新所述待增乱序数组的顺序信息。
7.根据权利要求6所述的方法,其特征在于,所述按照所述乱序数组操作指令对所述待处理对象进行相应处理还包括:
若所述待增大小信息为预设值,则遍历所述待增乱序数组中的项信息;
判断所述待增乱序数组中是否存在于所述待增切片序号相邻且与所述待增进程信息相同的第二目标项信息;
若是,则按照所述待增切片序号、待增大小信息更新所述第二目标项信息;
若否,则执行所述按照所述待增数组记载的顺序信息提取空闲项信息。
8.根据权利要求3所述的方法,其特征在于,当所述数据操作指令为删指令时,所述待处理对象包括待删项信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述待删项信息对应的待删乱序数组;
若所述待删项信息对应所述待删乱序数组记录的顺序信息的末位,则按照所述待删项信息之前的项信息更新所述顺序信息;
若所述待删项信息不对应所述待删乱序数组记录的顺序信息的首位或末位,则将所述待删项信息的前一个项信息作为所述待删项信息的后一个项信息的相邻项信息,以更新所述顺序信息;
删除所述待删项信息。
9.根据权利要求8所述的方法,其特征在于,所述乱序数组纪录有老化信息,所述老化信息用于指向与所述顺序信息中的首位对应的项信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理还包括:
若所述待删项信息对应所述待删乱序数组记录的顺序信息的首位,则按照所述顺序信息中所述待删项信息的下一个项信息更新所述老化信息。
10.根据权利要求3所述的方法,其特征在于,当所述数据操作指令为删指令时,所述待处理对象包括第二位置信息、待删切片序号、待删大小信息;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述第二位置信息对应的第三目标项信息;
在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息小于所述第三目标项信息的大小信息时,按照所述待删大小信息更新所述第三目标项信息的大小信息,并更新所述第三目标项信息的切片序号;
在所述待删切片序号与所述第三目标项信息的切片序号一致,且所述待删大小信息不小于所述第三目标项信息的大小信息时,删除所述第三目标项信息;
在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和不小于第三目标项信息的切片序号与大小信息之和时,按照所述待删大小信息更新所述第三目标项信息的大小信息;
在所述待删切片序号与所述第三目标项信息的切片序号不一致,且待删切片序号与待删大小信息之和小于第三目标项信息的切片序号与大小信息之和时,确定第三目标项信息对应的目标内存段划分为不与所述待处理对象对应的第一内存分段和第二内存分段,按照所述更新所述第三目标项信息的大小信息,并生成针对所述第二内存分段的增指令。
11.根据权利要求9所述的方法,其特征在于,当所述数据操作指令为扫描指令时,所述待处理对象包括待扫描乱序数组;所述按照所述乱序数组操作指令对所述待处理对象进行相应处理包括:
确定与所述待扫描乱序数组对应的第一热度状态;
扫描所述待扫描乱序数组中项信息对应的待扫描内存段;
在所述待扫描内存段对应的切片变更为第二热度状态时,确定所述第二热度状态对应的切片对应的待移动切片序号、待移动大小信息、待移动进程信息;
在所述待扫描乱序数组中更新与待移动切片序号、待移动大小信息、待移动进程信息对应的项信息;
将待移动切片序号、待移动大小信息、待移动进程信息添加至与所述第二热度状态对应的乱序数组。
12.一种预留内存的处理装置,其特征在于,所述装置包括:
获取模块,用于获取预设数组集;所述数组集包括与预留内存的预设热度状态对应的多个乱序数组;
确定模块,用于确定所述预留内存中目标内存段的当前热度状态和特征信息;所述特征信息包括与所述目标内存段中处于相同热度状态的连续内存切片对应的切片序号和大小信息;
添加模块,用于将所述特征信息添加至与所述当前热度状态对应的乱序数组。
13.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-11中任一项所述预留内存的处理方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述预留内存的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210265475.8A CN114595066A (zh) | 2022-03-17 | 2022-03-17 | 一种预留内存的处理方法、装置、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210265475.8A CN114595066A (zh) | 2022-03-17 | 2022-03-17 | 一种预留内存的处理方法、装置、电子设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595066A true CN114595066A (zh) | 2022-06-07 |
Family
ID=81819406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210265475.8A Pending CN114595066A (zh) | 2022-03-17 | 2022-03-17 | 一种预留内存的处理方法、装置、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595066A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118051189A (zh) * | 2024-04-15 | 2024-05-17 | 阿里云计算有限公司 | 内存访存的优化方法、装置、设备、介质及程序产品 |
-
2022
- 2022-03-17 CN CN202210265475.8A patent/CN114595066A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118051189A (zh) * | 2024-04-15 | 2024-05-17 | 阿里云计算有限公司 | 内存访存的优化方法、装置、设备、介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9355112B1 (en) | Optimizing compression based on data activity | |
US7886124B2 (en) | Method and mechanism for implementing dynamic space management for large objects | |
CN102016789B (zh) | 数据处理装置和处理数据的方法 | |
KR101403305B1 (ko) | 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법 | |
CN103635887B (zh) | 缓存数据的方法和存储系统 | |
US20100228914A1 (en) | Data caching system and method for implementing large capacity cache | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
KR101744892B1 (ko) | 시계열 계층 인덱싱을 이용한 데이터 검색 시스템 및 데이터 검색 방법 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
US8019765B2 (en) | Identifying files associated with a workflow | |
US10712943B2 (en) | Database memory monitoring and defragmentation of database indexes | |
CN112286459A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
US20080071992A1 (en) | Method and Apparatus for Space Efficient Identification of Candidate Objects for Eviction from a Large Cache | |
CN111880734A (zh) | 一种数据处理方法、系统、电子设备及存储介质 | |
US20110153677A1 (en) | Apparatus and method for managing index information of high-dimensional data | |
CN114595066A (zh) | 一种预留内存的处理方法、装置、电子设备和介质 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
US7509461B1 (en) | Method and apparatus for intelligent buffer cache pre-emption | |
CN110688065A (zh) | 一种存储空间管理方法、系统、电子设备及存储介质 | |
CN113553306A (zh) | 数据处理方法及数据存储管理系统 | |
CN113157600A (zh) | 一种叠瓦式硬盘的空间分配方法、文件存储系统及服务器 | |
CN117093579A (zh) | 数据查询、数据存储方法、装置、设备及存储介质 | |
CN116661690A (zh) | 记录内存状态的方法、装置、计算机设备及存储介质 | |
US8028011B1 (en) | Global UNIX file system cylinder group cache |
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 |