CN113296932B - 实现内存换出-换入的系统及方法 - Google Patents
实现内存换出-换入的系统及方法 Download PDFInfo
- Publication number
- CN113296932B CN113296932B CN202010730226.2A CN202010730226A CN113296932B CN 113296932 B CN113296932 B CN 113296932B CN 202010730226 A CN202010730226 A CN 202010730226A CN 113296932 B CN113296932 B CN 113296932B
- Authority
- CN
- China
- Prior art keywords
- memory
- container
- swap
- subsystem
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 453
- 238000000034 method Methods 0.000 title claims abstract description 146
- 230000008569 process Effects 0.000 claims abstract description 111
- 238000002955 isolation Methods 0.000 claims abstract description 31
- 230000008859 change Effects 0.000 claims abstract description 27
- 238000013507 mapping Methods 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 230000002085 persistent effect Effects 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
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
技术领域
本申请涉及计算机技术领域,具体涉及一种实现内存换出-换入的系统。本申请同时涉及一种实现内存换出换入的方法、装置、电子设备及存储设备。
背景技术
目前,云计算环境下,尤其是Serverless(无服务器)模式,为应对服务请求流量的变化往往需要扩容和缩容。所谓扩容和缩容是指应用的运行实例从一个增加到多个,或者从多个副本减少为较少的副本。扩容和缩容的能力称为弹性。Serverless模式的快速扩缩容场景为弹性场景。Serverless弹性场景中为缩短服务响应时间,一般预先准备多个应用程序的运行实例并处于待命状态,当需要按资源的预置规格接全量流量时则快速准备好提供权利流量服务能力的上下文。所谓待命状态是指运行实例为存活状态,但其上下文以缩小的内存规格的低功耗状态保持运行,不接全量流量。Serverless弹性场景下,需要提供运行实例的内存资源的快速动态伸缩方案。
现有技术中,操作系统内核(例如,Linux)针对运行实例的内存交换方案如下:内核统一管理用于内存换出-换入的交换资源(例如,Swap设备)。在操作系统启用内存交换(Swap)的情况下,操作系统中所有进程的内存换出存储在统一的Swap空间中,换出粒度以Page(页)为粒度,即Swap空间的存储层面并不对换出的内存页进行分类,未按照容器分区存储或者完全隔离存储。然而Serverless模式以容器粒度分配资源和部署,容器技术的实现依赖CGroup,针对运行实例进行实际的资源分配时以CGroup为粒度分配,针对单个容器,随着内存页的多次换出-换入之后,换出到交换设备上的内存页的存储会变的随机化,这种随机化会影响下一次换入的性能。因此,以页为粒度不能满足Serverless模式下的内存换出-换入需要,提供一种容器粒度的隔离存储,实现更大粒度的内存换出-换入方案显得非常重要。
因此,如何实现按照容器粒度的存储隔离是需要解决的问题。
发明内容
本申请提供一种实现内存换出-换入的系统,以实现按照容器粒度的存储隔离。
本申请实施例提供一种实现内存换出-换入的系统,设置有重定向层;所述重定向层在系统中对应特定容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;以及,在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的所述指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页。
可选的,所述为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上,包括:
确定所述外部存储设备中挂载到操作系统的、所述特定容器对应的目标交换设备;每个容器对应一个目标交换设备;
确定所述内存页在所述目标交互设备中的偏移量;
根据所述目标交换设备以及所述偏移量确定所述位置;
按照所述位置以及所述数据信息需要占用的内存空间的大小,将所述数据信息映射到所述目标交换设备。
可选的,所述目标交换设备为用于持久化内存中数据信息的块设备或文件。
可选的,所述重定向层向为所述容器提供内存资源管理的内存子系统提供独立于交换资源查询视图的存储视图;所述存储视图为记录有所述特定容器换出的内存页的指定虚拟内存空间映射到所述外部存储设备的位置的内存页表。
可选的,所述系统还包括Swap子系统;所述Swap子系统,用于向所述内存子系统提供所述交换资源查询视图。
可选的,所述重定向层,为基于Frontswap框架实现的后端。
可选的,所述重定向层向所述内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在外部存储设备中对应映射区域的镜像。
可选的,所述存储镜像的存储格式,为与所述Swap子系统的存储格式相同。
可选的,所述存储镜像,为通过Linux系统提供的mkswap工具创建的Swap文件。
可选的,所述重定向层与所述Swap子系统共享存储层。
可选的,所述重定向层向所述内存子系统提供用于换出内存页的存储接口;其中,所述存储接口的处理逻辑包括:如果调用基于Frontswap的存储接口失败,则调用所述Swap子系统的存储接口进行内存页的换出。
可选的,所述重定向层,在Linux内核的Swap子系统提供的用于进行Swap前端处理的hook点注册回调函数实现所述存储接口。
可选的,所述容器为基于Cgroup做资源隔离的容器实现。
本申请实施例还提供一种实现内存换出-换入的方法,包括:
确定特定容器的进程需要换出的内存页;
确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的位置,根据所述位置将需要换出的内存页存储到所述目标交换设备上。
可选的,所述确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的位置,根据所述位置将需要换出的内存页存储到所述目标交换设备上,包括:
在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;
通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;
根据所述映射区域将需要换出的内存页存储到所述目标交换设备上。
可选的,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储视图。
可选的,所述Swap子系统,向所述内存子系统提供交换资源查询视图;所述交换资源查询视图可被所述内存子系统访问并用于换入所述特定容器的进程的内存页。
可选的,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在目标交换设备上对应映射区域的镜像。
可选的,所述重定向层与所述Swap子系统共享存储层。
可选的,所述重定向层为基于Frontswap框架实现的后端;所述第一存储接口的处理逻辑包括:先调用基于Frontswap的存储接口,如果调用失败,接着调用所述Swap子系统的存储接口进行内存页的换出。
本申请实施例还提供一种实现内存换出-换入的装置,包括:
换出页确定单元,用于确定特定容器的进程需要换出内存页;
内存换出单元,用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的位置,根据所述位置将需要换出的内存页存储到所述目标交换设备上。
本申请实施例还提供一种实现容器内存隔离的方法,应用于重定向层,所述重定向层设置于内核内存子系统与内核Swap子系统之间,包括:
在第一容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述第一容器的指定虚拟内存空间所在的第一位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;
在第二容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述第二容器的指定虚拟内存空间所在的第二位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;其中,所述第二位置为与所述第一位置隔离的位置。
本申请实施例还提供一种电子设备,包括:存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行本申请实施例提供的所述方法。
本申请实施例还提供一种存储设备,存储有计算机程序,所述计算机程序被处理器运行后,执行本申请实施例提供的所述方法。
与现有技术相比,本申请具有以下优点:
本申请实施例提供的一种实现内存换出-换入的系统,设置有重定向层;所述重定向层在系统中对应特定容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;以及,在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的所述指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页。通过实现重定向层,为特定容器的进程需要换出的内存页预先设置换出的交换空间的位置,能按照容器粒度对换出的内存页分类存储,可实现容器粒度的存储隔离,并且可以当需要从交换空间中将数据读入内存时按照容器粒度快速恢复特定容器的运行实例。
本申请实施例提供的一种实现内存换出-换入的方法、装置及设备,通过确定特定容器的进程需要换出内存页;确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的位置,根据所述位置将需要换出的内存页存储到所述目标交换设备上,由于为特定容器的运行实例需要换出的内存页指定换出的位置,因此针对单个容器换出的内存页可以指定换出序列,可按照容器粒度进行存储隔离,不会随着多次换出-换入内存而导致内存存储的随机化,因此不影响内存换入的性能,当有恢复特定容器的运行实例的所有内存映射,能快速恢复上下文,满足了云计算环境和无服务器环境下的加速实例启动。
附图说明
图1是本申请第一实施例提供的一种实现内存换出-换入的系统示意图;
图2是本申请第一实施例提供的另一种实现内存换出-换入的系统示意图;
图3是本申请第二实施例提供的一种实现内存换出-换入的方法处理流程图;
图4是本申请第三实施例提供的一种实现内存换出-换入的装置示意图;
图5是本申请第四实施例提供的一种实现容器内存隔离的方法的处理流程图;
图6是本申请提供的电子设备示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种实现内存换出-换入的系统,设置有重定向层;所述重定向层在系统中对应特定容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;以及,在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的所述指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页。
所谓容器,是将代码及其所有依赖关系打包的标准化的软件单元。每个容器在用户空间中作为独立进程运行,与其他容器共享操作系统内核,容器之间相互隔离。容器可以依赖Linux操作系统的CGroups提供的资源限制能力实现资源控制。所谓CGroups(controlgroups),是Linux内核提供的一种可以限制单个进程或者一组进程所使用资源的机制。CGroups为每种可以控制的资源定义了一个子系统,对cpu、内存等资源实现精细化的控制。本实施例中,所述容器为基于Cgroup做资源隔离的容器实现。
以容器A和容器B为例说明内核现有的Swap实现方案。容器A的进程A1和A2,以及容器B的进程B1和B2,共享系统的所有Swap资源。A1和A2运行于CGroup A限制的资源,B1和B2运行于CGroup B限制的资源。当A1、A2、B1、B2需要换出内存时,通过内核的Swap子系统进行换出,换出的上下文数据的存储以Page为粒度,并未按照CGroup或Namespace进行分类及隔离存储。针对单个Cgroup,随着多次换出-换入之后,其换出到Swap设备上的内存页的存储会变的随机化,从而影响后续换入的性能。另外,内核的Swap子系统在实现换出内存在外部设备的存储时没有隔离,安全也会受到影响。例如,某个Swap设备上既可能存储了对应CGroup A的进程上下文,也可能存储有CGroup B换出的进程上下文,如果其中一个CGroup换入内存时破坏了该Swap设备,则另一个CGroup的进程也会无法从Swap存储区恢复。
本实施例提供的实现内存换出-换入的系统,在操作系统内核的内存子系统与存储子系统之间增加重定向层,按照容器粒度对换出的内存页分类存储,对需要换出到外部存储设备的内存页实现容器粒度的存储隔离。其中,所谓外部存储设备,是指可作为Swap空间的存储设备。
请参考图1,图1给出了一种设置有重定向层的实现内存换出-换入的系统。图中包括:内存子系统101,重定向层102以及存储子系统103。内存子系统101向容器,即CGroup的运行实例提供内存换出(store)换入(load)接口。图中,当Cgroup A的运行实例不需要提供预置规格的全量服务时,CGroup A的运行实例的上下文可换出到外部存储设备,例如,进程A1和A2的运行时上下文调用内存子系统101的接口换出到作为Swap空间的存储设备。在内存子系统101的接口的hook点注册了可以实现重定向层102的处理接口。在不需要改变内存子系统的处理情况下,将需要换出的内存页通过重定向层102的处理接口按照CGroup(容器)粒度重定向,再通过存储子系统103的接口分类存储到作为Swap空间的底层存储设备。其中,所述重定向层具体通过下述处理将需要换出的内存页换出到Swap空间:确定所述外部存储设备中挂载到操作系统的、所述特定容器对应的目标交换设备;每个容器对应一个目标交换设备;确定所述内存页在所述目标交互设备中的偏移量;根据所述目标交换设备以及所述偏移量确定所述位置;按照所述位置以及所述数据信息需要占用的内存空间的大小,将所述数据信息映射到所述目标交换设备。其中,所述目标交换设备为用于持久化内存中数据信息的块设备或文件。Swap空间可包含一个或多个Swap设备。Swap设备可以为独立的块设备,也可以为通过特定命令工具创建Swap file。这些Swap设备组成统一的Swap底层存储设备。
本实施例中,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储视图;所述存储视图为记录有所述特定容器换出的内存页的指定虚拟内存空间映射到所述外部存储设备的位置的内存页表。所述内存页表的每个页对应的表项存储偏移量,用于指示所述容器的进程的内存页的存储位置。例如,所述内存页表的每个表项记录有换出的内存页在所述目标交换设备上的偏移量,用于指示内存页在所述容器对应的目标交换设备中的存储位置。进一步,所述重定向层向为所述容器提供内存资源管理的内存子系统提供独立于交换资源查询视图的存储视图。所述系统还包括Swap子系统;所述Swap子系统,用于向所述内存子系统提供所述交换资源查询视图;所述交换资源查询视图可被所述内存子系统访问并用于换入所述特定容器的进程的内存页。即,由所述重定向层(Swap RedirectLayer)提供独立的存储视图,对内存子系统完全透明;由内核现有的Swap子系统为上层Kernel内存子系统提供资源查询视图。从而,将Swap资源的存储和资源的查询进行分离,在不侵入整个Linux内存子系统和Swap子系统的情况下,给现有的内核Swap子系统提供按照Cgroup隔离存储的能力。
本实施例中,提供了重定向方案的实现,具体的,所述重定向层,为基于Frontswap框架实现的后端。具体包括:利用现有Linux内核提供的Transcendent Memory针对匿名内存映射的Frontswap框架,实现一个Frontswap框架的后端,通过后端对需要换出的内存的换出的存储位置进行重定向,按照需要换出的内存页所属的Cgroup进行分类存储,实现Cgroup粒度的存储隔离。CGroup粒度即为容器粒度。所谓Frontswap,是指Linux内核针对匿名内存分类的抽象接口定义。通过该抽象接口可以在内核Swap子系统注册的hook点,在实现换出的内存页的存储之前进行重定向处理。从而,不需要内存子系统进行改变,对内存子系统完全透明。当然,也可以在该hook点实现其他处理,在换出的内存页真正存储到底层存储设备之前进行其他相应操作。所述后端可以通过模块化动态插入现有的Linux内核。
本实施例中,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在外部存储设备中对应映射区域的镜像。所述存储镜像的存储格式,为通过Linux系统提供的mkswap工具创建的Swap文件。即,所述存储镜像的存储格式,与所述Swap子系统的存储格式相同。所述重定向层向所述内存子系统提供用于换出内存页的存储接口,具体在Linux内核的Swap子系统提供的用于进行Swap前端处理的hook点注册回调函数实现所述存储接口。其中,所述存储接口的处理逻辑包括:如果调用基于Frontswap的存储接口失败,则调用所述Swap子系统的存储接口进行内存页的换出。
本实施例中,Frontswap保持独立的存储视图和存储镜像,其中,Frontswap层的存储镜像通过Linux系统提供的mkswap工具创建,因而,Frontswap层和Swap子系统的存储格式相同。内核的Swap层存储作为Frontswap层存储的后端,可以实现为两层存储,也可以共享一层存储设备。即进一步,所述重定向层与所述Swap子系统共享存储层,从而提高存储资源的利用效率。共享存储层时,操作系统(如Linux)内核的原Swap子系统的查询接口查询到的swap相关内容和实际使用是一致的,因此可以复用内核的Swap查询接口;而存储使用重定向层实现的存储接口,从而可以将存储服务和资源查询服务分离,由Frontswap提供存储服务,内核现有的Swap子系统提供上层内存子系统需要的Swap资源查询视图。请参考图2,图中包括:内存子系统201,FrontSwap层202,存储子系统203以及Swap子系统204。在操作系统的Frontswap及Swap功能开启的情况下,操作系统中每个CGroup的进程的内存换出存储在统一Swap空间中与每个CGroup对应的Swap设备。重定向层在内存页换出时按照CGgroup粒度进行分类,进而在Swap空间的存储层面实现了按照CGroup粒度的分区存储或完全隔离存储。图中,容器A的进程A1和A2共享CGroup A对应的Swap资源Swap File A;容器B的进程B1和B2,共享CGroup B的Swap资源:Swap File B。当需要换出内存页时,CGroup运行实例调用内存子系统的Swap接口进行Swap out/Swap in,触发Frontswap层202注册的回调函数,通过存储子系统203对底层存储进行write/read。Swap空间的交换资源查询视图由内核现有的Swap子系统204提供。从图2中可以看出,Frontswap层和Swap子系统共享存储层,不需要单独提供存储镜像,从而提高存储资源的利用效率。同时,将存储服务和资源查询服务进行了分离,由Frontswap提供存储服务,内核现有的Swap子系统提供上层内存子系统需要的Swap资源查询视图,使得不需要侵入Linux现有的内存子系统与Swap子系统。所述方法可用于实现容器粒度(如CGroup粒度)的内存换出-换入,也可用于进程粒度的内存换出-换入,例如,利用重定向层对需要换出内存的特定进程的内存页分类存储到所述特定进程的虚拟内存空间的外部存储设备上。
需要说明的是,用于作为内存换出-换入的Swap空间的后端存储设备可以为任何可能做成Swap设备的设备,包括但不限于块设备、文件或者内存设备等。
至此,对本申请实施例提供的系统进行了说明,所述系统设置有重定向层;所述重定向层在系统中对应特定容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;以及,在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的所述指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页。通过实现重定向层,为特定容器的进程需要换出的内存页预先设置换出的交换空间的位置,能按照容器粒度对换出的内存页分类存储,可实现容器粒度的存储隔离,并且可以当需要从交换空间中将数据读入内存时按照容器粒度快速恢复特定容器的运行实例。
以上述实施例为基础,本申请第二实施例提供一种实现内存换出-换入的方法,包括:步骤S301至步骤S302。
步骤S301,确定特定容器的进程需要换出的内存页。
当特定容器的运行实例判断不需要提供预置规格的全量服务时,运行实例的上下文可换出到Swap空间。例如,容器CGroup A的进程A1和A2判断需要换出内存,调用内核的Swap接口换出到作为Swap空间的存储设备。运行实例(进程)确定满足预设换出条件的内存页。
步骤S302,确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的位置,根据所述位置将需要换出的内存页存储到所述目标交换设备上。
所述目标交换设备为用于持久化内存中数据信息的块设备或文件。可以针对内存页需要隔离存储的容器指定单独的Swap设备或Swap文件。
本实施例中,为所述容器提供内存资源管理的内存子系统调用存储接口后,通过重定向层实现内存换出到目标交换设备上。所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储视图;所述存储视图为记录有所述特定容器换出的内存页的指定虚拟内存空间映射到所述外部存储设备的位置的内存页表。所述内存页表的每个页对应的表项存储偏移量,用于指示所述容器的进程的内存页的存储位置。例如,每个表项记录换出的内存页在容器对应的目标交换设备上的偏移量,用于指示所述容器的进程的内存页在目标交换设备中的存储位置。进一步,所述重定向层向所述内存子系统提供独立于交换资源查询视图的存储视图。由操作系统内核的Swap子系统,向所述内存子系统提供交换资源查询视图;所述交换资源查询视图可被所述内存子系统访问并用于换入所述特定容器的进程的内存页。。即,由所述重定向层(Swap Redirect Layer)提供独立的存储视图,对内存子系统完全透明;由内核现有的Swap子系统为上层Kernel内存子系统提供资源查询视图。从而,将Swap资源的存储和资源的查询进行分离,在不侵入整个Linux内存子系统和Swap子系统的情况下,给现有的内核Swap子系统提供按照Cgroup隔离存储的能力。具体的,所述重定向层,为基于Frontswap框架实现的后端。利用现有Linux内核提供的Transcendent Memory针对匿名内存映射的Frontswap框架,实现一个Frontswap框架的后端,通过后端对需要换出的内存的换出的存储位置进行重定向,按照需要换出的内存页所属的Cgroup进行分类存储,实现Cgroup粒度的存储隔离。当然,也可以在该hook点实现其他处理,在换出的内存页真正存储到底层存储设备之前进行其他相应操作。所述后端可以通过模块化动态插入现有的Linux内核。所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在目标交换设备上对应映射区域的镜像。所述存储镜像的存储格式,可与所述Swap子系统的存储格式相同。具体的,均为通过Linux系统提供的mkswap工具创建的Swap文件。进一步,所述重定向层与所述Swap子系统共享存储层,从而提高存储资源的利用效率。共享存储层时,可以将存储服务和资源查询服务分离,由Frontswap提供存储服务,内核现有的Swap子系统提供上层内存子系统需要的Swap资源查询视图。Frontswap层和Swap子系统共享存储层,不需要单独提供存储镜像,从而提高存储资源的利用效率。同时,在不需要侵入Linux现有的内存子系统与Swap子系统实现按照CGroup粒度对换出的内存页进行分类存储。
本实施例中,所述重定向层具体在Linux内核的Swap子系统提供的用于进行Swap前端处理的hook点注册回调函数实现存储接口。实现内存换出的接口调用的逻辑包括下述处理:
在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;
通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;
根据所述映射区域将需要换出的内存页存储到所述目标交换设备上。
其中,所述第一存储接口的处理逻辑包括:先调用基于Frontswap的存储接口,如果调用失败,接着调用所述Swap子系统的存储接口进行内存页的换出。
本实施例中,当需要按资源的预置规格接全量流量时则快速准备好提供权利流量服务能力的上下文。由于换出到Swap空间的内存页以CGroup为单位分类存储,因此针对单个容器换出的内存页可以指定换出序列,即可按照容器粒度进行存储隔离,不会随着多次换出-换入内存而导致内存存储的随机化,因此不影响内存换入的性能,当有恢复特定容器的运行实例的所有内存映射,能快速恢复上下文,满足了云计算环境和无服务器环境下的加速实例启动。
与第二实施例对应,本申请第三实施例提供一种实现内存换出换入的装置。以下结合图4对所述装置进行说明。图4所示的装置,包括:
换出页确定单元401,用于确定特定容器的进程需要换出内存页;
内存换出单元402,用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的位置,根据所述位置将需要换出的内存页存储到所述目标交换设备上。
可选的,所述内存换出单元402具体用于:在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;根据所述映射区域将需要换出的内存页存储到所述目标交换设备上。
可选的,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储视图。
可选的,所述Swap子系统,向所述内存子系统提供交换资源查询视图;所述交换资源查询视图可被所述内存子系统访问并用于换入所述特定容器的进程的内存页。
可选的,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在目标交换设备上对应映射区域的镜像。
可选的,所述重定向层与所述Swap子系统共享存储层。
可选的,所述重定向层为基于Frontswap框架实现的后端;所述第一存储接口的处理逻辑包括:先调用基于Frontswap的存储接口,如果调用失败,接着调用所述Swap子系统的存储接口进行内存页的换出。
以上述实施例为基础,本申请第四实施例提供一种实现容器内存隔离的方法,应用于重定向层,所述重定向层设置于内核内存子系统与内核Swap子系统之间。以下结合图5进行说明。图5所示的实现容器内存隔离的方法,包括:步骤S501至步骤S502。
步骤S501,在第一容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述第一容器的指定虚拟内存空间所在的第一位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上。
所述内存子系统向容器(以CGroup技术实现的容器为例)的运行实例提供内存换出(store)换入(load)接口。当Cgroup的运行实例不需要提供预置规格的全量服务时,该运行实例的上下文可换出到外部存储设备,例如,CGroup的进程运行时上下文调用内存子系统的接口换出到作为Swap空间的存储设备。在内存子系统的接口hook点注册了可以实现重定向层的处理接口。因此不需要改变内存子系统的处理,可将第一容器需要换出的内存页通过重定向层按照容器粒度分类,再通过Swap子系统的接口存储到作为Swap空间的底层存储设备。
其中,所述重定向层具体通过下述处理将需要换出的内存页换出到Swap空间:确定所述外部存储设备中挂载到操作系统的、所述特定容器对应的目标交换设备;每个容器对应一个目标交换设备;确定所述内存页在所述目标交互设备中的偏移量;根据所述目标交换设备以及所述偏移量确定所述位置;按照所述位置以及所述数据信息需要占用的内存空间的大小,将所述数据信息映射到所述目标交换设备。其中,所述目标交换设备为用于持久化内存中数据信息的块设备或文件。各个容器各自的目标交换设备之间至少在逻辑上是隔离的;物理上可以做隔离,不影响内存换出-换入的安全与隔离;物理上也可以不进行隔离,不影响内存换出-换入的隔离性及效率。第一容器对应第一目标交换设备。
本实施例中,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储视图;进一步,所述重定向层向为所述容器提供内存资源管理的内存子系统提供独立于交换资源查询视图的存储视图。例如,由Swap子系统所述内存子系统提供所述交换资源查询视图;即,由所述重定向层(Swap Redirect Layer)提供独立的存储视图,对内存子系统完全透明;由内核现有的Swap子系统为上层Kernel内存子系统提供资源查询视图。从而,将Swap资源的存储和资源的查询进行分离,在不侵入整个Linux内存子系统和Swap子系统的情况下,给现有的内核Swap子系统提供按照Cgroup隔离存储的能力。
其中,所述重定向层,为基于Frontswap框架实现的后端。具体包括:利用现有Linux内核提供的Transcendent Memory针对匿名内存映射的Frontswap框架,实现一个Frontswap框架的后端,通过后端对需要换出的内存的换出的存储位置进行重定向,按照需要换出的内存页所属的Cgroup进行分类存储,实现Cgroup粒度的存储隔离。CGroup粒度即为容器粒度。通过Frontswap抽象接口可以在内核Swap子系统注册的hook点,在实现换出的内存页的存储之前进行重定向处理。从而,不需要内存子系统进行改变,对内存子系统完全透明。所述后端可以通过模块化动态插入现有的Linux内核。
实际应用中,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在外部存储设备中对应映射区域的镜像。所述存储镜像的存储格式,为通过Linux系统提供的mkswap工具创建的Swap文件。即,所述存储镜像的存储格式,与所述Swap子系统的存储格式相同。所述重定向层向所述内存子系统提供用于换出内存页的存储接口,具体在Linux内核的Swap子系统提供的用于进行Swap前端处理的hook点注册回调函数实现所述存储接口。其中,所述存储接口的处理逻辑包括:如果调用基于Frontswap的存储接口失败,则调用所述Swap子系统的存储接口进行内存页的换出。Frontswap可以保持独立的存储视图和存储镜像。所述重定向层与所述Swap子系统也可以共享存储层,从而提高存储资源的利用效率。共享存储层时,可以将存储服务和资源查询服务分离,由Frontswap提供存储服务,由Swap子系统提供内存子系统需要的Swap资源查询视图。
步骤S502,在第二容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述第二容器的指定虚拟内存空间所在的第二位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;其中,所述第二位置为与所述第一位置隔离的位置。
所述重定向层将第二容器需要换出的内存页换出到Swap空间的第二目标交换设备,第二目标交换设备与第一目标交换设备逻辑上是隔离的。具体的:确定所述第二容器对应的第二目标设备,第二目标设备为挂载到操作系统的、第二容器对应的目标交换设备;确定所述内存页在所述第二目标交互设备中的偏移量;根据所述第二目标交换设备以及所述偏移量确定所述位置;按照所述位置以及所述数据信息需要占用的内存空间的大小,将所述第二容器的数据信息映射到所述第二目标交换设备。
以上述实施例为基础,本申请第五实施例提供一种电子设备。图6为所述电子设备的示意图,所述电子设备,包括:存储器601,以及处理器602;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行本申请实施例提供的所述实现内存换出-换入的以及所述实现容器内存隔离的方法。
以上述实施例为基础,本申请第六实施例提供一种存储设备,相关的部分请参见上述实施例的对应说明即可。所述存储设备的示意图类似图5。所述存储设备存储有计算机程序,所述计算机程序被处理器运行后,执行本申请实施例提供的所述实现内存换出-换入的以及所述实现容器内存隔离的方法。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (22)
1.一种实现内存换出-换入的系统,其特征在于,设置有重定向层;
所述重定向层在系统中对应特定容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;以及,
在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的所述指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页;
其中,所述重定向层,按照容器粒度对换出的内存页分类存储,实现容器粒度的存储隔离;
其中,所述为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上,包括:
确定所述外部存储设备中挂载到操作系统的、所述特定容器对应的目标交换设备;每个容器对应一个目标交换设备;
确定所述内存页在所述目标交换设备中的偏移量;
根据所述目标交换设备以及所述偏移量确定所述位置;
按照所述位置以及数据信息需要占用的内存空间的大小,将所述数据信息映射到所述目标交换设备。
2.根据权利要求1所述的系统,其特征在于,所述目标交换设备为用于持久化内存中数据信息的块设备或文件。
3.根据权利要求1所述的系统,其特征在于,所述重定向层向为所述容器提供内存资源管理的内存子系统提供独立于交换资源查询视图的存储视图;所述存储视图为记录有所述特定容器换出的内存页的指定虚拟内存空间映射到所述外部存储设备的位置的内存页表。
4.根据权利要求3所述的系统,其特征在于,所述系统还包括Swap子系统;所述Swap子系统,用于向所述内存子系统提供所述交换资源查询视图。
5.根据权利要求3所述的系统,其特征在于,所述重定向层,为基于Frontswap框架实现的后端。
6.根据权利要求4所述的系统,其特征在于,所述重定向层向所述内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在外部存储设备中对应映射区域的镜像。
7.根据权利要求6所述的系统,其特征在于,所述存储镜像的存储格式,为与所述Swap子系统的存储格式相同。
8.根据权利要求7所述的系统,其特征在于,所述存储镜像,为通过Linux系统提供的mkswap工具创建的Swap文件。
9.根据权利要求7所述的系统,其特征在于,所述重定向层与所述Swap子系统共享存储层。
10.根据权利要求9所述的系统,其特征在于,所述重定向层向所述内存子系统提供用于换出内存页的存储接口;其中,所述存储接口的处理逻辑包括:如果调用基于Frontswap的存储接口失败,则调用所述Swap子系统的存储接口进行内存页的换出。
11.根据权利要求9所述的系统,其特征在于,所述重定向层,在Linux内核的Swap子系统提供的用于进行Swap前端处理的hook点注册回调函数实现所述存储接口。
12.根据权利要求11所述的系统,其特征在于,所述容器为基于Cgroup做资源隔离的容器实现。
13.一种实现内存换出-换入的方法,其特征在于,包括:
确定特定容器的进程需要换出的内存页;
在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;
通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;
根据所述映射区域将需要换出的内存页存储到所述目标交换设备上;
所述方法还包括:
在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页;
其中,所述重定向层,按照容器粒度对换出的内存页分类存储,实现容器粒度的存储隔离。
14.根据权利要求13所述的方法,其特征在于,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储视图。
15.根据权利要求14所述的方法,其特征在于,所述Swap子系统,向所述内存子系统提供交换资源查询视图;所述交换资源查询视图可被所述内存子系统访问并用于换入所述特定容器的进程的内存页。
16.根据权利要求13所述的方法,其特征在于,所述重定向层向为所述容器提供内存资源管理的内存子系统提供存储镜像;所述存储镜像为所述特定容器换出的内存页在目标交换设备上对应映射区域的镜像。
17.根据权利要求13所述的方法,其特征在于,所述重定向层与所述Swap子系统共享存储层。
18.根据权利要求13所述的方法,其特征在于,所述重定向层为基于Frontswap框架实现的后端;所述第一存储接口的处理逻辑包括:先调用基于Frontswap的存储接口,如果调用失败,接着调用所述Swap子系统的存储接口进行内存页的换出。
19.一种实现内存换出-换入的装置,其特征在于,包括:
换出页确定单元,用于确定特定容器的进程需要换出内存页;
内存换出单元,用于在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;根据所述映射区域将需要换出的内存页存储到所述目标交换设备上;在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页;
其中,所述重定向层,按照容器粒度对换出的内存页分类存储,实现容器粒度的存储隔离。
20.一种实现容器内存隔离的方法,其特征在于,应用于重定向层,所述重定向层设置于内核内存子系统与内核Swap子系统之间,包括:
在第一容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述第一容器的指定虚拟内存空间所在的第一位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;
在第二容器的进程需要换出内存页时,为其提供在外部存储设备中设置的对应于所述第二容器的指定虚拟内存空间所在的第二位置,使所述需要换出的内存页存储到所述指定虚拟内存空间的外部存储设备上;其中,所述第二位置为与所述第一位置隔离的位置;
其中,所述重定向层,在特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的所述指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页。
21.一种电子设备,其特征在于,包括:
存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行如下步骤:
确定特定容器的进程需要换出的内存页;
在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;
通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;
根据所述映射区域将需要换出的内存页存储到所述目标交换设备上;
在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页;
其中,所述重定向层,按照容器粒度对换出的内存页分类存储,实现容器粒度的存储隔离。
22.一种存储设备,其特征在于,存储有计算机程序,所述计算机程序被处理器运行后,执行如下步骤:
确定特定容器的进程需要换出的内存页;
在特定容器的进程需要换出内存页时,调用第一存储接口;所述第一存储接口为操作系统内核的Swap子系统提供的存储接口;
通过所述第一存储接口中的回调函数触发重定向层的第二存储接口;所述第二存储接口用于确定所述需要换出的内存页在所述特定容器对应的目标交换设备中的映射区域;
根据所述映射区域将需要换出的内存页存储到所述目标交换设备上;
在所述特定容器的进程需要换入内存页时,为其提供在外部存储设备中设置的对应于所述容器的指定虚拟内存空间所在的位置,使所述容器中的进程能够换入对应于所述特定容器的进程的内存页;
其中,所述重定向层,按照容器粒度对换出的内存页分类存储,实现容器粒度的存储隔离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010730226.2A CN113296932B (zh) | 2020-07-27 | 2020-07-27 | 实现内存换出-换入的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010730226.2A CN113296932B (zh) | 2020-07-27 | 2020-07-27 | 实现内存换出-换入的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296932A CN113296932A (zh) | 2021-08-24 |
CN113296932B true CN113296932B (zh) | 2024-02-13 |
Family
ID=77318202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010730226.2A Active CN113296932B (zh) | 2020-07-27 | 2020-07-27 | 实现内存换出-换入的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296932B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1825283A (zh) * | 2006-03-31 | 2006-08-30 | 浙江大学 | 嵌入式操作系统硬件镜像启动优化的实现方法 |
CN107885666A (zh) * | 2016-09-28 | 2018-04-06 | 华为技术有限公司 | 一种内存管理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491776B (zh) * | 2018-11-06 | 2022-05-31 | 北京百度网讯科技有限公司 | 任务编排方法和系统 |
-
2020
- 2020-07-27 CN CN202010730226.2A patent/CN113296932B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1825283A (zh) * | 2006-03-31 | 2006-08-30 | 浙江大学 | 嵌入式操作系统硬件镜像启动优化的实现方法 |
CN107885666A (zh) * | 2016-09-28 | 2018-04-06 | 华为技术有限公司 | 一种内存管理方法和装置 |
Non-Patent Citations (4)
Title |
---|
Linux内存管理机制的分析与研究;李小群;孙玉芳;;计算机科学(第04期);全文 * |
Yoshio Sakurauchi ; Rick McGeer ; Hideyuki Takada.Open Web: Seamless Proxy Interconnection at the Switching Layer.IEEE.2011,全文. * |
基于NBD机制的高性能计算机系统内存优化方案;左右;刘光明;董文睿;;计算机研究与发展(第S2期);全文 * |
面向设备维护联盟的知识安全管理研究;郭建文;于德介;刘坚;曾威;;中国机械工程(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113296932A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9990132B2 (en) | Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store | |
US8176233B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
US10747673B2 (en) | System and method for facilitating cluster-level cache and memory space | |
US7707337B2 (en) | Object-based storage device with low process load and control method thereof | |
US11593186B2 (en) | Multi-level caching to deploy local volatile memory, local persistent memory, and remote persistent memory | |
CN109697016B (zh) | 用于改进容器的存储性能的方法和装置 | |
CN113674133B (zh) | Gpu集群共享显存系统、方法、装置及设备 | |
US9524300B2 (en) | Heterogenic volume generation and use system | |
WO2018176911A1 (zh) | 一种虚拟磁盘文件格式转换方法和装置 | |
KR20100081880A (ko) | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 | |
US11093143B2 (en) | Methods and systems for managing key-value solid state drives (KV SSDS) | |
US10802972B2 (en) | Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics | |
CN103729305A (zh) | 虚拟机的存储器管理的方法和计算机系统 | |
CN113204407A (zh) | 一种内存超配管理方法及装置 | |
US11347413B2 (en) | Opportunistic storage service | |
US11157191B2 (en) | Intra-device notational data movement system | |
US20150242121A1 (en) | Per-memory group swap device | |
CN113031857B (zh) | 数据写入方法、装置、服务器及存储介质 | |
US9317306B2 (en) | Computer device and memory management method thereof | |
CN110569112B (zh) | 日志数据写入方法及对象存储守护装置 | |
CN113296932B (zh) | 实现内存换出-换入的系统及方法 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN114518962A (zh) | 内存的管理方法及装置 | |
GB2502288A (en) | Modifying the order of checking virtual machines for cached disc data | |
US20090024798A1 (en) | Storing Data |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40057554 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |