CN116302491A - 内存管理方法、装置、计算机设备及存储介质 - Google Patents

内存管理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116302491A
CN116302491A CN202310090570.3A CN202310090570A CN116302491A CN 116302491 A CN116302491 A CN 116302491A CN 202310090570 A CN202310090570 A CN 202310090570A CN 116302491 A CN116302491 A CN 116302491A
Authority
CN
China
Prior art keywords
virtual address
memory
page table
target
physical address
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
Application number
CN202310090570.3A
Other languages
English (en)
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.)
Alibaba China Co Ltd
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba China Co Ltd
Alibaba Cloud Computing 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 Alibaba China Co Ltd, Alibaba Cloud Computing Ltd filed Critical Alibaba China Co Ltd
Priority to CN202310090570.3A priority Critical patent/CN116302491A/zh
Publication of CN116302491A publication Critical patent/CN116302491A/zh
Pending legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/5022Mechanisms to release resources
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本说明书实施例提供一种内存管理方法、装置、计算机设备及存储介质,所述方法包括:响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。

Description

内存管理方法、装置、计算机设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及内存管理方法、装置、计算机设备及存储介质。
背景技术
计算机设备可以采用传统的内存管理架构,即由操作***的内存管理模块(通常称为内核的内存管理模块)管理整个内存。在另一些场景中,例如虚拟机等场景下,计算机设备可以采用预留内存的内存分配架构,例如,在内核的内存管理模块基础上,操作***还具有其他的内存管理模块(例如预留内存管理模块等)。基于虚拟机的特点,预留内存管理模块在虚拟机创建时通常会为虚拟机分配较大的内存空间。由于所分配的内存空间较大,预留内存管理模块为了保证安全性会对所分配的内存空间做清零操作,因此需要耗费较长的时间在分配阶段,并且,分配给虚拟机使用的内存空间中部分空间经常不频繁使用,甚至从未访问过,造成内存空间的浪费。
发明内容
为克服相关技术中存在的问题,本公开提供了内存管理方法、装置、计算机设备及存储介质。
根据本说明书实施例的第一方面,提供一种内存管理方法,所述方法包括:
响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;
响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
根据本说明书实施例的第二方面,提供一种内存管理装置,包括:
响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;
响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现前述第一方面所述方法实施例的步骤。
根据本说明书实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述第一方面所述方法实施例的步骤。
本公开实施例提供的技术方案可以包括以下有益效果:
本公开实施例中,针对进程启动时发起的内存申请请求,是根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;因此此时并未分配实质的物理地址。由于页表中未记录物理地址,当进程访问所述页表中未映射物理地址的目标虚拟地址,再为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。因此,本实施例实现了进程的物理地址的按需分配,在进程启动时暂未分配物理地址,因此在进程启动时无需耗费较长的时间在内存分配阶段,并且,由于按需分配,也不会造成内存空间的浪费。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本公开的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本公开的原理。
图1A是本说明书根据一示例性实施例示出的一种页表数据的示意图。
图1B是本说明书根据一示例性实施例示出的一种内存的示意图。
图2A是本说明书根据一示例性实施例示出的一种内存管理方法的流程图。
图2B是本说明书根据一示例性实施例示出的一种NUMA架构的示意图。
图3是本说明书根据一示例性实施例示出的一种内存装置所在计算机设备的框图。
图4是本说明书根据一示例性实施例示出的一种内存管理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
进程运行时,操作***会为进程分配虚拟地址空间和物理地址空间,并创建该进程对应的页表,页表用于记录虚拟地址空间和物理地址空间的映射关系。操作***还对管理的内存维护有元数据,用于管理内存。内存交换时,由于进程的数据的存储位置发生了变更,需要更新该进程的页表;由于数据的存储位置发生变更也导致内存块的状态发生变更,因此也需要更新元数据。
页表是虚拟内存技术的概念。为了让程序获得更多的可用内存、将物理内存扩充成更大的逻辑内存,操作***还使用了虚拟内存的技术。它将物理内存抽象为地址空间,操作***为每个进程分配独立的一套虚拟地址,不同进程的虚拟地址和不同内存的物理地址映射起来。如果程序要访问虚拟地址的时候,由操作***转换成不同的物理地址。此处涉及两个地址的概念:
程序所使用的内存地址叫做虚拟地址(Virtual Memory Address,VA);
实际存在硬件里面的空间地址叫做物理地址(Physical Memory Address,PA)。
虚拟地址与物理地址之间通过页表来映射。页表存储在内存中,通过CPU的MMU(Memory Management Unit,内存管理单元)来实现虚拟内存到物理内存的转换。而当进程要访问的虚拟地址在页表中查不到时,***会产生缺页异常,进入***内核空间分配物理内存、更新进程的页表,最后再返回用户空间,恢复进程的运行。
如图1A所示,是本说明书根据一示例性实施例示出的一种页表数据的示意图,相关技术中,操作***的内存管理单元将内存按设定的管理粒度进行划分,每一管理粒度可称为页(page),或者也可称为块。本实施例以该进程所分配的页为0至N为例,页表中包括N个页表项,每一个页表项即用于表示每一页的虚拟地址与物理地址之间的对应关系。从而,整个页表记录进程的虚拟地址空间、页表项和物理地址空间之间的关系,进程的某个虚拟地址可以通过页表映射至对应的物理地址。
在一些例子中,计算机设备可以采用传统的内存管理架构,即由操作***管理整个内存。在另一些场景中,例如虚拟机场景下,计算机设备可以采用预留内存的内存分配架构,如图1B所示,是本说明书根据一示例性示出的预留内存场景的示意图,在该架构中,宿主机的内存可以包括多种存储空间,如图1B中采用不同填充方式示出了内存的其中两个存储空间,包括供内核使用的非预留存储空间a(图中采用斜线填充),以及供虚拟机使用的预留存储空间b(图中采用竖线及灰度填充)。也即是,非预留存储空间a用于供图中的内核使用,运行于操作***上的应用(如图中示例的应用1至应用3)可使用该非预留存储空间a。而预留存储空间b则可供虚拟机(VM,Virtual Machine)使用,如图中示出的VM1至VMn共n个虚拟机。两个存储空间可以采用不同的管理粒度,即对内存的划分方式可以是不同的。图1B中为了示例方便,两个存储空间在图中是以连续的方式进行示意的。可以理解,实际应用中,两个存储空间可以是非连续的。实际应用中,内存中还可以划分更多的存储空间。
预留存储空间占据内存的大部分,且对于宿主机内核不可用,可以在操作***的内核中***一模块专门用于对预留存储空间进行管理。为了方便管理这一系列的内存同时避免大量元数据对内存的占用,以及考虑到为虚拟机分配内存时往往最少也是数百MB(MByte,兆字节)起,因此预留存储空间采用以较大的粒度划分,例如将预留存储空间划分为2MB等大小的内存块(Memory Section,MS)进行管理;在一些场景中,大粒度也普遍被使用,如1GB(GigaByte,吉字节)等都是可选的,本实施例对此不进行限定。
应用于预留内存场景时,操作***可以采用不同的模块分别管理预留存储空间与非预留存储空间,例如,操作***的预留内存管理模块(本实施例称为Virtual Memory,VMEM)管理预留存储空间,内核的内存管理模块管理非预留存储空间。基于虚拟机的特点,预留内存管理模块在虚拟机创建时通常会为虚拟机分配较大的内存空间。由于所分配的内存空间较大,部分空间经常不频繁使用,甚至从未访问过,造成内存空间的浪费。
基于此,本实施例中,针对进程启动时发起的内存申请请求,是根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;因此,此时并未分配实质的物理地址。由于页表中未记录物理地址,当进程访问所述页表中未映射物理地址的目标虚拟地址,再为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。因此,本实施例实现了进程的物理地址的按需分配,在进程启动时暂未分配物理地址,因此在进程启动时无需耗费较长的时间在内存分配阶段,并且,由于按需分配,因此不会造成内存空间的浪费。
如图2A所示,是本说明书根据一示例性实施例示出的一种内存管理方法的示意图,包括如下步骤:
在步骤202中,响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程。
在步骤204中,响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
本实施例的方案可以应用于任一计算机设备中,计算机设备可以是单核CPU设备,也可以包括多个物理CPU的设备,根据需要可以采用非一致内存访问(Non Uniform MemoryAccess Architecture,NUMA)架构,NUMA架构包括至少两个NUMA节点(NUMA node),如图2B所示,以两个NUMA节点作为示例,宿主机可以包括NUMA节点1和NUMA节点2。在NUMA架构下,宿主机的多个物理CPU以及多个内存从属于不同的NUMA节点。每个NUMA节点均包括至少一个物理CPU与至少一个物理内存,图2B以NUMA节点包括一个物理CPU和一个物理内存为例。在NUMA节点内部,物理CPU与物理内存之间使用集成内存控制器总线(Integrated MemoryController Bus,IMC Bus)进行通信,而NUMA节点之间则使用快速通道互联(Quick PathInterconnect,QPI)进行通信。由于QPI的延迟高于IMC Bus的延迟,因此宿主机上物理CPU对内存的访问就有了远近之别(remote/local)。物理CPU访问本节点的物理内存速度较快,物理CPU访问其他NUMA节点的物理内存速度较慢。
在NUMA架构场景中,本实施例的内存可以包括上述任一物理内存。可选的,NUMA架构中任一物理内存还可以采用预留内存架构。基于此,本实施例所管理的存储空间还可以是指NUMA架构中任一物理内存中的预留存储空间。
可以理解,实际应用中,计算机设备还可以采用其他架构,根据实际需要,本实施例所指的内存根据实际应用场景可以有多种实现方式,在此不再一一列举。
本实施例方法可以应用于任意计算机设备的操作***中。如前述的预留内存场景中,可以应用于操作***的预留内存管理模块中。在其他场景中,本实施例方法可以应用于操作***内核的内存管理模块,用于对任一用户态程序使用内存时进行内存管理。
本实施例的进程可以是任意的用户态程序,本实施例对此不进行限定。作为一个示例,在预留内存场景下,所述进程可以包括虚拟机程序。虚拟机程序的启动时,虚拟机打开预留内存管理模块VMEM设备文件,通过预留内存管理模块VMEM提供的接口发起内存申请请求。
在一些例子中,虚拟器启动的过程可以是由运行于主机(host)中的虚拟机监控器(Virtual Machine Monitor,VMM)启动,在另一实施例中也被称作基于内核的虚拟机(Kernel-based Virtual Machine,KVM),被将主机上的硬件资源分配给虚拟机。虚拟机运行在主机上,一台主机上可以运行一台或多台虚拟机。虚拟机可以根据虚拟机监控器分配的硬件资源建立,在被分配硬件资源之后,虚拟机上可以运行一个或多个进程。本实施例的进程启动时发起的内存申请请求,可以是虚拟机监控器响应于用户的虚拟机创建请求后,向预留内存管理模块发起的。
本实施例方案中,进程启动时发起的内存申请请求携带有需要分配的内存大小size,本实施例中接收到内存申请请求后并未实质分配物理地址,而是只分配一块size大小的虚拟地址空间。本实施例的虚拟地址空间是指进程所能访问的内存的虚拟地址范围,是一段连续的虚拟地址空间(virtual address space)。
本实施例中分配后的虚拟地址空间会记录于进程的页表中。页表包括多个页表项,页表中划分页表项的粒度可以根据实际需要灵活配置,本实施例对此不进行限定,例如,页表中划分页表项的粒度与内存的管理粒度可以相同也可以不同。
在一些例子中,所述根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,包括:
根据所述内存申请请求中携带的内存大小分配虚拟地址空间,将所述虚拟地址空间按照预设的页表项划分粒度划分为多个虚拟地址;
在页表中创建多个页表项,并在每个页表项写入对应的虚拟地址。
本实施例中,页表中包括多个页表项,每个页表项用于记录一个虚拟地址与物理地址之间的映射关系。内存申请请求中携带有内存大小,基于该内存大小分配了虚拟地址空间后,可以将虚拟地址空间按照预设的页表项划分粒度划分为多个虚拟地址。之后在页表中创建多个页表项,并在每个页表项写入对应的虚拟地址。在本实施例应用于预留内存管理模块时,页表是存储于内核的内存管理模块管理的存储空间中,并由内核的内存管理模块管理;在一些例子中,上述写入页表的过程,可以是配置预留内存管理模块的权项使预留内存管理模块可以直接写入页表;或者,也可以是由预留内存管理模块与内核的内存管理模块交互,预留内存管理模块将要写入的内容通过内核的内存管理模块写入至页表中。上述实施例可以在进程申请内存后先建立好页表,并根据虚拟地址空间先创建好页表项,便于后续进程访问虚拟地址时触发缺页异常处理。
本实施例在进程申请内存时并未分配物理地址,当进程访问时会触发缺页异常(page fault),在进程访问所述页表中未映射物理地址的目标虚拟地址时,再为所述目标虚拟地址分配对应的目标物理地址。分配后,目标虚拟地址与目标物理地址对应,在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。示例性的,分配时按照内存的管理粒度分配所需的内存块。
例如,虚拟机访问虚拟地址空间时会携带访问地址(即目标虚拟地址),该访问地址为虚拟机的虚拟地址(Guest Virtual Address,GVA),KVM能够将GVA翻译成主机物理地址(Host Physical Address,HPA)。翻译的过程可以基于页表实现,页表中包括多个页表项,每个页表项均用于记录一个GVA与HPA之间的映射关系。由于本实施例方案中物理地址是按需分配给虚拟机的,因此,并非每个GVA都被映射到HPA,是在进程需要访问内存资源的时候才将对应的HPA映射到GVA。每个页表项还包括一些比特位,例如,A bit(用于记录该页表项对应的物理地址是否被访问过,包括读访问和写访问),D bit(用于记录该页表项对应的物理地址是否被写访问过),present(用于记录该页表项中的虚拟地址对应的物理地址是否存在)。通过present可以发现进程访问的虚拟地址对应的物理地址未存在,从而触发缺页异常,本实施例即可为进程访问的目标虚拟地址分配对应的目标物理地址。分配后,目标虚拟地址与目标物理地址对应,在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
实际应用中,预留内存管理模块需要查询分配给进程的各个虚拟地址与物理地址的映射关系。如前述实施例所述,在应用于预留内存模块的情况下,页表是存储在内核模块管理的存储空间中并由内核的内存管理模块管理的,预留内存管理需要查询时需要与内核的内存管理模块进行交互。为了降低开销提升查询速度,预留内存管理模块也可以在其管理的预留存储空间中建立一份数据,用于记录进程的各个目标虚拟地址与目标物理地址的对应关系并进行管理,以便于预留内存管理模块进行查询。如背景技术中所言的传统方案中预留内存管理模块在虚拟机创建时为虚拟机分配较大的内存空间,该内存空间是大块连续的,预留内存管理模块可以将进程的一段连续的虚拟地址与一段连续的物理地址的映射关系记录于管理所分配的内存空间的元数据中。但在本实施例的按需分配的场景下,会产生多次分配,每次分配的存储空间也会较小,从而导致分配进程的存储空间会比较零散,会形成多份虚拟地址与物理地址的映射关系。
基于此,本实施例中预留内存管理模块利用树结构来管理进程的各个虚拟地址与物理地址的映射关系,示例性的在所述为所述目标虚拟地址分配对应的目标物理地址的步骤后,所述方法还包括:
获取所述进程的树结构;
在所述树结构中新建节点,将所述目标物理地址与所述目标虚拟地址的映射关系记录于新建的节点中,以供所述预留内存管理模块通过所述树结构的节点查询分配给所述进程的各个物理地址与虚拟地址的映射关系。
本实施例中采用树结构维护,即进程对应有一颗树,树可以包括根节点以及根节点下的一个或多个节点,每个节点记录一个虚拟地址与物理地址的映射关系。例如,在所述为所述目标虚拟地址分配对应的目标物理地址后,就将所述目标虚拟地址与所述目标物理地址的映射关系记录于树的节点中。本实施例预留内存管理模块通过创建树结构维护进程的各份虚拟地址与物理地址的映射关系,因此无需通过内核的内存管理模块查询页表。另外,由于本实施例的按需分配模式会产生较多份虚拟地址与物理地址的映射关系,而树结构的搜索效率较高,因此预留内存管理模块可以通过树结构的节点快速地查询分配给所述进程的各个物理地址与虚拟地址的映射关系。实际应用中可以根据需要灵活选择树结构的类型,例如哈夫曼树、红黑树或基树(radix tree,基数树,简称基树)等等。以基树为例,基树本身适用于存储有相同前缀信息的场景,能节省存储空间,而本实施例的需要存储的多个地址信息即具有相同前缀,采用基树可节省存储空间。
在一些例子中,树的节点可以采用虚拟地址作为唯一标识,因此可以通过虚拟地址查询对应的物理地址。在另一些例子中,树的节点也可以采用物理地址作为唯一标识,因此可以通过物理地址查询对应的虚拟地址。在其他例子中,本实施例还可以包括两颗树,其中一棵树的节点以虚拟地址作为唯一标识,另一颗树的节点以物理地址作为唯一标识,通过两棵树可以快速地实现以虚拟地址查询对应的物理地址,以及以物理地址查询对应的虚拟地址。
进程持续运行,被分配的各个物理地址分别对应的虚拟地址均记录于树的各个节点中。在进程结束运行时,需要释放分配给进程的所有物理地址,通过上述树结构也可以实现快速地释放。作为例子,所述方法还可以包括:响应于所述进程的结束运行消息,获取所述进程的树结构;根据所述树结构的节点中记录的物理地址与虚拟地址的映射关系,释放所述物理地址后删除所述节点。本实施例中,通过树可以方便地释放进程的各个物理地址。例如,释放时,遍历树的各个节点,每读取一个节点,即可从节点中取出该节点记录的虚拟地址与物理地址的映射关系,从而释放物理地址后删除节点。
实际应用中,树结构实际上也是一份需要创建并存储的数据,如前所述,进程初始创建时并未分配实质的物理地址,是在后续触发缺页异常时才开始分配物理地址,以及记录触发缺页异常的目标虚拟地址与新分配的目标物理地址的映射关系于树的节点中,可选的,可以在记录映射关系时才创建树结构并存储,在另一些例子中可以预先创建,使得后续缺页异常的处理能够更快速地完成。
基于此,在一些例子中,在所述响应于进程启动时发起的内存申请请求的步骤后,所述方法还可以包括:初始化树的根节点以创建树结构,所述根节点用于在所述根节点的下一节点创建后存储所述下一节点的指针。其中,创建树结构的过程首先需要初始化树的根节点,根节点包括指针域,指针域用于存储根节点的下一节点的指针,初始化时指针域为空,在根节点的下一节点创建后才将指针写入至根节点。本实施例中,进程启动后需要执行将虚拟地址空间写入至页表的步骤,树的初始化也可以在这个阶段进行,从而后续缺页异常处理时需要可以直接利用创建好的树结构新建节点,可以快速地在树的节点中写入虚拟地址与物理地址的映射关系。
在一些例子中,缺页异常的发生可能有多种原因,例如访问的虚拟地址发生内存交换等。本实施例方案由于未分配实质的物理地址,进程访问虚拟地址时也是发生缺页异常,基于此,本实施例中,在所述根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中的步骤后,所述方法还包括:在所述页表中的所述虚拟地址空间添加对应的预设标记。
所述响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,包括:
响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,确定所述页表中所述目标虚拟地址对应有预设标记,为所述目标虚拟地址分配对应的目标物理地址。
本实施例中,通过预设标记可以表示是本实施例的按需分配模式下引发的缺页异常,因此为进程访问的目标虚拟地址分配对应的目标物理地址。其中,预设标记的实现可以根据需要灵活配置,本实施例对此不进行限定。例如可以对页表项扩展额外的字段用于存储预设标记也可以是在页表项中有预留空闲字段的情况下采用空闲字段存储预设标记。
本实施例方法可以应用于预留内存场景,在该场景中,所述方法应用于操作***的预留内存管理模块,所述操作***还包括内核管理模块。
所述为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,包括:
由所述内存管理模块检测到所述进程访问的目标虚拟地址在所述页面中未映射有物理地址,调用所述缺页异常处理函数的接口。
响应于所述缺页异常处理函数的接口被调用,执行所述缺页异常处理函数,由所述缺页异常处理函数为所述目标虚拟地址分配对应的目标物理地址后,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系。
本实施例中,在预留内存场景下,本实施例的方法是由预留内存模块执行,而页表的缺页异常是由内核管理模块识别的,缺页异常后所要执行的步骤由预留内存模块执行,基于此,本实施例的预留内存模块向内存管理模块提供有调用缺页异常处理函数的接口。当内存管理模块检测到所述进程访问的目标虚拟地址在所述页面中未映射有物理地址,调用所述缺页异常处理函数的接口后,从而缺页异常处理函数被执行,由所述缺页异常处理函数为所述目标虚拟地址分配对应的目标物理地址后,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系。在预留内存场景中,页表由内核管理模块管理,因此缺页异常的识别仍由内核管理模块执行,而缺页异常后的执行由预留内存模块提供接口供内核管理模块调用,通过上述实施例可以利用内核管理模块已有功能,因此本实施例易于实现,内核管理模块和预留内存模块可以共同配合完成本实施例的缺页异常的处理。
接下来再通过如下实施例进行说明。
(一)、宿主机预留内存场景的按需分配的内存分配实施例
1、用户态程序打开VMEM设备文件,并通过mmap接口发送一个内存分配申请,mmap接口中会指定分配的大小size,以及分配模式mode,此时指定按需分配模式pod。
例如,用户态程序可以是虚拟机程序;VMEM设备文件是指预留内存管理模块的文件,此处的mmap接口是指预留内存管理模块提供的内存申请接口。用户态程序发起的申请请求中携带的参数包括上述的内存大小size以及分配模式mode,本实施例的按需分配模式采用pod表示。
2、VMEM解析分配的参数mode,发现是按需分配模式pod,则只申请一块size大小的虚拟地址空间,并不实质分配物理地址。
3、分配一个mmap结构体,记录对应虚拟地址vaddr(virtual address)、大小size、关联进程的标识pid以及vma(内核中的vm_area_struct结构体,简称vma)等信息,并且标记分配模式为pod。
在一些场景下,预留内存管理模块为了管理分配给虚拟机的内存空间,会建立管理分配给虚拟机的内存信息的一个专用元数据结构体,该mmap结构体对应于进程,其会记录本次分配虚拟地址、所属进程等信息,所有分配出去的预留内存都会被放到这个mmap结构体的链表里面。本实施例在进程启动后创建对应该进程的一个mmap结构体,并写入至虚拟地址、所属进程等信息。
4、由于采用按需分配模式pod,后续分配的内存块都会比较零散,不会是原先的几个大块内存段,其物理地址的组织方式需要变化,本实施例采用树结构维护,树结构包括基树等类型。本实施例预先创建该树结构,创建的过程即初始化树的根节点(根节点也可称为头结构)。可选的,每个进程都对应一个树结构,该树结构可以与进程的元数据mmap关联,例如可以链接至进程的元数据mmap。
5、建立好相应的mmap结构后就返回用户态进程。
(二)宿主机预留内存场景的按需分配的内存缺页分配实施例
1、用户态程序访问按需配的内存时,由于并没有真正分配对应的内存,这时候会触发缺页异常。缺页异常由内核管理模块检测到。
2、在内存的缺页异常处理中需要进行扩展,内核管理模块判断是VMEM分配的预留内存引发的缺页异常时,可以调用VMEM的缺页处理函数。
3、VMEM的缺页处理函数会判断触发缺页的类型,如果是按需分配pod导致的缺页,就会进入按需分配流程。
4、根据触发缺页的虚拟地址,将该地址按照内存块的划分粒度(预留内存场景下内存块的划分粒度可以是2M或1G等)进行地址对齐将其2m对齐,得到对齐后的虚拟地址vaddr。在对齐后,分配一个空闲的内存块ms,其物理地址为paddr。
5、为发生缺页的进程,在页表中建立paddr和vaddr的映射关系。
6、将vaddr和paddr的对应关系,加入到进程的树结构;例如,在进程的树结构中新建节点,并将两者对应关系记录于新建的节点中。
7、更新mmap的统计计数等辅助操作,然后返回。
(三)宿主机预留内存场景的按需分配的内存释放实施例
1、进入到VMEM的释放流程,发现是按需分配内存pod,进入pod的释放流程。
例如,用户态程序结束运行时,分配给该用户态程序的内存需要释放,进入VMEM的释放流程。
2、遍历mmap的基树,从中挨个取出树的每个节点,将该项目从基树中删除。
3、解析出对应的物理地址paddr,并将该物理地址归还给VMEM。
4、遍历结束,步骤5;否则,继续步骤2。
5、释放mmap结构,完成VMEM释放流程。
与前述内存管理方法的实施例相对应,本说明书还提供了内存管理装置及其所应用的计算机设备的实施例。
本说明书内存管理装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书内存管理装置所在计算机设备的一种硬件结构图,除了图3所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中内存管理装置331所在的计算机设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图4所示,图4是本说明书根据一示例性实施例示出的一种内存管理装置的框图,所述装置包括:
申请处理模块,用于:响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程。
分配模块,用于:响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
在一些例子中,所述装置应用于操作***中的预留内存管理模块,所述分配模块在执行所述为所述目标虚拟地址分配对应的目标物理地址后,还用于:
获取所述进程的树结构;
在所述树结构中新建节点,将所述目标虚拟地址与所述目标物理地址的映射关系记录于树的节点中,以供所述预留内存管理模块通过所述树结构的节点查询分配给所述进程的各个虚拟地址与物理地址的映射关系。
在一些例子中,所述装置还包括:
释放模块,用于:响应于所述进程的结束运行消息,获取所述进程的树结构;以及根据所述树的节点中记录的所述目标虚拟地址与所述目标物理地址的映射关系,释放所述物理地址后删除所述节点。
在一些例子中,所述申请处理模块在执行所述响应于进程启动时发起的内存申请请求后,还用于:初始化树的根节点以创建树结构,所述根节点用于在所述根节点的下一节点创建后存储所述下一节点的指针。
在一些例子中,所述申请处理模块在执行所述根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,还用于:在所述页表中的所述虚拟地址空间添加对应的预设标记;
所述分配模块,还用于:响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,确定所述页表中所述目标虚拟地址对应有预设标记,为所述目标虚拟地址分配对应的目标物理地址。
在一些例子中,所述申请处理模块在执行所述页表项写入对应的虚拟地址后,还用于:
对所述页表项添加所述预设标记。
在一些例子中,所述装置应用于操作***的预留内存管理模块,所述操作***还包括内核管理模块;
由所述内存管理模块检测到所述进程访问的目标虚拟地址在所述页面中未映射有物理地址,调用所述缺页异常处理函数的接口;
响应于所述缺页异常处理函数的接口被调用,执行所述缺页异常处理函数,由所述缺页异常处理函数为所述目标虚拟地址分配对应的目标物理地址后,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系。
在一些例子中,所述申请处理模块执行所述根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,包括:
根据所述内存申请请求中携带的内存大小分配虚拟地址空间,将所述虚拟地址空间按照预设的页表项划分粒度划分为多个虚拟地址;
在页表中创建多个页表项,并在每个页表项写入对应的虚拟地址。
上述内存管理装置中各个模块的功能和作用的实现过程具体详见上述内存管理方法中对应步骤的实现过程,在此不再赘述。
相应的,本说明书实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前述内存管理方法实施例的步骤。
相应的,本说明书实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现内存管理方法实施例的步骤。
相应的,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现内存管理方法实施例的步骤。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例可以应用于一个或者多个计算机设备中,所述计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,所述电子设备的硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(DigitalSignal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是任何一种可与用户进行人机交互的产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能式穿戴式设备等。
所述计算机设备还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量主机或网络服务器构成的云。
所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该申请的保护范围内。
其中,“具体示例”、或“一些示例”等的描述意指结合所述实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (10)

1.一种内存管理方法,所述方法包括:
响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;
响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
2.根据权利要求1所述的方法,所述方法应用于操作***的预留内存管理模块,在所述为所述目标虚拟地址分配对应的目标物理地址的步骤后,所述方法还包括:
获取所述进程的树结构;
在所述树结构中新建节点,将所述目标虚拟地址与所述目标物理地址的映射关系记录于树的节点中,以供所述预留内存管理模块通过所述树结构的节点查询分配给所述进程的各个虚拟地址与物理地址的映射关系。
3.根据权利要求1所述的方法,所述方法还包括:
响应于所述进程的结束运行消息,获取所述进程的树结构;
根据所述树结构的节点中记录的虚拟地址与物理地址的映射关系,释放所述物理地址后删除所述节点。
4.根据权利要求2所述的方法,在所述响应于进程启动时发起的内存申请请求的步骤后,所述方法还包括:
初始化树的根节点以创建树结构,所述根节点用于在所述根节点的下一节点创建后存储所述下一节点的指针。
5.根据权利要求1所述的方法,所述根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,包括:
根据所述内存申请请求中携带的内存大小分配虚拟地址空间,将所述虚拟地址空间按照预设的页表项划分粒度划分为多个虚拟地址;
在所述进程对应的页表中创建多个页表项,并在所述页表项写入对应的虚拟地址。
6.根据权利要求1或5所述的方法,在所述根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中的步骤后,所述方法还包括:
在所述页表中的所述虚拟地址空间添加对应的预设标记;
所述响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,包括:
响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,确定所述页表中所述目标虚拟地址对应有预设标记,为所述目标虚拟地址分配对应的目标物理地址。
7.根据权利要求1所述的方法,所述方法应用于操作***的预留内存管理模块,所述操作***还包括内核管理模块;
所述为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,包括:
由所述内存管理模块检测到所述进程访问的目标虚拟地址在所述页表中未映射有物理地址,调用缺页异常处理函数的接口;
响应于所述缺页异常处理函数的接口被调用,执行所述缺页异常处理函数,由所述缺页异常处理函数为所述目标虚拟地址分配对应的目标物理地址后,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系。
8.一种内存管理装置,所述装置包括:
申请处理模块,用于:响应于进程启动时发起的内存申请请求,根据所述内存申请请求中携带的内存大小分配虚拟地址空间并写入至所述进程对应的页表中,将所述虚拟地址空间返回给所述进程;
分配模块,用于:响应于所述进程访问所述页表中未映射物理地址的目标虚拟地址,为所述目标虚拟地址分配对应的目标物理地址,并在所述页表中写入所述目标虚拟地址与所述目标物理地址的映射关系,以供所述进程访问。
9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现权利要求1至7任一所述方法的步骤。
CN202310090570.3A 2023-01-17 2023-01-17 内存管理方法、装置、计算机设备及存储介质 Pending CN116302491A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310090570.3A CN116302491A (zh) 2023-01-17 2023-01-17 内存管理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310090570.3A CN116302491A (zh) 2023-01-17 2023-01-17 内存管理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN116302491A true CN116302491A (zh) 2023-06-23

Family

ID=86833307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310090570.3A Pending CN116302491A (zh) 2023-01-17 2023-01-17 内存管理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116302491A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472796A (zh) * 2023-12-06 2024-01-30 摩尔线程智能科技(北京)有限责任公司 总线模块的数据处理方法、装置、电子设备和存储介质
CN117573378A (zh) * 2024-01-15 2024-02-20 摩尔线程智能科技(北京)有限责任公司 内存管理方法、装置、设备及存储介质
CN117850985A (zh) * 2024-03-07 2024-04-09 济南浪潮数据技术有限公司 一种虚拟机内存资源管理方法、装置、设备及介质
CN118193140A (zh) * 2024-05-17 2024-06-14 浙江大学海南研究院 一种基于虚拟内存的数据管理方法、设备和存储介质
CN118193140B (zh) * 2024-05-17 2024-07-26 浙江大学海南研究院 一种基于虚拟内存的数据管理方法、设备和存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472796A (zh) * 2023-12-06 2024-01-30 摩尔线程智能科技(北京)有限责任公司 总线模块的数据处理方法、装置、电子设备和存储介质
CN117573378A (zh) * 2024-01-15 2024-02-20 摩尔线程智能科技(北京)有限责任公司 内存管理方法、装置、设备及存储介质
CN117573378B (zh) * 2024-01-15 2024-07-23 摩尔线程智能科技(北京)有限责任公司 内存管理方法、装置、设备及存储介质
CN117850985A (zh) * 2024-03-07 2024-04-09 济南浪潮数据技术有限公司 一种虚拟机内存资源管理方法、装置、设备及介质
CN118193140A (zh) * 2024-05-17 2024-06-14 浙江大学海南研究院 一种基于虚拟内存的数据管理方法、设备和存储介质
CN118193140B (zh) * 2024-05-17 2024-07-26 浙江大学海南研究院 一种基于虚拟内存的数据管理方法、设备和存储介质

Similar Documents

Publication Publication Date Title
US10552337B2 (en) Memory management and device
US8190839B2 (en) Using domains for physical address management in a multiprocessor system
US8176282B2 (en) Multi-domain management of a cache in a processor system
US8095736B2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US6789156B1 (en) Content-based, transparent sharing of memory units
US9811465B2 (en) Computer system and cache control method
CN116302491A (zh) 内存管理方法、装置、计算机设备及存储介质
US20120159103A1 (en) System and method for providing stealth memory
US11119942B2 (en) Facilitating access to memory locality domain information
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
KR20120068454A (ko) 원격 페이지 폴트 처리 장치 및 그 방법
US10459852B1 (en) Memory utilization analysis for memory management systems
CN112596913B (zh) 提高内存透明大页性能的方法、装置及用户设备、存储介质
US7500073B1 (en) Relocation of virtual-to-physical mappings
US10120812B2 (en) Manipulation of virtual memory page table entries to form virtually-contiguous memory corresponding to non-contiguous real memory allocations
CN115617542A (zh) 内存交换方法、装置、计算机设备及存储介质
US7562204B1 (en) Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory
CN116225693A (zh) 元数据管理方法、装置、计算机设备及存储介质
CN116302598A (zh) 共享内存的处理方法、装置、计算机设备及存储介质
CN117769700A (zh) 动态可分配物理寻址元数据存储库
US9715460B1 (en) Enabling a first virtual storage director running in a container maintained by a hypervisor to achieve direct memory access to memory of a second virtual storage director running in a different container
CN113535392A (zh) 基于cma实现支持大内存连续分配的内存管理方法及***
CN113742253A (zh) 存储介质管理方法、装置、设备以及计算机可读存储介质
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines
CN116302550A (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