CN113448722A - 进程内存的映射方法和基于无服务器架构的实例处理方法 - Google Patents
进程内存的映射方法和基于无服务器架构的实例处理方法 Download PDFInfo
- Publication number
- CN113448722A CN113448722A CN202010232980.3A CN202010232980A CN113448722A CN 113448722 A CN113448722 A CN 113448722A CN 202010232980 A CN202010232980 A CN 202010232980A CN 113448722 A CN113448722 A CN 113448722A
- Authority
- CN
- China
- Prior art keywords
- target
- virtual memory
- memory
- file
- target process
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 335
- 238000000034 method Methods 0.000 title claims abstract description 305
- 230000008569 process Effects 0.000 title claims abstract description 256
- 238000013507 mapping Methods 0.000 title claims abstract description 185
- 238000003672 processing method Methods 0.000 title claims description 9
- 230000002085 persistent effect Effects 0.000 claims abstract description 21
- 238000013403 standard screening design Methods 0.000 claims description 10
- 230000008602 contraction Effects 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101000641419 Homo sapiens V-type proton ATPase 16 kDa proteolipid subunit c Proteins 0.000 description 1
- 101000806601 Homo sapiens V-type proton ATPase catalytic subunit A Proteins 0.000 description 1
- 101000850434 Homo sapiens V-type proton ATPase subunit B, brain isoform Proteins 0.000 description 1
- 101000670953 Homo sapiens V-type proton ATPase subunit B, kidney isoform Proteins 0.000 description 1
- 102100034171 V-type proton ATPase 16 kDa proteolipid subunit c Human genes 0.000 description 1
- 102100037466 V-type proton ATPase catalytic subunit A Human genes 0.000 description 1
- 102100033476 V-type proton ATPase subunit B, brain isoform Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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
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
本申请公开了一种进程内存的映射方法,包括:暂停目标进程和所述目标进程包含的子线程的运行;将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;释放所述目标虚拟内存映射区域;根据目标虚拟内存映射区域映射的元数据信息将虚拟内存映射区域重新映射到所述目标文件对应的区域;恢复目标进程和所述目标进程包含的子线程的运行。采用上述方法,以实现Serverless弹性场景下目标进程的内存资源的快速动态伸缩。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种进程内存的映射方法、装置、电子设备及存储设备。本申请还涉及两种基于无服务器架构的实例处理方法。
背景技术
Serverless(无服务器)弹性场景下,需要提前通过冷启动的方式启动多个运行实例,为弹性场景下扩容做好准备;通常情况下,这些实例处于待命状态,并不响应正式的流量请求,只响应一些系统事件,并保证进程运行上下文的存在,这种状态可以称为其处于低功耗运行状态。通常采用缩小目标进程的内存配额,使其处于低功耗的运行状态。在这种场景下,需要提供一种能够配合单个目标进程内存配额的变化,实现目标进程的内存资源的快速动态伸缩的方案。
现有技术下,Serverless(无服务器)采用的操作系统内核(例如,Linux)针对进程的内存交换通常实现方案如下:所有的进程共享系统交换资源,交换页面(例如,SwapPage)的存储结构按照交换资源的状态进行分配,并未按照单个进程进行分区存储或完全隔离存储。因此,针对单个进程,随着内存页的多次换入换出之后,其换出到交换设备上的内存页的存储会变的随机化,这种随机化会影响下一次换入的性能。
现有技术的内存交换方案,无法实现Serverless弹性场景下目标进程的内存资源的快速动态伸缩。
发明内容
本申请提供一种进程内存的映射方法、装置、电子设备和存储设备,以实现Serverless弹性场景下目标进程的内存资源的快速动态伸缩。
本申请提供一种进程内存的映射方法,包括:
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
可选的,还包括:根据目标进程运行时的内存数据,创建用于持久化目标进程内存的目标文件。
可选的,所述目标文件为稀疏文件。
可选的,所述目标文件为采用创建交换文件的命令创建的用于目标进程的交换文件。
可选的,在将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中之前,还包括:
获得目标进程运行时的内存数据;
根据所述目标进程运行时的内存数据,获得目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域。
可选的,所述预设条件为:虚拟内存映射区域的存储空间大于或等于预设的映射存储空间阈值并且虚拟内存映射区域为匿名内存区域。
可选的,所述将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中,包括:
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中。
可选的,所述目标文件存储在以下任何一种存储空间:
普通磁盘、SSD、非易失性内存。
可选的,所述非易失性内存包括如下存储介质中的至少一种:
AEP内存;
3D XPoint内存;
Opentane SSD内存。本申请还提供一种一种进程内存的映射装置,包括:
进程暂停单元,用于暂停目标进程和所述目标进程包含的子线程的运行;
内存写入单元,用于将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
目标虚拟内存映射区域释放单元,用于释放所述目标虚拟内存映射区域;
内存重新映射单元,用于根据目标虚拟内存映射区域映射的元数据信息将所述目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
进程恢复运行单元,用于恢复目标进程和所述目标进程包含的子线程的运行。
本申请还提供一种电子设备,包括:
处理器;以及
存储器,用于存储进程内存的映射方法的程序,该设备通电并通过所述处理器运行该进程内存的映射方法的程序后,执行下述步骤:
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
本申请还提供一种存储设备,存储有进程内存的映射方法的程序,该程序被处理器运行,执行下述步骤:
暂停目标进程和所述目标进程包含的子线程的运行;
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
本申请提供一种基于无服务器架构的实例处理方法,包括:
启动并运行无服务器架构中的指定实例;
将所述指定实例置于低功耗运行状态;
根据所述无服务器架构中的资源弹性扩容指令,依据前述任意一项所述的映射方法对所述指定实例中的目标进程进行处理,将所述指定实例置于正常运行状态。
本申请提供一种基于无服务器架构的实例处理方法,包括:
启动并运行无服务器架构中的指定实例;
将所述指定实例置于正常运行状态;
根据所述无服务器架构中的资源弹性收缩指令,依据前述任意一项所述的映射方法对所述指定实例中的目标进程进行处理,将所述指定实例置于低功耗运行状态。
与现有技术相比,本申请具有以下优点:
本申请提供一种进程内存的映射方法,通过首先将目标进程占用的内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中,然后释放所述目标虚拟内存映射区域;再根据目标虚拟内存映射区域映射的元数据信息将所述目标虚拟内存映射区域重新映射到所述目标文件对应的区域,实现了用户态的进程的内存的文件映射,提供一种用户态虚拟内存的实现,实现进程级别的内存交换隔离;不会随着多个进程换出/换入内存,而导致内存存储的随机化,从而影响内存换入的性能;实现了目标进程内存按照虚拟内存地址线性结构格式化存储,结构化存储能够加速内存换入性能;由于用户态内存交换完全由进程控制,可以主动根据业务逻辑,使目标进程处于低功耗运行状态,也可以快速恢复目标进程的所有内存映射,做到快上快下,满足了云计算环境和无服务器环境下,作为加速实例冷启动的方案。
附图说明
图1是本申请第一实施例提供的一种进程内存的映射方法的流程图。
图2是本申请第一实施例提供的一种将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域持久化到目标文件的示意图。
图3是本申请第一实施例提供的一种将目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中的示意图。
图4是本申请第一实施例提供的一种最终的内存映射的示意图。
图5是本申请第一实施例提供的一种将目标文件的页面换入虚拟内存的示意图。
图6是本申请第二实施例提供的一种进程内存的映射装置的示意图。
图7是本申请第三实施例提供的一种电子设备的示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
本申请第一实施例提供一种进程内存的映射方法,以下结合图1进行说明。
如图1所示,在步骤S101中,暂停目标进程和所述目标进程包含的子线程的运行。
所述目标进程,指用户态运行的进程。在Severless场景下,目标进程可以指应用实例的主进程。
暂停目标进程和所述目标进程包含的子线程的运行,指以管理员权限操纵目标进程,暂停目标进程和所述目标进程包含的子线程的运行。
为了在目标进程内部实现只有在目标进程的上下文才能够进行的内存映射相关操作,在暂停目标进程和所述目标进程包含的子线程的运行的步骤之前,可以将只有在目标进程的上下文才能够进行的内存映射相关操作的代码注入目标进程中。例如,在Linux系统下,可以利用CRIU RPC框架,将Parasite代码注入目标进程中。内存映射操作包括:unmap,mmap,remap等系统调用。
如图1所示,在步骤S102中,将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件。
所述目标文件,可以为稀疏文件。稀疏文件为UNIX类和NTFS等文件系统支持的一种文件类型,相对于普通文件的最明显的一个特征就是支持只登记文件信息,而不占用存储空间。
所述预设条件可以为:虚拟内存映射区域的存储空间大于或等于预设的映射存储空间阈值并且虚拟内存映射区域为匿名内存区域。
例如,如果预设的映射存储空间阈值为1M字节,则当虚拟内存区域(VMA)的存储空间大于1M字节,并且虚拟内存区域为匿名内存映射区域时,虚拟内存区域才可以作为目标虚拟内存映射区域。VMA(Virtual Memory Area)是Linux内核管理虚拟内存映射区域的基本单位;一个VMA由一系列内存Page(页)构成,VMA中的每一个Page都会有在系统页表中占据一项;Linux内核使用VMA来记录描述进程的每一个内存映射区域;每一个VMA表示不同的内存映射,每一个VMA包括起始地址、映射长度、映射Flags以及访问权限等属性。VMA大小是内存页(PAGE_SIZE)大小的整数倍,也就是说VMA按照PAGE_SIZE对齐。
当目标文件为稀疏文件时,需要先根据目标进程运行时的内存数据,创建用于持久化目标进程内存的目标文件,然后再将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中。
所述内存数据,可以包括:目标进程内存占用的存储空间,内存分配的VMA数量和每个VMA的存储空间(Size),以及匿名内存映射的VMA数量和每个VMA的存储空间(Size)等。
例如,目标进程运行的操作系统为Linux,可以采用命令fallocate来创建用于持久化目标进程内存的稀疏文件。
采用稀疏文件可以让内存页在文件中的持久化和内存中保持线性的映射关系,实现在文件中快速寻址对应地址的内存页。
目标文件除了采用稀疏文件外,还可以采用创建交换文件的命令创建的用于目标进程的交换文件。例如,在Linux系统中,可以直接复用mkswap命令创建的交换文件,由于mkswap并不支持稀疏文件作为交换文件,相比稀疏文件,由于内存映射hole特点,如果采用线性映射会占用大量的存储资源。针对采用mkswap命令创建的交换文件类型的文件,则在存储上需要一些额外的元数据(metadata)帮助管理映射关系。
所述目标文件可以存储在本地或网络,可以存储在任何存储介质,例如,普通磁盘、SSD、非易失性内存或者是内存设备。
其中,所述非易失性内存包括如下存储介质中的至少一种:
AEP内存;
3D XPoint内存;
Opentane SSD内存。
AEP内存,即Apache Pass DIMM内存,其使用DDR4接口,访问延迟接近DRAM,并且和DRAM一样,提供Cache line粒度的访问。
3D XPoint介质,读写速度可以达到纳秒级,接近DRAM的量级。
Opentane SSD介质,是采用新型加速技术的SSD介质。
除了以上三种存储介质外,本申请中的非易失性内存还可以为其他已有的或者将来出现的新型存储介质。
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中,即将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域持久化到目标文件中。
如图2所示,A1和A2为同一个应用对应的两个进程,B1和B2为同一个应用对应的两个进程,将A1中满足预设条件的目标虚拟内存映射区域写入到稀疏文件1中,将A2中满足预设条件的目标虚拟内存映射区域写入到稀疏文件2中,将B1中满足预设条件的目标虚拟内存映射区域写入到稀疏文件3中,将B2中满足预设条件的目标虚拟内存映射区域写入到稀疏文件4中。
所述将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中,包括:
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中。
如图3所示,其为一个目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中的示意图。图3中以VMA为粒度,将目标虚拟内存映射区域(VMA1、VMA2、VMA3)按照目标虚拟内存映射区域的地址依次持久化到目标文件中。
作为一种实施方式,在将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中之前,本申请第一实施例还可以包括:
获得目标进程运行时的内存数据;
根据所述目标进程运行时的内存数据,获得目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域。
如图1所示,在步骤S103中,释放所述目标虚拟内存映射区域。
例如,在Linux操作系统下,采用Unmap命令释放掉目标虚拟内存映射区域。
如图1所示,在步骤S104中,根据目标虚拟内存映射区域映射的元数据信息将目标虚拟内存映射区域重新映射到所述目标文件对应的区域。
所述目标虚拟内存映射区域映射的元数据信息,包括目标虚拟内存映射区域映射的metadata信息、目标虚拟内存映射区域映射的flags。
如图1所示,在步骤S105中,恢复目标进程和所述目标进程包含的子线程的运行。
如果已经在上述步骤中将只有在目标进程的上下文才能够进行的内存映射相关操作的代码注入目标进程中,在根据目标虚拟内存映射区域映射的元数据信息将虚拟内存映射区域重新映射到所述目标文件对应的区域步骤之后,需要卸载掉注入目标进程的内存映射相关操作的代码。
如图4所示,为最终的内存映射的示意图。
需要说明的是,本申请第一实施例提供的进程内存的映射方法可以在目标进程运行过程中多次执行,使目标进程能够适应serverless场景下低功耗运行状态下与上线状态的高频切换,可以主动根据业务逻辑,快速恢复目标进程的所有内存映射,使目标进程从低功耗运行状态快速恢复到上线状态,做到快上快下。
在系统处于内存压力的情况下,系统可以Reclaim掉这些Private Clean page(私有干净页)。而对于运行过程中,内存需要改变的Private Dirty Page(私有脏页),由于内存映射为Private,会利用操作系统内存COW机制分配新的内存页。
如图5所示,其为一种将目标文件的页面换入虚拟内存的示意图。
干净页(Clean pages)是自映射后未被修改的页(通常,共享库中的文本节仅从磁盘读取(必要时),从不修改,因此它们将位于共享的干净页中)。
脏页(Dirty pages)是指不干净的页,即已被修改的页。
私有页(Private pages)仅对该进程可用,共享页由其他进程映射。
写入时复制(Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此作法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy)被创建,因此多个调用者只是读取操作时可以共享同一份资源。
本申请第一实施例提供的进程内存的映射方法,在目标进程运行态下,通过一些跨进程注入手段,将目标进程中的原有的匿名内存映射(Anonymous mapping)转换为文件私有内存映射(File private mapping),可以利用操作系统Page Cache回收特点,为内存提供弹性。由于操作系统(如Linux)对Page Cache的管理天然具备根据系统内存资源进行弹性伸缩的能力,同时针对Page Cache,用户态提供了一系列系统调用给File mapping读写提供一些线索,同时提供一些预读机制,帮助快速读取低速存储设备上的文件数据;而且Page Cache对内存是使用方式属于一种贪婪使用方式,内存充足的情况下,能够最大化保持Page Cache存留在内存中。同时每个进程内存数据能够保持独立,存储在独立的持久化文件中并保持一定的格式化,实现了一种进程粒度的结构化存储的Swap方案,这样能够在大规模的使用场景中,针对不同的低速设备,能够保证数据读取的速度能和该设备上的顺序读尽可能保持一致。同时利用操作系统针对文件内存映射的管理和一些预读策略能够实现内存数据的快速换入;由于用户态交换完全由进程控制,可以主动根据业务逻辑,使目标进程处于低功耗运行状态,也可以快速恢复目标进程的所有内存映射,做到快上快下,可以满足云计算环境下和Serverless环境下,作为加速实例冷启动的方案。
与本申请第一实施例提供的进程内存的映射方法相对应的,本申请第二实施例还提供了一种进程内存的映射装置。
如图6所示,所述装置包括:
进程暂停单元601,用于暂停目标进程和所述目标进程包含的子线程的运行;
内存写入单元602,用于将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
目标虚拟内存映射区域释放单元603,用于释放所述目标虚拟内存映射区域;
内存重新映射单元604,用于根据目标虚拟内存映射区域映射的元数据信息将所述目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
进程恢复运行单元605,用于恢复目标进程和所述目标进程包含的子线程的运行。
可选的,所述装置还包括:目标文件创建单元,用于根据目标进程运行时的内存数据,创建用于持久化目标进程内存的目标文件。
可选的,所述目标文件为稀疏文件。
可选的,所述目标文件为采用创建交换文件的命令创建的用于目标进程的交换文件。
可选的,所述装置还包括:目标虚拟内存映射区域获得单元,用于在将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中之前,获得目标进程运行时的内存数据;根据所述目标进程运行时的内存数据,获得目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域。
可选的,所述预设条件为:虚拟内存映射区域的存储空间大于或等于预设的映射存储空间阈值并且虚拟内存映射区域为匿名内存区域。
可选的,所述内存写入单元具体用于:
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中。
可选的,所述目标文件存储在以下任何一种存储空间:
普通磁盘、SSD、非易失性内存。
需要说明的是,对于本申请第二实施例提供的装置的详细描述可以参考对本申请第一实施例的相关描述,这里不再赘述。
与本申请第一实施例提供的进程内存的映射方法相对应的,本申请第三实施例还提供了一种电子设备。
如图7所示,所述电子设备,包括:
处理器701;以及
存储器702,用于存储进程内存的映射方法的程序,该设备通电并通过所述处理器运行该进程内存的映射方法的程序后,执行下述步骤:
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
可选的,所述电子设备还执行下述步骤:根据目标进程运行时的内存数据,创建用于持久化目标进程内存的目标文件。
可选的,所述目标文件为稀疏文件。
可选的,所述目标文件为采用创建交换文件的命令创建的用于目标进程的交换文件。
可选的,在将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中之前,所述电子设备还执行下述步骤:
获得目标进程运行时的内存数据;
根据所述目标进程运行时的内存数据,获得目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域。
可选的,所述预设条件为:虚拟内存映射区域的存储空间大于或等于预设的映射存储空间阈值并且虚拟内存映射区域为匿名内存区域。
可选的,所述将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中,包括:
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中。
可选的,所述目标文件存储在以下任何一种存储空间:
普通磁盘、SSD、非易失性内存。
需要说明的是,对于本申请第三实施例提供的电子设备的详细描述可以参考对本申请第一实施例的相关描述,这里不再赘述。
与本申请第一实施例提供的进程内存的映射方法相对应的,本申请第四实施例还提供了一种存储设备,存储有进程内存的映射方法的程序,该程序被处理器运行,执行下述步骤:
暂停目标进程和所述目标进程包含的子线程的运行;
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
需要说明的是,对于本申请第四实施例提供的存储设备的详细描述可以参考对本申请第一实施例的相关描述,这里不再赘述。
与本申请第一实施例提供的进程内存的映射方法相对应的,本申请第五实施例提供了一种基于无服务器架构的实例处理方法,包括:
启动并运行无服务器架构中的指定实例;
将所述指定实例置于低功耗运行状态;
根据所述无服务器架构中的资源弹性扩容指令,依据本申请第一实施例提供的任意一项所述的映射方法对所述指定实例中的目标进程进行处理,将所述指定实例置于正常运行状态。
无服务器(Serverless)弹性场景下,尤其针对有状态应用,需要提前通过冷启动的方式启动多个运行实例,为弹性场景下扩容做好准备。通常情况下,这些实例处于待命状态,并不响应正式的流量请求。这种状态下,可以称为其处于低功耗运行状态;只响应系统一些系统事件,并保证进程运行上下文的存在。在这种情况下,可以缩小目标进程的内存配额,使其处于低功耗运行状态下。
当接收到弹性扩容指令后,采用本申请第一实施例提供的进程粒度的Swap方法,扩大目标进程内存配额,从而实现目标进程运行资源的动态扩容。
与本申请第一实施例提供的进程内存的映射方法相对应的,本申请第六实施例提供了一种基于无服务器架构的实例处理方法,包括:
启动并运行无服务器架构中的指定实例;
将所述指定实例置于正常运行状态;
根据所述无服务器架构中的资源弹性收缩指令,依据本申请第一实施例提供的任意一项所述的映射方法对所述指定实例中的目标进程进行处理,将所述指定实例置于低功耗运行状态。
本实施例与第五实施例类似,这里就不再详细说明了。该实施例用于接收到弹性收缩指令后,采用本申请第一实施例提供的进程粒度的Swap方法,收缩目标进程内存配额,从而实现目标进程运行资源的动态收缩。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、存储器映射输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (14)
1.一种进程内存的映射方法,其特征在于,包括:
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
2.根据权利要求1所述的方法,其特征在于,还包括:根据目标进程运行时的内存数据,创建用于持久化目标进程内存的目标文件。
3.根据权利要求2所述的方法,其特征在于,所述目标文件为稀疏文件。
4.根据权利要求1所述的方法,其特征在于,所述目标文件为采用创建交换文件的命令创建的用于目标进程的交换文件。
5.根据权利要求1所述的方法,其特征在于,在将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中之前,还包括:
获得目标进程运行时的内存数据;
根据所述目标进程运行时的内存数据,获得目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域。
6.根据权利要求5所述的方法,其特征在于,所述预设条件为:虚拟内存映射区域的存储空间大于或等于预设的映射存储空间阈值并且虚拟内存映射区域为匿名内存区域。
7.根据权利要求1所述的方法,其特征在于,所述将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中,包括:
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域按照目标虚拟内存映射区域的地址依次写入到目标文件中。
8.根据权利要求1所述的方法,其特征在于,所述目标文件存储在以下任何一种存储空间:
普通磁盘、SSD、非易失性内存。
9.根据权利要求8所述的方法,其特征在于,所述非易失性内存包括如下存储介质中的至少一种:
AEP内存;
3D XPoint内存;
Opentane SSD内存。
10.一种进程内存的映射装置,其特征在于,包括:
进程暂停单元,用于暂停目标进程和所述目标进程包含的子线程的运行;
内存写入单元,用于将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
目标虚拟内存映射区域释放单元,用于释放所述目标虚拟内存映射区域;
内存重新映射单元,用于根据目标虚拟内存映射区域映射的元数据信息将所述目标虚拟内存映射区域重新映射到所述目标文件对应的区域;
进程恢复运行单元,用于恢复目标进程和所述目标进程包含的子线程的运行。
11.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储进程内存的映射方法的程序,该设备通电并通过所述处理器运行该进程内存的映射方法的程序后,执行下述步骤:
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
12.一种存储设备,其特征在于,
存储有进程内存的映射方法的程序,该程序被处理器运行,执行下述步骤:
暂停目标进程和所述目标进程包含的子线程的运行;
暂停目标进程和所述目标进程包含的子线程的运行;
将目标进程运行时占用的虚拟内存中满足预设条件的目标虚拟内存映射区域写入到目标文件中;所述目标文件为用于持久化目标进程内存的文件,每个目标进程对应一个目标文件;
释放所述目标虚拟内存映射区域;
根据目标虚拟内存映射区域映射的元数据信息将虚拟内存映射区域重新映射到所述目标文件对应的区域;
恢复目标进程和所述目标进程包含的子线程的运行。
13.一种基于无服务器架构的实例处理方法,其特征在于,包括:
启动并运行无服务器架构中的指定实例;
将所述指定实例置于低功耗运行状态;
根据所述无服务器架构中的资源弹性扩容指令,依据权利要求1-9任意一项所述的映射方法对所述指定实例中的目标进程进行处理,将所述指定实例置于正常运行状态。
14.一种基于无服务器架构的实例处理方法,其特征在于,包括:
启动并运行无服务器架构中的指定实例;
将所述指定实例置于正常运行状态;
根据所述无服务器架构中的资源弹性收缩指令,依据权利要求1-9任意一项所述的映射方法对所述指定实例中的目标进程进行处理,将所述指定实例置于低功耗运行状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232980.3A CN113448722A (zh) | 2020-03-28 | 2020-03-28 | 进程内存的映射方法和基于无服务器架构的实例处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232980.3A CN113448722A (zh) | 2020-03-28 | 2020-03-28 | 进程内存的映射方法和基于无服务器架构的实例处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448722A true CN113448722A (zh) | 2021-09-28 |
Family
ID=77808216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232980.3A Pending CN113448722A (zh) | 2020-03-28 | 2020-03-28 | 进程内存的映射方法和基于无服务器架构的实例处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448722A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048735A (zh) * | 2023-03-23 | 2023-05-02 | 阿里云计算有限公司 | 信息处理方法以及对象共享方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7757034B1 (en) * | 2006-06-29 | 2010-07-13 | Parallels Software International, Inc. | Expansion of virtualized physical memory of virtual machine |
CN101971146A (zh) * | 2007-09-07 | 2011-02-09 | 甲骨文国际公司 | 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 |
CN104346284A (zh) * | 2013-08-02 | 2015-02-11 | 华为技术有限公司 | 一种内存管理方法及内存管理设备 |
WO2015131403A1 (zh) * | 2014-03-07 | 2015-09-11 | 华为技术有限公司 | 访问文件的方法和相关设备 |
CN105830022A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 访问文件的方法和装置 |
CN106469087A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 元数据输出方法、客户端和元数据服务器 |
US20170147446A1 (en) * | 2015-11-25 | 2017-05-25 | Symantec Corporation | Systems and methods for taking snapshots in a deduplicated virtual file system |
US20170168953A1 (en) * | 2014-09-01 | 2017-06-15 | Huawei Technologies Co., Ltd. | File access method and apparatus, and storage system |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN109558211A (zh) * | 2018-11-27 | 2019-04-02 | 上海瓶钵信息科技有限公司 | 保护可信应用与普通应用的交互完整性和保密性的方法 |
CN110554911A (zh) * | 2018-05-30 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 内存访问与分配方法、存储控制器及系统 |
CN110908866A (zh) * | 2019-11-15 | 2020-03-24 | 珠海豹趣科技有限公司 | 软件监控方法及相关设备 |
-
2020
- 2020-03-28 CN CN202010232980.3A patent/CN113448722A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7757034B1 (en) * | 2006-06-29 | 2010-07-13 | Parallels Software International, Inc. | Expansion of virtualized physical memory of virtual machine |
CN101971146A (zh) * | 2007-09-07 | 2011-02-09 | 甲骨文国际公司 | 改进作为管理程序来宾而运行的虚拟机中内存使用情况的系统和方法 |
CN104346284A (zh) * | 2013-08-02 | 2015-02-11 | 华为技术有限公司 | 一种内存管理方法及内存管理设备 |
WO2015131403A1 (zh) * | 2014-03-07 | 2015-09-11 | 华为技术有限公司 | 访问文件的方法和相关设备 |
US20170168953A1 (en) * | 2014-09-01 | 2017-06-15 | Huawei Technologies Co., Ltd. | File access method and apparatus, and storage system |
CN105830022A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 访问文件的方法和装置 |
CN106469087A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 元数据输出方法、客户端和元数据服务器 |
US20170147446A1 (en) * | 2015-11-25 | 2017-05-25 | Symantec Corporation | Systems and methods for taking snapshots in a deduplicated virtual file system |
CN110554911A (zh) * | 2018-05-30 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 内存访问与分配方法、存储控制器及系统 |
CN109189546A (zh) * | 2018-07-11 | 2019-01-11 | 新华三云计算技术有限公司 | 一种虚拟机在线快照的制作方法及装置 |
CN109558211A (zh) * | 2018-11-27 | 2019-04-02 | 上海瓶钵信息科技有限公司 | 保护可信应用与普通应用的交互完整性和保密性的方法 |
CN110908866A (zh) * | 2019-11-15 | 2020-03-24 | 珠海豹趣科技有限公司 | 软件监控方法及相关设备 |
Non-Patent Citations (3)
Title |
---|
MODI, A等: "Live migration of virtual machines with their local persistent storage in a data intensive cloud", 《INTERNATIONAL JOURNAL OF HIGH PERFORMANCE COMPUTING AND NETWORKING》, 6 July 2017 (2017-07-06) * |
杨宁学;李艳萍;田怀文;: "内存映射文件及其在广义舒适度仿真中的应用", 电子测试, no. 13, 5 July 2013 (2013-07-05) * |
白南石;: "关于虚拟内存的一点理解", 科技信息, no. 27, 25 September 2010 (2010-09-25) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048735A (zh) * | 2023-03-23 | 2023-05-02 | 阿里云计算有限公司 | 信息处理方法以及对象共享方法 |
CN116048735B (zh) * | 2023-03-23 | 2023-08-29 | 阿里云计算有限公司 | 信息处理方法以及对象共享方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10067684B2 (en) | File access method and apparatus, and storage device | |
CN110795206B (zh) | 用于促进集群级缓存和内存空间的系统和方法 | |
KR102569545B1 (ko) | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
US8621134B2 (en) | Storage tiering with minimal use of DRAM memory for header overhead | |
CN111679795B (zh) | 无锁并发io处理方法及其装置 | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
KR20100081880A (ko) | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 | |
US20170286005A1 (en) | Virtual bucket multiple hash tables for efficient memory in-line deduplication application | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN111309245B (zh) | 一种分层存储写入方法和装置、读取方法和装置及系统 | |
CN113360098A (zh) | 一种数据写入方法、装置、系统、电子设备及存储介质 | |
US10482012B1 (en) | Storage system and method of operating thereof | |
CN110119245B (zh) | 用于操作nand闪存物理空间以扩展存储器容量的方法和系统 | |
CN111694765A (zh) | 一种面向移动应用特征的非易失性内存文件系统多粒度空间管理方法 | |
CN113448722A (zh) | 进程内存的映射方法和基于无服务器架构的实例处理方法 | |
KR101920474B1 (ko) | 인메모리 가상 데스크탑 시스템 | |
US11960723B2 (en) | Method and system for managing memory associated with a peripheral component interconnect express (PCIE) solid-state drive (SSD) | |
US10140029B2 (en) | Method and apparatus for adaptively managing data in a memory based file system | |
CN111435302A (zh) | 一种应用程序的处理方法及装置 | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
CN110349611B (zh) | 半导体存储器模块和存储器系统 | |
CN114185815A (zh) | 用于实现内存键值存储的方法、设备和系统 | |
JP4792065B2 (ja) | データ記憶方法 | |
US20120011330A1 (en) | Memory management apparatus, memory management method, program therefor | |
CN113296932B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40062494 Country of ref document: HK |