CN115617542A - 内存交换方法、装置、计算机设备及存储介质 - Google Patents
内存交换方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115617542A CN115617542A CN202211242850.3A CN202211242850A CN115617542A CN 115617542 A CN115617542 A CN 115617542A CN 202211242850 A CN202211242850 A CN 202211242850A CN 115617542 A CN115617542 A CN 115617542A
- Authority
- CN
- China
- Prior art keywords
- task
- memory
- memory block
- exchange
- metadata
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本说明书实施例提供一种内存交换方法、装置、计算机设备及存储介质,所述方法包括:获取待处理交换任务,根据所述待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求;当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后,恢复所述第一任务;若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
Description
技术领域
本说明书实施例涉及计算机技术领域,尤其涉及内存交换方法、装置、计算机设备及存储介质。
背景技术
为了灵活使用内存,操作系统中的内存交换模块能用于将进程的数据在内存与外部存储器(如磁盘等非易失性存储器)之间进行动态调度,其包括换出(swap out)和换入(swap in);内存通常可以划分为多个内存块,换出是将一个或多个内存块中存储的数据暂时换出至外部存储器;换入是把外部存储器中进程的某些数据换入至一个或多个内存块。
在计算机中,中断是操作系统用来响应硬件设备请求的一种机制。如图1A所示,操作系统原本在执行任务1,在T1时刻收到硬件的中断请求,会打断正在执行的任务1,然后调用该中断请求对应的任务2来响应请求,在T2时刻任务2执行完成,恢复执行任务1。
具体到内存交换方案中,需要向外部存储器发起交换请求,外部存储器在处理完成后会向操作系统发送完成消息,该完成消息作为一次中断,操作系统需要停止当前任务,先执行与本次中断对应的任务后,再恢复执行之前的任务。
传统的内存交换方案中,中断时需要执行的任务包括更新被交换内存块对应的页表信息和元数据。由于要执行的任务包括了页表和元数据两份数据的更新,执行过程耗费较长时间,使得操作系统难以快速地恢复被中断任务,因此需要减少对操作系统执行任务的影响。
发明内容
为克服相关技术中存在的问题,本说明书实施例提供了内存交换方法、装置、计算机设备及存储介质。
根据本说明书实施例的第一方面,提供一种内存交换方法,所述方法包括:
获取待处理交换任务,根据所述待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求;
当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后恢复所述第一任务;
若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
根据本说明书实施例的第二方面,提供一种内存交换装置,包括:
获取模块,用于:获取待处理交换任务,根据所述待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求;
返回处理模块,用于:当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后恢复所述第一任务;
元数据更新模块,用于:若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现前述第一方面所述方法实施例的步骤。
根据本说明书实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述第一方面所述方法实施例的步骤。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,在接收到目标存储器返回的交换完成消息时,操作系统中断当前执行的第一任务后,执行的操作是更新页表信息以及将内存块的元数据更新任务添加至任务队列中,相对传统技术减少了更新元数据任务的执行,也就不需要对元数据持有锁,降低了中断时陷入长时间堵塞的概率,也提升了中断恢复的速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1A是本说明书根据一示例性实施例示出的一种中断的示意图。
图1B是本说明书根据一示例性实施例示出的一种内存交换的示意图。
图2A和图2B分别是本说明书根据一示例性实施例示出的一种内存交换方法的流程图。
图2C是本说明书根据一示例性示出的预留内存场景的示意图。
图2D是本说明书根据一示例性示出的NUMA架构示意图。
图3是本说明书根据一示例性实施例示出的一种内存交换装置所在计算机设备的框图。
图4是本说明书根据一示例性实施例示出的一种内存交换装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
计算机的物理内存DRAM(Dynamic Random Access Memory,动态随机存取内存)是有限的,相对于内存来说,计算机上如磁盘等外部存储器的容量非常大。操作系统的内存交换模块通过内存交换能够解决内存空间紧张的问题。此处的外部存储器,通常是指除计算机内存及CPU(中央处理器)缓存以外的储存器,也可称为二级存储(secondary storage),包括但不限于(固定/移动)硬盘或光盘等。
内存交换是指进程的数据在内存与外部存储器之间动态调度,包括换出(swapout)和换入(swap in);换出是将内存中某些进程的数据暂时换出至外部存储器;换入是把外部存储器中进程的某些数据换入至内存。
进程运行时,操作系统会为进程分配虚拟地址空间和物理地址空间,并创建该进程对应的页表,页表用于记录虚拟地址空间和物理地址空间的映射关系。操作系统还对管理的内存维护有元数据,用于管理内存。内存交换时,由于进程的数据的存储位置发生了变更,需要更新该进程的页表;由于数据的存储位置发生变更也导致内存块的状态发生变更,因此也需要更新元数据。
页表是虚拟内存技术的概念。为了让程序获得更多的可用内存、将物理内存扩充成更大的逻辑内存,操作系统还使用了虚拟内存的技术。它将物理内存抽象为地址空间,操作系统为每个进程分配独立的一套虚拟地址,不同进程的虚拟地址和不同内存的物理地址映射起来。如果程序要访问虚拟地址的时候,由操作系统转换成不同的物理地址。此处涉及两个地址的概念:
程序所使用的内存地址叫做虚拟地址(Virtual Memory Address,VA);
实际存在硬件里面的空间地址叫做物理地址(Physical Memory Address,PA)。
虚拟地址与物理地址之间通过页表来映射。页表存储在内存中,通过CPU的MMU(Memory Management Unit,内存管理单元)来实现虚拟内存到物理内存的转换。而当进程要访问的虚拟地址在页表中查不到时,系统会产生一个缺页异常,进入系统内核空间分配物理内存、更新进程表,最后再返回用户空间,恢复进程的运行。
如图1B所示,是本说明书根据一示例性实施例示出的一种内存交换示意图,相关技术中,操作系统的内存管理单元将内存按设定的管理粒度进行划分,每一管理粒度可称为页(page),或者也可称为块。本实施例以该进程所分配的页为0至N为例,页表中包括N个页表项,每一个页表项即用于表示每一页的虚拟地址与物理地址之间的对应关系。从而,整个页表记录进程的虚拟地址空间、页表和物理地址空间之间的关系,进程的某个虚拟地址可以通过页表映射至对应的物理地址。内存换出,即内存中进程的某些数据被交换至硬盘上;内存换入,即硬盘中的进程的某些数据被交换至内存中。因此,当发生内存交换时,被交换内存块对应的页表信息需要更新。
另外,操作系统还维护有记录内存分配情况的元数据,用于管理内存中各个内存块;内存的元数据可以包括多种类型的元数据,根据不同场景,元数据可以包括但不限于表示内存块是否分配的元数据、内存的总元数据或表示内存块的冷热状态元数据、表示内存块所属进程的元数据等等。以虚拟机场景为例,一些方案中计算机设备专用于虚拟机,对虚拟机的内存分配方案中,对各个虚拟机配置了固定的虚拟地址空间,为了便于查询虚拟地址与物理地址的对应关系,在页表数据的基础上,还额外创建了用于表示内存分配情况的元数据mmap(memory map,内存的虚拟地址与物理地址的映射关系),通过该元数据可以实现虚拟地址与物理地址的双向查询,可提升查询效率。因此,当发生内存交换,也需要更新内存块对应的元数据。
相关技术的内存交换方案中,外部存储器返回交换请求的完成消息,对于操作系统是一次中断,内核处于中断上下文模式,该中断需要执行的任务包括了页表信息和元数据两份数据的更新,处理完成后才可恢复被中断的任务,由于需要更新两份数据,中断过程耗时会较长。
并且,在一些场景下还可能会陷入长时间的堵塞,因为数据的更新需要持有锁。锁机制的设计是为了防止多个线程竞争数据而导致数据错乱,线程通常都会在操作数据之前对数据加上锁,只有成功获得到锁的线程,才能操作数据,获取不到锁的线程就只能等待,直到锁被释放。
当外部存储器返回交换请求的完成消息时,操作系统中断当前任务,并执行更新页表信息和更新元数据的任务,该更新任务需要先持有锁才能进行;此时,锁可能被其他线程所持有,需要等待其他线程释放;另外,还可能出现锁刚好被中断的任务所持有的情况,此时会陷入长时间的阻塞中。
基于此,本说明书实施例提供了一种内存交换方法,在接收到目标存储器返回的交换完成消息时,操作系统中断当前正在执行的第一任务后,执行的操作是更新页表信息以及将内存块的元数据更新任务添加至任务队列中,相对传统技术减少了更新元数据任务的执行,也就不需要对元数据持有锁,降低了中断时陷入长时间堵塞的概率,也提升了中断恢复的速度。
结合图2A和图2B进行说明,图2A和图2B分别是本说明书根据一示例性实施例示出的一种内存交换方法的流程图,包括如下步骤:
在步骤202中,获取待处理交换任务,根据待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求。
在步骤204中,当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后,恢复所述第一任务。
在步骤206中,若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
本实施例方法可以应用于任意计算机设备的操作系统中,用于在内存与目标存储器之间进行数据交换。
在一些例子中,计算机设备可以采用传统的内存管理架构,即由操作系统管理整个内存。在另一些场景中,例如虚拟机场景下,计算机设备可以采用预留内存的内存分配架构,如图2C所示,是本说明书根据一示例性示出的预留内存场景的示意图,在该架构中,宿主机的内存包括两个存储空间,如图2C中采用不同填充方式示出了内存的两个存储空间,包括供内核使用的非预留存储空间a(图中采用斜线填充),以及供虚拟机使用的预留存储空间b(图中采用竖线及灰度填充)。也即是,非预留存储空间a用于供图中的内核使用,运行于操作系统上的应用(如图中示例的应用1至应用3)可使用该非预留存储空间a。而预留存储空间b则可供虚拟机(VM,Virtual Machine)使用,如图中示出的VM1至VMn共n个虚拟机。两个存储空间可以采用不同的管理粒度,即对内存的划分方式可以是不同的。图2C中为了示例方便,两个存储空间在图中是以连续的方式进行示意的。可以理解,实际应用中,两个存储空间可以是非连续的。
预留存储空间占据内存的大部分,且对于宿主机内核不可用,可以在操作系统的内核中插入一模块专门用于对预留存储空间进行管理。为了方便管理这一系列的内存同时避免大量元数据对内存的占用,以及考虑到为虚拟机分配内存时往往最少也是数百MB(MByte,兆字节)起,因此预留存储空间采用以较大的粒度划分,例如将预留存储空间划分为2M等大小的内存块(memory section,ms)进行管理;在一些场景中,大粒度也普遍被使用,如1GB(GigaByte,吉字节)等都是可选的,本实施例对此不进行限定。
在一些例子中,本实施例中内存交换方法所针对的内存,可以是内存的全部存储空间;在另一些例子中,也可以是部分存储空间,例如上述预留内存场景中,内存中被预留专门给虚拟机使用的存储空间。
应用于预留内存场景时,操作系统可以采用不同的模块分别管理预留存储空间与非预留存储空间,本实施例方法可以应用于操作系统中,用于处理预留内存与目标存储器之间的数据交换。
在另一些例子中,计算机设备可以是包括多个物理CPU的设备,根据需要可以采用非一致内存访问(Non Uniform Memory Access Architecture,NUMA)架构,NUMA架构包括至少两个NUMA节点(NUMA node),如图2D所示,以两个NUMA节点作为示例,宿主机可以包括NUMA节点1和NUMA节点2。在NUMA架构下,宿主机的多个物理CPU以及多个内存从属于不同的NUMA节点。每个NUMA节点均包括至少一个物理CPU与至少一个物理内存,图2D以NUMA节点包括一个物理CPU和一个物理内存为例。在NUMA节点内部,物理CPU与物理内存之间使用集成内存控制器总线(Integrated Memory Controller Bus,IMC Bus)进行通信,而NUMA节点之间则使用快速通道互联(Quick Path Interconnect,QPI)进行通信。由于QPI的延迟高于IMC Bus的延迟,因此宿主机上物理CPU对内存的访问就有了远近之别(remote/local)。物理CPU访问本节点的物理内存速度较快,物理CPU访问其他NUMA节点的物理内存速度较慢。
在NUMA架构场景中,本实施例的内存可以包括上述任一物理内存。可选的,NUMA架构中任一物理内存还可以采用预留内存架构。基于此,本实施例所管理的存储空间还可以是指NUMA架构中任一物理内存中的预留存储空间。
可以理解,实际应用中,计算机设备还可以采用其他架构,根据实际需要,本实施例所指的内存根据实际应用场景可以有多种实现方式,在此不再一一列举。
实际应用中,目标存储器可以有多种,例如非易失性存储器(NonvolatileMemory,NVM)、硬盘或光盘等多种存储器,本实施例对此不进行限定。在一些例子中,计算机设备中的存储器可以有多个,用于与内存进行数据交换的存储器可以是一个或多个。示例性的,还可以根据需要选取其中一个存储器作为用于交换数据的目标存储器,选取规则可以根据需要灵活配置,本实施例对此不进行限定。
如图2B所示,本实施例方法可以包括步骤212中的获取待处理任务,待处理交换任务可以包括换出任务或换入任务。待处理交换任务可以通过多种方式获取到。作为例子,操作系统的内存管理模块可以有内存老化管理功能,该功能可以管理内存中各个内存块的冷热变化情况,根据需要维护有表示内存冷热状态的元数据。可以通过扫描内存中各个内存块的使用情况,确定各个内存块的冷热状态。例如,冷页集合中可以记录处于冷状态的内存块,热页集合可以记录处于热状态的内存块。作为一个示例,可以通过冷页集合确定需要换出至二级存储的内存块。
同理,换入任务的获取也有多种方式,例如,可以是通过冷热状态数据确定要换入内存的进程,从该进程的被换出在二级存储的数据中,选取全部或部分数据换入至内存中。或者,操作系统在发现缺页异常时,针对目标存储器中需要换入的数据,在内存中确定用于换入的内存块。
在一些例子中,获取待处理交换任务的实现方式可以有很多种。例如,操作系统的内存老化管理功能可以根据设定周期识别是否有可以换出的内存块,在一个识别周期下,可能识别到有多个连续或非连续内存块的数据需要换出,基于此产生了多个待处理交换任务。或者,还可以是识别到进程所要访问的数据未存储在内存、而是在目标存储器中,需要将数据从目标存储器交换到内存上,基于此产生了待处理换入任务。可以理解,在其他场景中,待处理交换任务的产生方式还可以有其他多种方式,在此不再一一列举。
在一些例子中,如图2B所示,可以在内存中存储一用于记录各个待处理任务信息的数据,通过访问内存中该数据的存储位置,执行判断待处理任务是否为空222的步骤,若是则可结束当前流程;若否,则执行取出待处理交换任务224的步骤。
在一些例子中,待处理交换任务可以是针对一个内存块的交换任务,即一次交换处理只针对一个内存块。在另一些例子中,也可以是针对多个连续内存块的交换任务,即一次交换处理可以针对至少两个连续的内存块。在其他例子中,一次处理针对不连续的多个内存块也是可选的,本实施例对此不进行限定。
实际应用中,待处理任务可以包括一种或多种信息,例如,表示任务为换出或换入的任务类型信息、需交换数据的大小信息或需交换的内存块地址等等,实际实现时可以根据需要进行配置,本实施例对此不进行限定。
在待处理任务为换出任务的情况下,实际应用中目标存储器有可能未有足够的存储空间用于存储内存交换出的数据。基于此,在一些例子中,在向目标存储器发送与所述内存块的交换请求之前,可以是先确定目标存储器中具有可换出存储空间。例如,根据所述需交换数据的内存块,确定需交换的存储空间大小,对目标存储器尝试分配一个空闲的存储空间。若未成功分配,则本次换出任务失败,若成功分配,则可继续执行后续流程。
实际应用中,可以根据实际所应用的操作系统类型以及实际所使用的目标存储器,创建对目标存储器的交换请求。示例性的,以Linux(GNU/Linux,一种操作系统名称)操作系统以及目标存储器是磁盘为例,交换请求可以是bio(Block input output,块设备输入或输出)请求。在其他例子中,目标存储器提供有驱动程序,交换请求还可以通过调用目标存储器的驱动程序提供的接口实现。根据待处理任务的类型,交换请求可以包括换出请求或换入请求。
实际应用中,交换请求可以是异步请求或同步请求,例如,换出请求可以是异步请求,换入请求可以是同步请求等等,实际应用中可以根据需要设置,本实施例对此不进行限定。接着,可以执行步骤226向目标存储器发起交换请求。在一些例子中,若交换请求是异步请求,向目标存储器发送交换请求后,可以返回处理下一个待处理任务;若交换请求是同步请求,可以在提交请求后同步等待目标存储器的提交完成消息。
操作系统中需要运行的进程数量一般会大于CPU核心(core),对于一个CPU核心来说,在支持多进程操作系统的场景下,CPU会从一个进程快速切换至另一个进程,其间每个进程各运行几十或几百个毫秒等。而一个进程可以包括多个线程,本实施例在发出交换请求后,由于目标存储器交换数据有一定的时间,因此,从发出交换请求至目标存储器完成交换的期间,CPU可能切换至其他进程,或者是切换至本实施例的进程下的其他线程等。当接收到所述目标存储器返回的交换完成消息时,由于目标存储器属于外部硬件设备,对于操作系统来说是一次中断请求,操作系统会中断当前执行的任务,因此中断请求的响应任务要尽可能快的执行完,这样可以减少对正常进程运行调度的影响。可以理解,操作系统中断的当前任务,可能是其他进程的任务,也可能是内存交换模块所在进程下的其他线程。
因此,目标存储器执行发送交换请求的完成消息232后,本实施例方案可以执行更新页表234的步骤以及添加元数据更新任务236的步骤。本实施例设计了中断时所执行的操作是更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务。由于在更新元数据时,元数据查询、热升级任务或冷热页扫描等其他进程/线程都可能对元数据拿锁,还可能出现锁刚好被中断的进程所持有而陷入长时间堵塞的情况,基于此,本实施例中断时所执行的任务不包括元数据更新任务,因此不需要对元数据拿锁,从而可以降低发生堵塞的概率,提升了任务恢复的效率。
实际应用中,操作系统为每个进程分配独立的一套虚拟地址,并利用页表将不同进程的虚拟地址和不同内存的物理地址映射起来。每个进程对应一份页表数据。本实施例中的内存块的页表信息,内存块所属进程的页表中该内存块的页表信息。实际应用中,为了减少页表数据占用的存储空间以及快速查找虚拟地址与物理地址的映射关系,一些操作系统还采用了多级页表的解决方案,即每个进程的页表数据可以按级别包括多份目录项。以常见的四级页表为例,页表数据包括如下四份记录有页表目录项的数据:
全局页目录项PGD(Page Global Directory);
上层页目录项PUD(Page Upper Directory);
中间页目录项PMD(Page Middle Directory);
页表项PTE(Page Table Entry)。
上述四级页表中所具体记录的信息以及通过页表查询虚拟地址与物理地址的映射关系的过程可以参考相关技术,本实施例在此不进行赘述。
因此,本实施例的更新内存块的页表信息,可以是根据需交换数据的内存块的物理地址,确定该内存块所属的进程,在该进程的页表数据中更新该内存块的信息。例如,在换出任务中,页表中记录的是虚拟地址VA1对应内存块的物理地址PA1;由于该内存块的数据换出至目标存储器上的地址DA1,因此,将页表中VA1对应PA1的记录,更新为VA1对应DA1。换出任务同理,将页表中VA1对应DA1的记录,修改为VA1对应的内存块的物理地址。
如上所述,一些例子中一些页表数据包括四级数据,需要对四级数据均进行更新,实际应用中可以根据需要灵活配置,本实施例对此不进行限定。
本实施例的元数据,包括操作系统用于维护内存的任意元数据,可以包括但不限于表示内存块是否分配的元数据、内存的总元数据、内存块的冷热状态元数据、内存中各个内存块所属进程的内存分配数据mmap等等。实际应用中,在不同应用场景下元数据可以有多种不同的类型及实现方式,本实施例对此不进行限定。以虚拟机场景为例,一些方案中计算机设备专用于虚拟机,对虚拟机的内存分配方案中,对各个虚拟机配置了固定的虚拟地址空间,为了便于查询虚拟地址与物理地址的对应关系,在页表数据的基础上,还额外创建了用于表示内存分配情况的元数据mmap,用于记录内存的虚拟地址与物理地址的对应关系,可用于虚拟地址与物理地址的双向查询,可提升查询效率。可以理解,一些场景下未有内存中各个内存块所属进程的内存分配数据mmap也是可选的,本实施例对此不进行限定。
由于内存块的元数据记录的是该内存块的分配状态或老热状态等状态信息,以换出任务为例,该内存块的数据已经被成功交换至目标存储器,元数据的延迟更新会导致该内存块被重新分配的延迟,但并不会导致数据本身的错误;换入任务也同理,目标存储器的数据已经被成功交换至内存,由于换入任务在产生时,被交换内存块已被标记为分配状态,因此延迟分配状态的更新并不会导致数据错误,不会导致内存管理出错。
预设任务队列处理的时机可以根据需要灵活配置,例如实际应用中可能有多个待处理交换任务,可以是空闲的时候,如在检测到未有待处理交换任务的时候执行任务队列中的各个元数据处理任务。例如,本实施例方法可以在空闲的时候执行步骤242判断任务队列是否空,若是则结束,若否,则执行步骤224取出元数据更新任务后,执行更新元数据246的步骤。
在一些例子中,在所述确定需交换数据的内存块后,所述方法还可包括:
创建所述内存块的元数据更新任务并写入至第一存储空间中;
所述在预设任务队列中添加所述内存块的元数据更新任务,包括:
从所述第一存储空间中查询所述内存块的元数据更新任务,将查询到的所述内存块的元数据更新任务的地址添加至所述预设任务队列中。
本实施例中可以在内存中分配一存储空间用于存储预设任务队列,使得预设任务队列可以缓存在内存中。队列用于存储元数据更新任务,其中,队列的个数可以是至少一个,根据需要可以灵活配置。例如,可以是一个任务队列,换出任务和换入任务对应的元数据更新任务都放入至一个队列中。也可以是换出任务对应一个队列,换入任务对应一个队列等等。一个队列中可以放入多个元数据更新任务。示例性的,在预留内存架构中,第一存储空间可以是位于非预留存储空间,也可以是位于预留存储空间。
元数据更新任务可以携带一种或多种信息,用于描述该元数据更新任务。例如,可以包括用于表示该任务所对应的内存块的数据,例如被交换的内存块的物理地址或虚拟地址等等,还可以包括该任务所对应的交换任务,例如操作类型(换入或换出)、被交换的目标存储器的物理地址、页表信息、以及关联的回调函数等等,实际应用中可以根据需要灵活配置。
本实施例中,由于是在确定需交换数据的内存块后先创建元数据更新任务,在中断时,可以从所述第一存储空间中查询出所述内存块的元数据更新任务,直接将所述元数据更新任务的地址添加至所述预设任务队列中,因此入队操作可以快速完成,从而提升操作系统在处理中断时的处理效率,使得被中断的任务可以快速恢复。
在一些例子中,所述预设任务队列可以是无锁队列,在队列中添加元数据处理任务是入队操作,从队列中取出元数据处理任务是出队操作,锁操作会降低处理速度,无锁队列的设置是出队和入队是无需对队列持有锁,直接对队列进行所需的入队或出队操作,从而可以提升处理效率,还可以避免元数据更新任务的出队和入队操作出现新的锁竞争。
在一些例子中,所述方法还包括:向所述目标存储器发起与所述目标内存块的交换请求后,若接收到交换撤销消息,将所述目标内存块的元数据更新任务从所述第一存储空间中删除。本实施例中,元数据更新任务预先创建并存储在第一存储空间中,由于在交换过程中可能出现由于交换错误,或者是所交换的内存块发生其他操作,最终导致本次交换被撤销,因此,若接收到交换撤销消息,本次交换被撤销,因此将所述目标内存块的元数据更新任务从第一存储空间中删除掉,减少对第一存储空间的占用。
在一些例子中,所述待处理交换任务包括待处理换出任务,在所述确定需交换数据的目标内存块后,所述方法还包括:将所述目标内存块对应的页表信息进行写保护;所述更新所述目标内存块的页表信息,包括:解除所述目标内存块的页表信息的写保护后,更新所述目标内存块的页表信息。本实施例中,在确定需交换数据的目标内存块后,可以及时对该目标内存块对应的页表信息进行写保护,该写保护可以是将页表配置为只读状态,使得在换出过程中该目标内存块所存储的内容不会被更改,可以避免该目标内存块所存储的内容被更改而导致的数据不一致问题。
在一些例子中,所述方法还包括:向所述目标存储器发起与所述目标内存块的交换请求后,若接收到交换撤销消息,解除所述目标内存块的页表信息的写保护。由于在交换过程中,可能出现由于交换错误或者是所交换的内存块发生其他操作,最终导致本次交换被撤销,因此,若接收到交换撤销消息,本次交换被撤销,因此将该目标内存块的页表信息的写保护及时进行解除,恢复正常的读写状态,不影响其他任务对该目标内存块的页表信息的正常读写。
接下来再通过如下实施例进行说明。
以换出任务为例,处理过程可以包括:
1、获取待换出的内存块ms(memory section)。例如,可以从冷页集合中选取一个待换出的内存块ms;如果没有则失败,否则继续。例如,还可以是批处理场景,获取需换出的内存块的起始物理地址paddr(physics address)(可以根据地址直接换算成起始内存块ms)以及大小size(可以换算为多个ms的大小),得到需批处理的多个待换出的内存块ms。
2、查询待换出内存块ms所属的内存分配数据mmap,方便后续将内存块的物理地址paddr转换为虚拟地址vaddr(virtual address),然后通过vaddr获得页表项pmd等。在一些例子中,所有进程的mmap都在一份数据中,例如在一个链表里,因此通过ms查询mmap时需要持锁,即需要暂时锁住链表,通过遍历查询得到该ms对应的mmap。可选的,如前述实施例的批处理场景下,根据需要还可以对整份mmap数据建立副本。具体的,对于批处理的首个待换出内存块ms,在查询时先对整份mmap持锁,建立副本后释放锁。批处理的其他待换出内存块则可以利用副本查询对应的mmap。
3、根据mmap,可以获取到待换出的内存块ms对应的虚拟地址vaddr,以及对应的页表项pmd(以2m粒度为例)。
4、选取目标存储器。计算机设备中可以包括一个或多个二级存储,选取其中一个作为交换目的端的设备。常见如Linux系统中的bio磁盘存储,下面以bio为例说明。
5、从磁盘中尝试分配一个空闲的存储空间ds(device section),和ms一样大小。
6、在内存中预先申请并维护用于存储元数据更新任务的缓存池,在该缓存池中分配一个数据用于记录元数据更新任务的信息,本实施例称为缓存结构体cops(cacheoperation);若失败,表示内存未有足够的空间创建当前交换任务的元数据更新任务,则退出;否则继续。
7、初始化该缓存结构体cops,记录操作类型type、源内存地址ms,对应的虚拟地址vaddr,目标地址ds,内存页表项pmd,以及关联的回调函数out_cb等等,此时创建好本次换出任务的元数据更新任务。示例性的,该回调函数out_cb可以关联bio请求关联的回调函数bio_cb,该函数bio_cb的入参即缓存cops,用于将cops添加至任务队列。
8、创建一个bio请求,包括bio的请求类型,待交换内存ms对应的物理地址paddr,以及目标存储ds对应的磁盘扇区sector,bio请求的页面个数(转换为4k粒度);由于bio是异步操作,还要关联bio的回调函数bio_cb。其中,该回调函数是指向目标存储器发送换出请求后,目标存储器在成功换出返回的处理成功消息所关联的函数,操作系统根据此处的关联处理,在接收到处理成功消息后执行该函数bio_cb,由于该函数bio_cb将缓存cops添加至任务队列,缓存cops关联了函数out_cb,因此在缓存cops出队后,调用缓存cops中的函数out_cb,函数out_cb用于处理该缓存cops,如步骤7中所述的,缓存cops中记录有操作类型、源内存地址等等信息,因此函数out_cb可以利用这些信息完成该缓存cops的元数据更新任务。
9、将虚拟地址vaddr对应的页表改为只读,避免换出过程中内存的内容被更改,导致数据不一致。
10、向磁盘发起换出请求。例如,可以是调用bio接口,提交创建的bio请求;以使磁盘根据提交的bio请求,将虚拟地址vaddr中的内容,写入到步骤5中申请到的ds的位置中。
11、可以等待写完成;bio请求是异步请求的情况下,可以返回去处理下一个交换任务,等待bio写请求的回调函数被唤醒的时候继续。
12、如果发生写出错或者写过程被取消,比如在写入目标存储器的过程中,发生了其他线程/进程读写内存块ms的操作,可以根据需要撤销本次交换。例如,可以将cops中设置取消标记cancel;如果有cancel标记,则执行步骤13;否则执行步骤14。
13、如果发生写出错或者写过程被取消,则需要将虚拟地址vaddr对应的页表的只读状态,重新改为读写状态,并返回。
14、目标存储器写入成功后返回成功消息。即bio写请求的回调被唤醒,表示换出成功,需要更新虚拟地址vaddr对应的页表,即将其在目标存储器中的位置ds信息记录到页表项中。同时,设置页表的标志位present,该标志位表示虚拟地址vaddr是否对应有内存块,方便后续进程访问时恢复。例如,当该标志位被清除时,表示该虚拟地址vaddr未对应有内存块,而是对应至目标存储器,此时触发前述提及的缺页异常,操作系统需要执行换入任务,已将目标存储器存储的数据换入至内存中。
15、由于bio的异步返回调用是一次中断,操作系统需要中断上下文,需要避免类似等待自旋锁而长时间被阻塞的情况发生;而步骤17的更新元数据需要拿锁,有概率发生拿不到锁而长时间等待的情况。基于此,本实施例将元数据更新任务添加至无锁队列中。
16、在空闲的时候,从无锁队列中出队一个里面缓存的元数据更新任务。无锁队列中可以包括多个元数据更新任务。
17、对于每个元数据更新任务,获取元数据的保护锁,更新对应的元数据;例如,内存块的分配状态的数据、冷热状态数据、内存分配数据mmap等等。
18、判断无锁队列是否为空;若非空,则回到步骤16;否则完成。
以换入任务为例,处理过程可以包括:
1、通过冷热状态数据,确定要换入内存的进程a,找到其内存分配数据mmap,以便后续查询和更新使用。
2、选取一个二级存储作为交换源端的设备。
3、从进程a的内存分配数据mmap中,选取属于一个被交换出去虚拟内存vaddr,其内容位于二级存储中的存储块ds。在其他例子中,确定需要换入的内存块也可以有其他方式,例如操作系统在发现缺页异常时,针对目标存储器中需要换入的数据,在内存中确定用于换入的内存块。
4、在内存中分配一个或多个用于换入数据的内存块ms,如果失败则退出,否则继续。
5、在用于存储元数据更新任务的缓存池中分配一个缓存结构体cops;若失败,表示内存未有足够的空间创建当前交换任务的元数据更新任务,则退出;否则继续。
6、初始化该操作缓存结构体cops,记录操作类型type、源内存地址ms,对应的虚拟地址vaddr,目标地址ds,内存页表项pmd,以及关联的回调函数in_cb等等。
7、创建一个bio请求,里面包括bio的请求类型,待交换内存ms对应的物理地址pfn,以及目标存储ds对应的磁盘扇区sector,bio请求的页面个数(转换为4k粒度);由于bio是异步操作,还要关联bio的回调函数bio_cb。
8、设置开始换入标志flag,后续会等待到这个标志被清除。示例性的,可以是利用一全局变量设置该换入标志,也可以是cops中的一个字段变量;该换入标志flag指示本次换入任务需要同步等待换入标志flag的清除,即换入标志flag清除后换入任务才可返回,即完成本次换入任务。
9、向磁盘发起换入请求。具体的,可以调用bio接口,提交创建的bio请求,调用磁盘的读函数,将磁盘的ds位置中存储的数据,写入到虚拟地址vaddr对应的内存块中。本实施例中,换入请求可以是同步请求,需要同步等待内存读取完毕才返回。
10、等待bio读请求的回调函数被唤醒。
11、bio的读请求回调被唤醒,换入成功,需要更新虚拟地址vaddr对应的页表,将对应的物理地址pfn信息更新到页表中,后续就可以直接读写。
12、同样,由于bio的异步返回调用是在中断上下文,需要避免类似等待自旋锁而长时间被阻塞的情况发生;而步骤14的更新元数据将需要拿锁,有概率发生拿不到锁等待的情况。基于此,本实施例将元数据更新任务添加至无锁队列中。
13、清除换入标志,主流程结束换入等待。
14、在空闲的时候,从无锁队列中出队一个里面缓存的元数据更新任务。无锁队列中可以包括多个元数据更新任务。
15、对于每个元数据更新任务,获取元数据的保护锁,更新对应的元数据;例如,内存块的分配状态的数据、冷热状态数据、内存分配数据mmap等等。
16、判断无锁队列是否为空;若非空,则回到步骤14;否则,完成换入流程。
与前述内存交换方法的实施例相对应,本说明书还提供了内存交换装置及其所应用的计算机设备的实施例。
本说明书内存交换装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书内存交换装置所在计算机设备的一种硬件结构图,除了图3所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中内存交换装置331所在的计算机设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图4所示,图4是本说明书根据一示例性实施例示出的一种内存交换装置的框图,所述装置包括:
获取模块41,用于:获取待处理交换任务,根据所述待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求;
返回处理模块42,用于:当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后恢复所述第一任务;
元数据更新模块43,用于:若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
在一些例子中,所述获取模块41还用于:在所述根据所述待处理交换任务确定需交换数据的内存块后,创建所述内存块的元数据更新任务并写入至内存的第一存储空间中;
所述元数据更新模块43,还用于:
从所述第一存储空间中查询所述内存块的元数据更新任务的地址,将查询到的所述内存块的元数据更新任务的所述地址添加至所述预设任务队列中。
在一些例子中,所述预设任务队列包括无锁队列。
在一些例子中,所述检测到满足设定条件,包括:检测到当前未有待处理交换任务。
在一些例子中,所述装置还包括删除模块,用于:
向所述目标存储器发起与所述目标内存块的交换请求后,若接收到交换撤销消息,将所述目标内存块的元数据更新任务从所述第一存储空间中删除。
在一些例子中,所述待处理交换任务包括待处理换出任务,所述获取模块41还用于:在确定需交换数据的目标内存块后,将所述目标内存块对应的页表信息进行写保护;
所述更新所述目标内存块的页表信息,包括:解除所述目标内存块的页表信息的写保护后,更新所述目标内存块的页表信息。
在一些例子中,所述装置还包括解除模块,用于:
向所述目标存储器发起与所述目标内存块的交换请求后,若接收到交换撤销消息,解除所述目标内存块的页表信息的写保护。
上述内存交换装置中各个模块的功能和作用的实现过程具体详见上述内存交换方法中对应步骤的实现过程,在此不再赘述。
相应的,本说明书实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前述内存交换方法实施例的步骤。
相应的,本说明书实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现内存交换方法实施例的步骤。
相应的,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现内存交换方法实施例的步骤。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例可以应用于一个或者多个计算机设备中,所述计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,所述电子设备的硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(DigitalSignal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是任何一种设备,例如服务器等;还可以包括可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(PersonalDigital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能式穿戴式设备等。
所述计算机设备还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(CloudComputing)的由大量主机或网络服务器构成的云。
所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该申请的保护范围内。
其中,“具体示例”、或“一些示例”等的描述意指结合所述实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (10)
1.一种内存交换方法,所述方法包括:
获取待处理交换任务,根据所述待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求;
当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后,恢复所述第一任务;
若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
2.根据权利要求1所述的方法,在所述根据所述待处理交换任务确定需交换数据的内存块后,所述方法还包括:
创建所述内存块的元数据更新任务并写入至第一存储空间中;
所述在预设任务队列中添加所述内存块的元数据更新任务,包括:
从所述第一存储空间中查询所述内存块的元数据更新任务,将查询到的所述内存块的元数据更新任务的地址添加至所述预设任务队列中。
3.根据权利要求2所述的方法,所述预设任务队列包括无锁队列。
4.根据权利要求1所述的方法,所述检测到满足设定条件,包括:检测到当前未有待处理交换任务。
5.根据权利要求2所述的方法,所述方法还包括:
向所述目标存储器发起与所述目标内存块的交换请求后,若接收到交换撤销消息,将所述目标内存块的元数据更新任务从所述第一存储空间中删除。
6.根据权利要求1所述的方法,所述待处理交换任务包括待处理换出任务,所述确定需交换数据的目标内存块后,所述方法还包括:
将所述目标内存块对应的页表信息进行写保护;
所述更新所述目标内存块的页表信息,包括:解除所述目标内存块的页表信息的写保护后,更新所述目标内存块的页表信息。
7.根据权利要求6所述的方法,所述方法还包括:
向所述目标存储器发起与所述目标内存块的交换请求后,若接收到交换撤销消息,解除所述目标内存块的页表信息的写保护。
8.一种内存交换装置,所述装置包括:
获取模块,用于:获取待处理交换任务,根据所述待处理交换任务确定需交换数据的内存块,向目标存储器发送与所述内存块对应的交换请求;
返回处理模块,用于:当接收到所述目标存储器返回的交换完成消息时,中断当前正在执行的第一任务,并执行更新所述内存块的页表信息以及在预设任务队列中添加所述内存块的元数据更新任务的操作,在所述操作完成后恢复所述第一任务;
元数据更新模块,用于:若检测到满足设定条件,处理所述预设任务队列中的元数据更新任务。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现权利要求1至7任一所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242850.3A CN115617542A (zh) | 2022-10-11 | 2022-10-11 | 内存交换方法、装置、计算机设备及存储介质 |
PCT/CN2023/122153 WO2024078342A1 (zh) | 2022-10-11 | 2023-09-27 | 内存交换方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242850.3A CN115617542A (zh) | 2022-10-11 | 2022-10-11 | 内存交换方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617542A true CN115617542A (zh) | 2023-01-17 |
Family
ID=84862169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211242850.3A Pending CN115617542A (zh) | 2022-10-11 | 2022-10-11 | 内存交换方法、装置、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115617542A (zh) |
WO (1) | WO2024078342A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115934587A (zh) * | 2023-03-15 | 2023-04-07 | 瀚博半导体(上海)有限公司 | 内存管理单元和内存管理方法 |
WO2024078342A1 (zh) * | 2022-10-11 | 2024-04-18 | 杭州阿里云飞天信息技术有限公司 | 内存交换方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8271450B2 (en) * | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
US9798673B2 (en) * | 2013-03-14 | 2017-10-24 | Sandisk Technologies Llc | Paging enablement of storage translation metadata |
CN111427969B (zh) * | 2020-03-18 | 2022-05-27 | 清华大学 | 一种分级存储系统的数据替换方法 |
CN114328031B (zh) * | 2022-03-03 | 2022-06-07 | 成都云祺科技有限公司 | 元数据组织方法、系统、存储介质及备份方法、检索方法 |
CN115617542A (zh) * | 2022-10-11 | 2023-01-17 | 阿里巴巴(中国)有限公司 | 内存交换方法、装置、计算机设备及存储介质 |
-
2022
- 2022-10-11 CN CN202211242850.3A patent/CN115617542A/zh active Pending
-
2023
- 2023-09-27 WO PCT/CN2023/122153 patent/WO2024078342A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024078342A1 (zh) * | 2022-10-11 | 2024-04-18 | 杭州阿里云飞天信息技术有限公司 | 内存交换方法、装置、计算机设备及存储介质 |
CN115934587A (zh) * | 2023-03-15 | 2023-04-07 | 瀚博半导体(上海)有限公司 | 内存管理单元和内存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2024078342A1 (zh) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552337B2 (en) | Memory management and device | |
US20230315342A1 (en) | Memory system and control method | |
US20130091331A1 (en) | Methods, apparatus, and articles of manufacture to manage memory | |
US20080235477A1 (en) | Coherent data mover | |
US20090106479A1 (en) | Managing memory systems containing components with asymmetric characteristics | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
JP6337902B2 (ja) | ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム | |
KR20100132244A (ko) | 메모리 시스템 및 메모리 시스템 관리 방법 | |
JP2008090657A (ja) | ストレージシステム及び制御方法 | |
CN116302491A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN114595164B (zh) | 在虚拟化平台中管理tlb高速缓存的方法和装置 | |
US11907746B2 (en) | Compound storage system | |
US20080313409A1 (en) | Separating device and separating method | |
CN116661690A (zh) | 记录内存状态的方法、装置、计算机设备及存储介质 | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
JP2017033375A (ja) | 並列計算システム、マイグレーション方法、及びマイグレーションプログラム | |
CN115756838A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
EP3916567B1 (en) | Method for processing page fault by processor | |
CN117769700A (zh) | 动态可分配物理寻址元数据存储库 | |
CN111143418B (zh) | 一种数据库读取数据方法、装置、设备及存储介质 | |
JP2004326175A (ja) | プロセッサ、キャッシュシステム及びキャッシュメモリ | |
CN116302550A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
JP4354583B2 (ja) | アクセス方法及びアクセス処理プログラムを記録した記録媒体 |
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 |