CN113296886A - 虚拟机内存管理方法、装置及系统、物理机 - Google Patents

虚拟机内存管理方法、装置及系统、物理机 Download PDF

Info

Publication number
CN113296886A
CN113296886A CN202110351746.7A CN202110351746A CN113296886A CN 113296886 A CN113296886 A CN 113296886A CN 202110351746 A CN202110351746 A CN 202110351746A CN 113296886 A CN113296886 A CN 113296886A
Authority
CN
China
Prior art keywords
memory
physical
memory page
machine
migrated
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
CN202110351746.7A
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 Innovation Co
Original Assignee
Alibaba Singapore Holdings Pte 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 Singapore Holdings Pte Ltd filed Critical Alibaba Singapore Holdings Pte Ltd
Priority to CN202110351746.7A priority Critical patent/CN113296886A/zh
Publication of CN113296886A publication Critical patent/CN113296886A/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

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

虚拟机内存管理方法、装置及系统、物理机
技术领域
本申请涉及电子设备技术领域,尤其涉及一种虚拟机内存管理方法、装置及系统、物理机。
背景技术
虚拟机(Virtual Machine,VM)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。被创建虚拟机的计算机可以称为物理机,也称宿主机,通常情况下,需要将物理机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。虚拟机的内存以内存页的形式存储数据。
目前的云厂商售卖云服务器时,一般是将服务器的物理机以虚拟机的形式对外售卖。一台物理机的内存能够按照用户需求分割至多个虚拟机中,例如,内存为100G的物理机,可以划分至5个20G的虚拟机内存,每个虚拟机可以被分配给相应的用户。
在实际应用中,物理机的内存一旦被售卖,只能被购买虚拟机的用户使用,此块内存即被占用,该物理机的内存不能被再次使用,导致内存的使用效率较低。
发明内容
有鉴于此,本申请实施例提供一种虚拟机内存管理方法、装置及系统、物理机,用以解决现有技术中物理机的内存一旦被虚拟机占用即不能被再次使用的技术问题。
第一方面,本申请实施例提供一种虚拟机内存管理方法,包括:
确定配置于第一物理机中任一个第一虚拟机的多个内存页;
确定所述多个内存页中满足迁出条件的至少一个迁出内存页;
将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存。
第二方面,本申请实施例提供一种虚拟机内存管理装置,包括:
第一确定模块,用于确定配置于第一物理机中任一个第一虚拟机的多个内存页;
第二确定模块,用于确定所述多个内存页中满足迁出条件的至少一个迁出内存页;
内存迁出模块,用于将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存。
第三方面,本申请实施例提供一种物理机,包括:存储组件与处理组件;所述存储组件用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理组件调用以执行本申请实施例任一种虚拟机内存管理方法。
第四方面,本申请实施例提供一种虚拟机内存管理系统,包括:第一物理机以及存储设备;
所述第一物理机用于:确定配置于第一物理机中任一个第一虚拟机的多个内存页;确定所述多个内存页中满足迁出条件的至少一个迁出内存页;将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存;
所述存储设备用于:接收所述第一物理机发送的所述至少一个迁出内存页并存储。
本申请实施例中,确定配置于第一物理机中任一个第一虚拟机的多个内存页之后,可以确定该多个内存页中满足迁出条件的至少一个迁出内存页,进而将该至少一个迁出内存页迁出到存储设备中,之后释放至少一个迁出内存页在第一物理机中占用的物理内存,进而减少第一虚拟机在第一物理机中的内存占用。通过将第一虚拟机中的多个内存页进行迁出判断,可以将满足迁出条件的至少一个迁出内存页迁出,减少第一虚拟机在第一物理机中的内存占用,释放第一物理机中的内存,使得第一物理机中的内存能够再次利用,进而提高第一物理机内存的使用效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种虚拟机内存管理方法的一个实施例的流程图;
图2为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图;
图3为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图;
图4为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图;
图5为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图;
图6为本申请实施例提供的一种虚拟机内存管理方法的示例图;
图7为本申请实施例提供的一种虚拟机内存管理装置的一个实施例的结构示意图;
图8为本申请实施例提供的一种物理机的一个实施例的结构示意图;
图9为本申请实施例提供的一种虚拟机内存管理系统的一个实施例的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于识别”。类似地,取决于语境,短语“如果确定”或“如果识别(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当识别(陈述的条件或事件)时”或“响应于识别(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
本申请实施例的技术方案可以应用于虚拟机的管理场景中,特别是对虚拟机的内存占用进行有效管理,以减少虚拟机在物理机中的内存占用,使得物理机中物理内存的高效利用。
为了便于理解本申请技术方案,下面对本申请实施例中可能出现的技术词语首先进行解释说明:
虚拟机:一种通过软件环境模拟的具备完整硬件系统功能的计算机系统,实际为运行于物理机上的一个进程,虚拟机的硬件与内存为物理机上的部分硬件与内存。
物理机:部署了虚拟化计算机系统的专属物理服务器,具有实体。
热迁移:虚拟机保持运行状态下,从一台物理机迁移到另外一台物理机,在迁移过程中,用户不感知虚拟机的迁移。
GVA(Guest Virtual Address,虚拟机的虚拟地址):虚拟机内部的虚拟地址。
GPA(Guest Physical Address,虚拟机的物理地址):虚拟机内部的物理地址。
虚拟机维护GVA与GPA的映射关系,虚拟机建立之后,GVA与GPA的映射关系的映射关系不再发生变化。
HVA(Host Virtual Address,物理机的虚拟地址):物理机内部的虚拟地址。
HPA(Host Physical Address,物理机的物理地址):物理机内部的物理地址。
虚拟机实际存储数据时,建立映射表项,映射表项中存储GPA至HPA的映射关系,将虚拟机的物理内存映射到物理机的物理内存,以实现数据的读取或写入。虚拟机执行文件读取、写入等操作时,需要将虚拟内存页的GPA映射到物理内存帧的HPA或者将物理内存帧的HPA映射到虚拟内存页的GPA。
为了便于虚拟机使用内存,可以采用分页方法对虚拟机的内存进行管理。通常,可以将虚拟机的物理内存分为固定大小的块,这些内存块被称为帧,将与物理内存相对应的虚拟内存分为同样大小的内存块,每个内存块被称为内存页或者内存页面。每个内存页分别对应有GVA、GPA、HVA以及HPA。内存页可以存储数据,例如,本案中的内存页可以是大小为4KB(Kilobyte,字节)的内存数据。内存页的大小可以根据实际的使用需求设置。
为了便于统一标记,以便于描述,本申请实施例中的虚拟地址,即指虚拟机内设置的地址,可以包括GVA以及GPA。本申请实施例中的物理地址,即指物理机内设置的地址,可以包括HVA以及HPA。
目前的云厂商售卖云服务器时,一般是将服务器以虚拟机的形式对外售卖。一台物理机的内存能够按照用户需求分割至多个虚拟机中,例如,内存为100G的物理机,可以划分至5个20G的虚拟机内存,每个虚拟机可以被分配给相应的用户。在实际应用中,物理机的内存一旦被售卖,只能被购买虚拟机的用户使用,此块内存即被占用,该物理机的内存不能被再次使用,导致内存的使用效率较低。
本申请实施例中,确定配置于第一物理机中任一个第一虚拟机的多个内存页之后,可以确定该多个内存页中满足迁出条件的至少一个迁出内存页,进而将该至少一个迁出内存页迁出到存储设备中,之后释放至少一个迁出内存页在第一物理机中占用的物理内存,进而减少第一虚拟机在第一物理机中的内存占用。通过将第一虚拟机中的多个内存页进行迁出判断,可以将满足迁出条件的至少一个迁出内存页迁出,减少第一虚拟机在第一物理机中的内存占用,释放第一物理机中的内存,使得第一物理机中的内存能够再次利用,进而提供第一物理机内存的使用效率。
下面将结合附图对本申请实施例进行详细描述。
如图1所示,为本申请实施例提供的一种虚拟机内存管理方法的一个实施例的流程图,方法可以包括以下几个步骤:
101:确定配置于第一物理机中任一个第一虚拟机的多个内存页。
可选地,第一虚拟机可以包括多个,也即可以在第一物理机中配置多个第一虚拟机,针对任一个第一虚拟机均可以执行内存页迁移,以降低第一虚拟机在第一物理机中占用的物理内存。
多个内存页为第一虚拟机中存储的内存页。虚拟机的内存按照分页机制被划分为多个大小相同的内存块,任一个内存页中可以存储内存数据。
可选地,本申请实施例提供的虚拟机内存管理方法可以配置于物理机中,该物理机可以与第一物理机相同,也可以与第一物理机不同。物理机例如可以为高性能计算机、云服务器、超级计算机等电子设备,本申请实施例中对物理机的具体类型并不作出过多限制。
102:确定多个内存页中满足迁出条件的至少一个迁出内存页。
其中,至少一个迁出内存页为多个内存页中满足迁出条件的内存页。
103:将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
存储设备中可以接收至少一个迁出内存页并存储。存储设备的使用成本远低于物理机的使用成本。例如,物理机可以为高配置、高性能的计算机,存储设备可以为更为廉价的物理机、更廉价的内存、NVME(Non-Volatile Memory Express,非易失性存储器)、或者通过软件将磁盘模拟成的内存等设备。
将至少一个迁出内存页迁出到存储设备具体可以是将至少一个迁出内存页分别对应的内存数据迁出到存储设备。
第一物理机中被至少一个迁出内存页占用的物理内存被释放之后,即可以解除第一虚拟机在第一物理机中占用的物理内存,实现第一物理机内存复用。
此外,在实际应用中,第一物理机可以包括多台,存储设备也可以包括多台。多台第一物理机可以组成“热”内存池,多台存储设备可以组成“冷”内存池。任一台物理机均可以对其配置的多个第一虚拟机均执行本申请实施例的内存管理方法。内存池中的任一台存储设备可以接收任一台物理机迁入的内存页。
本申请实施例中,确定配置于第一物理机中任一个第一虚拟机的多个内存页时,可以确定该多个内存页中满足迁出条件的至少一个迁出内存页,进而将至少一个迁出内存页迁出到存储设备。存储设备可以为与第一物理机的存储装置,可以存储第一物理机中满足迁出条件的内存页。之后可以释放至少一个迁出内存页在第一物理机中占用的物理内存。减少第一虚拟机在第一物理机中的内存占用,释放第一物理机中的内存,使得第一物理机中的内存能够再次利用,进而提供第一物理机内存的使用效率。
在实际应用中,虚拟机的使用对象多为云服务器的购买者。为了提高用户对虚拟机的管理效率,用户可以自行决定是否对虚拟机进行内存管理。
作为一个实施例,确定配置于第一物理机中任一个第一虚拟机的多个内存页可以包括:
接收用户针对第一物理机发起的内存管理请求。
响应于内存管理请求,确定配置于第一物理机中任一个第一虚拟机的多个内存页。
对第一物理机发起内存管理请求的用户可以为第一物理机的后台运维人员,以便于提高运维人员对第一物理机的管理效率。对第一物理机发起内存管理请求的用户也可以为第一虚拟机的使用用户,以给予使用用户对第一虚拟机的内存管理权,提高使用用户对第一虚拟机的管理效率。
在一些实施例中,任一个内存页是否满足迁出条件具体可以通过该内存页的访问频率与第一频率阈值的高低确定。任一个内存页是否满足迁入条件具体可以通过该内存页的访问频率与第二频率阈值的高低确定。第一频率阈值与第二频率阈值也可以由发起内存管理请求的用户设置获得。
作为一种可能的实现方式,可以为发起内存管理请求的用户输出阈值输入界面,以检测获得该用户在阈值输入界面中输入获得的第一频率阈值以及第二频率阈值。
在实际应用中,若用户发起针对第一虚拟机的访问请求,可以从第一物理机以及存储设备中读取数据。作为一个实施例,该方法还可以包括:
接收目标用户针对第一虚拟机发起的内存访问请求。
响应内存访问请求,确定目标内存页。
基于第一物理机以及存储设备,获取目标内存页对应的目标内存数据。
为目标用户输出目标内存数据。
目标用户可以为使用第一虚拟机的用户。在一种可能的设计中,若第一物理机为用户端,第一物理机启动第一虚拟机之后,目标用户可以直接在第一虚拟机发起内存访问请求。在又一种可能的设计中,若第一物理机为服务器,例如云服务器,目标用户通过计算机、笔记本电脑、平板电脑等电子设备通过与第一物理机的网络连接使用第一虚拟机,第一虚拟机在运行过程中可以接收目标用户通过电子设备发起的内存访问请求。
可选地,不同内存页可以使用内存页进行标识,以标识需要访问的内存页。响应内存访问请求,确定目标内存页可以包括:响应内存访问请求,获取内存访问请求中的内存页标识,确定内存页标识对应的目标内存页。
由于不同内存页的存储地址不同,为了降低标识成本,提高标识效率,可以使用内存页的存储地址作为页面标识。又由于是针对第一虚拟机中的内存页使用,内存页的存储地址可以为内存页在第一虚拟机的虚拟地址,例如可以为虚拟机物理地址(GPA)。通过内存页在第一虚拟机的虚拟地址以及内存页的映射关系,确定内存页的实际物理地址,该实际的物理地址可以包括物理机的物理地址(HPA),此外,在地址映射过程中,需要先将GPA映射到HVA,再由HVA映射到HPA,该映射过程主要通过内存页对应的映射关系确定。
可选地,多个内存页分别对应的映射关系可以形成一映射表项,通过查询映射表项可以确定某个内存页的映射关系。
本申请实施例中,可以接收针对第一虚拟机发起的内存访问请求,进而可以响应该内存访问请求,确定目标内存页,从而基于第一物理机以及存储设备中获取该目标内存页对应的目标内存数据,为目标用户输出目标内存数据。实现对目标内存页的顺利读取,以确保第一虚拟机的正常使用。
在一些实施例中,内存页的迁出条件例如可以为对内存页的访问频率进行阈值判断,以确定是否对某个内存页迁出。因此,当用户发起一个访问请求时,该访问请求属于未迁出的内存页的访问请求的概率更高,为了提高数据获取效率。在查询内存页时,可以先查询第一物理机本地的内存页,再查询存储设备中的内存页。
如图2所示,为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图,该方法可以包括:
201:确定配置于第一物理机中任一个第一虚拟机的多个内存页。
202:确定多个内存页中满足迁出条件的至少一个迁出内存页。
203:将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
204:接收目标用户针对第一虚拟机发起的内存访问请求。
205:响应内存访问请求,确定目标内存页。
206:查询多个内存页中未迁出的内存页中是否存在目标内存页,如果存在,执行步骤207;如果不存在,执行步骤208。
多个内存页中未迁出的内存页可以包括多个内存页中内存数据存储于第一物理机中的内存页。相对应的,多个内存页中已迁出的内存页可以包括多个内存页中内存数据存储于存储设备中的内存页。
可选地,多个内存页可以按照存储地的不同划分为两组内存页。多个内存页中存储于第一物理机的至少一个第一内存页以及存储于存储设备的至少一个第二内存页。本申请实施例中查询的多个内存页中未迁出的内存页是否存在目标内存页具体可以包括查询多个内存页中存储于第一物理机的至少一个第一内存页中是否存在目标内存页。
207:从第一物理机获取目标内存页的目标内存数据。
208:从存储设备中获取目标内存页的目标内存数据。
从第一物理机或者存储设备中获取目标内存页的目标内存数据时,可以采用数据读取方式从第一物理机或者存储设备中获取目标内存页的目标内存数据。
本申请实施例中,确定配置于第一物理机中任一个第一虚拟机的多个内存页之后,可以确定该多个内存页中满足迁出条件的至少一个迁出内存页。进而将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机占用的物理内存。减少第一虚拟机在第一物理机中的内存占用。在目标用户发起页面访问请求时,可以确定该页面访问请求对应的目标内存页。由于第一虚拟机的多个内存页部分被迁出至存储设备,也即至少一个迁出内存页被迁出至存储设备,剩余被迁出部分继续存储于第一物理机的物理内存,实现第一虚拟机不同内存的分离存储。在查询目标内存页时,可以先查询本地存储的内存页,再查询存储设备存储的内存页,实现内存页的高效查询,进而提高内存数据的获取效率。
在一种可能的设计中,由于第一虚拟机的内存页的存储方式与现有的虚拟机的内存页存储方式存在显著区别,为了对本申请的技术方案进行显著区分,在虚拟机建立的过程中,可以为虚拟机增加迁移标记。由于在实际应用中,虚拟机是运行于物理机的结构体对象,虚拟机的迁移标记可以为在第一虚拟机对应的内存对象中增加的迁移标记位(FLAG)。若第一虚拟机需要对内存使用本申请技术方案进行管理,可以设置迁移标记为预定的标识,若第一虚拟机不需要使用本申请技术方案对内存进行管理,可以设置迁移标记为非预定标识。
因此,目标内存数据从存储设备的获取步骤具体可以包括:
获取为第一虚拟机阈值的迁移标记对应的标记信息。
如果标记信息与预定标识相匹配,生成目标内存页的内存读取事件。
基于内存读取事件,从存储设备中读取目标内存页的目标内存数据。
标记信息可以是为迁移标记设置的预定标识。标记信息与预定标识相匹配具体可以为标识信息与预定标识相同。
在又一种可能的设计中,如果标记信息与预定标识不匹配,也即标记信息为非预定标识,可以生成页面获取失败的提示信息,之后可以为目标用户输出该页面获取失败的提示信息,以提示目标用户访问失败。
内存页的访问需要基于该内存页的虚拟地址查询对应的物理地址,进而从物理地址处读取或者写入数据。如前述实施例中所描述的内容,目标内存页可以使用虚拟地址进行标识。在目标内存页的数据读取过程中,需要以目标内存页的虚拟地址作为读取事件的生成依据。
因此,作为又一个实施例,内存读取事件的生成步骤具体可以包括:
确定目标内存页在第一虚拟机的虚拟地址。
生成目标内存页的虚拟地址对应的内存读取事件。
在基于内存读取事件,从存储设备中读取目标内存页的目标存储数据可以包括:
运行内存读取事件,获取目标内存页的虚拟地址在存储设备的物理地址;
基于目标内存页在存储设备的物理地址,读取目标内存页的目标存储数据。
在实际应用中,虚拟机内部可以保留所有内存页的虚拟地址。当虚拟机内的某个内存页被访问时,可以查询该内存页是否存在预定的第一映射关系。如果不存在,则确定未迁出的内存页中不存在目标内存页。如果存在,则确定未迁出的内存页中存在目标内存页。当未迁出的内存页中不存在目标内存页时,即确定该目标内存页在本地未关联第一映射关系,可以从存储设备中查询该目标内存页的第二映射关系,并在获取目标内存数据之后,在本地保存该第二映射关系。因此,除基于目标内存页在存储设备的物理地址,从存储设备读取目标内存页的目标存储数据之外,还可以基于目标内存页在虚拟机的虚拟地址以及在存储设备的存储地址,建立目标内存页的映射关系。例如,可以根据HPA以及HVA,在虚拟机中完成HVA与HPA之间的物理映射关系的建立,之后再建立GPA与HPA之间的实际映射关系的建立,完成目标内存页在虚拟机中的第二映射关系的存储,以便于后续查询效率的提升。
在实际应用中,为了加速读取目标内存数据,可以使用RDMA(Remote DirectMemory Access,远程数据直接存取)的高速网络通道,从存储设备中读取目标内存数据。此时,第一物理机与存储设备之间通过RDMA的高速网络建立网络通信,实现数据的高速传输。
作为一个实施例,第一虚拟机的内存页的存储位置是动态调整的。在确定配置于第一物理机中任一个第一虚拟机的多个内存页之后,该方法还可以包括:
确定所述多个内存页中存储于所述第一物理机的多个第一内存页以及存储于所述存储设备的多个第二内存页;
所述确定所述多个内存页中满足迁出条件的至少一个迁出内存页包括:
从所述多个第一内存页中确定满足迁出条件的至少一个迁出内存页。
在实际应用中,在虚拟机的内存对象建立过程中,即可以使用本申请实施例的技术方案对内存页的数据进行迁出,也即将访问频率较低的内存页迁出到存储设备。但是,在实际应用中,内存页的迁入与迁出可以根据内存页的实时访问情况不断调整。
参考图3,为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图,该方法可以包括以下几个步骤:
301:确定配置于第一物理机中任一个第一虚拟机的多个内存页。
302:确定多个内存页中存储于第一物理机的至少一个第一内存页以及存储于存储设备的至少一个第二内存页。
303:从多个第一内存页中确定满足迁出条件的至少一个迁出内存页。
304:将至少一个迁出内存页迁出到存储设备,以释放至少一个迁出内存页在第一物理机中占用的物理内存。
305:确定多个第二内存页中满足迁入条件的至少一个迁入内存页。
306:为至少一个迁入内存页在第一物理机中设置物理内存,并将至少一个迁入内存页从存储设备迁入第一物理机的物理内存。
在任一个迁入内存页迁入至第一物理机中存储之后,该迁入内存页在下一次的内存管理流程中可以作为第一内存页。在任一个迁出内存页迁出至存储设备之后,该迁出内存页在下一次的内存管理流程中可以作为第二内存页。
本申请实施例中,确定配置于第一物理机中任一个第一虚拟机的多个内存页之后,可以确定多个内存页中,存储于第一物理机的至少一个第一内存页,以及存储于存储设备的至少一个第二内存页。对第一虚拟机中的多个内存页按照存储设备的不同进行了区分,之后,可以从多个第一内存页中确定满足迁出条件的至少一个迁出内存页,将至少一个迁出内存页迁出至存储设备,以释放该至少一个迁出内存页在第一物理机中占用的物理内存。与此同时,还可以从多个第二内存页中确定满足迁入条件的至少一个迁入内存页,将至少一个迁入内存页迁入至第一物理机。迁入与迁出相对于第一物理机而言,可以对第一虚拟机中的多个内存页进行实时的迁入与迁出调整,实现内存页的动态存储,在确保内存页的读取效率的同时,降低第一虚拟机在第一物理机占用的物理内存,提高第一物理机的物理内存使用效率。
在第一虚拟机将至少一个迁出内存页从第一物理机迁出至存储设备时,具体可以是保留至少一个迁出内存页在第一虚拟机的虚拟地址,将至少一个迁出内存页存储于第一物理机的物理内存中的数据迁出至存储设备。将第一虚拟机中至少一个迁出内存页各自的虚拟地址与对应第一物理机的物理地址的映射关系注销,并建立虚拟地址与内存数据在存储设备的物理地址的新映射关系,以确保第一虚拟机内部的内存页仍能够正常使用。
作为一个实施例,将至少一个迁出内存页迁出到存储设备,以释放至少一个迁出内存页在第一物理机中占用的物理内存具体可以包括:
基于至少一个迁出内存页分别在第一虚拟机的虚拟地址以及第一映射关系,确定至少一个迁出内存页在第一物理机分别对应的物理地址。
其中,任一个内存页的第一映射关系为内存页在第一虚拟机的虚拟地址与第一物理机的物理地址的对应关系。
根据至少一个迁出内存页在第一物理机分别对应的物理地址,获取至少一个迁出内存页分别对应的内存数据。
将至少一个迁出内存页分别对应的内存数据复制到存储设备,并获取至少一个迁出内存页各自的内存数据在存储设备的物理地址。
建立任一个迁出内存页在第一虚拟机中的虚拟地址与其内存数据在存储设备的物理地址之间的第二映射关系,以获得至少一个迁出内存页分别对应的第二映射关系。
根据至少一个迁出内存页在第一物理机分别对应的物理地址,删除至少一个迁出内存页在第一物理机中的内存数据。
可选地,将至少一个迁出内存页分别对应的内存数据复制到存储设备具体可以为将至少一个迁出内存页分别对应的内存数据写入到存储设备的物理内存,使得存储设备的物理内存中保存至少一个迁出内存页分别对应的内存数据。
在第一虚拟机将至少一个迁入内存页从存储设备迁入至第一物理机时,具体可以是根据至少一个迁入内存页在第一虚拟机的虚拟地址,查询至少一个迁入内存页存储于存储设备的物理内存中的内存数据,将至少一个迁入内存页的内存数据重新复制到第一物理机的物理内存。将至少一个迁入内存页各自的虚拟地址与对应存储设备中物理地址的映射关系注销,并建立虚拟地址与内存数据在第一物理机的物理地址的新映射关系,以确保内存页能够正常使用。
作为又一个实施例,为至少一个迁入内存页在第一物理机中设置物理内存,并将至少一个迁入内存页从存储设备迁入第一物理机具体可以包括:
基于至少一个迁入内存页分别在第一虚拟机的虚拟地址以及第二映射关系,确定至少一个迁入内存页在存储设备分别对应的物理地址。
其中,任一个内存页的第二映射关系为该内存页在第一虚拟机的虚拟地址与存储设备的物理地址的对应关系。
根据至少一个迁入内存页在存储设备分别对应的物理地址,获取至少一个迁入内存页分别对应的内存数据。
将至少一个迁入内存页分别对应的内存数据复制到第一物理机的物理内存,并获取至少一个迁入内存页各自的内存数据在第一物理设备的物理地址;
建立任一个迁入内存页在虚拟机中的虚拟地址与其内存数据在第一物理机的物理地址之间的第一映射关系,以获得至少一个迁入内存页分别对应的第一映射关系。
根据至少一个迁入内存页在存储设备分别对应的物理地址,删除至少一个迁入内存页在存储设备中的内存数据。
可选地,将至少一个迁入内存页分别对应的内存数据复制到第一物理机的物理内存实际是将至少一个迁入内存页分别对应的内存数据写入到第一物理机的物理内存,使得第一物理机的物理内存保存至少一个迁入内存页分别对应的内存数据。
在实际应用中,虚拟机的内存是存在“冷”“热”区分的,热内存可以为程序高频访问的区域,冷内存可以为程序低频访问的区域。本申请实施例中迁出以及迁出的条件判断即是以程序对内存区域的访问频率的高低来执行的。
作为一个实施例,任一个内存页是否满足迁出条件的判断步骤具体可以包括:
获取任一个内存页的访问频率;
若内存页的访问频率高于第一频率阈值,确定内存页不满足迁出条件;
若内存页的访问频率低于第一频率阈值,确定内存页满足迁出条件。
在第一虚拟机的内存页已按照存储地划分为多个第一内存页以及多个第二内存页之后,进行迁出条件判断的内存页可以为第一内存页,进行迁出条件判断的内存页可以为第二内存页。
作为又一个实施例,任一个第二内存页是否满足迁入条件的判断步骤具体包括:
获取任一个第二内存页的访问频率;
若第二内存页的访问频率高于第二频率阈值,确定第二内存页满足迁入条件;
若第二内存页的访问频率低于第二频率阈值,确定第二内存页不满足迁入条件。
可选地,除使用内存页的访问频率对内存也进行迁入迁出条件的判断依据之外,还可以使用内存页的最后访问时间、平均访问时间等内容作为迁入迁出条件的判断依据。
在实际应用中,第一物理机被第一虚拟机占用的物理内存被释放之后,还可以被再次利用。如图4所示,为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图,该方法可以包括:
401:确定配置于第一物理机中任一个第一虚拟机的多个内存页。
402:确定多个内存页中满足迁出条件的至少一个迁出内存页。
403:将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
404:响应于虚拟机建立请求,在第一物理机中生成第二虚拟机。
可选地,响应于虚拟机建立请求,在第一物理机中生成第二虚拟机具体可以包括:响应于虚拟机建立请求,在第一物理机中运行第二虚拟机的进程,以生成第二虚拟机。
405:基于第一物理机未被占用的物理内存,为第二虚拟机建立多个内存页。
本申请实施例中,在将至少一个迁出内存页迁出至存储设备之后,可以释放至少一个迁出内存页在第一物理机中占用的物理内存,使得第一物理机中的物理内存被释放。在响应于虚拟机建立请求时,可以生成第二虚拟机,进而基于第一物理机未被占用的物理内存,为第二虚拟机建立多个内存页。实现第一虚拟机中物理内存的再次利用,提高虚拟机的物理内存利用效率。
在实际应用中,一台物理机中可以配置多个虚拟机,可能存在虚拟机的迁移需求。采用本申请实施例的技术方案进行内存管理后的虚拟机,进行迁移时,可以仅迁移虚拟机在物理机中存储的内存页,而其在存储设备中存储的物理页可以不进行迁移,使得虚拟机的迁移效率有效提升。
作为又一个实施例,该方法还可以包括:
获取第一物理机中配置的多个第一虚拟机。
从多个第一虚拟机中确定需要进行虚拟机迁移的第三虚拟机。
将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机。
将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机之后,还可以包括:建立第二物理机与存储设备的通信连接。在实际应用中,可以建立第二物理机与存储设备的RDMA通信连接。
可选地,将第三虚拟机的多个内存页中未迁出的内存页迁移到第二物理机时,可以采用虚拟机热迁移的方式将第三虚拟机的多个内存页中未迁出的内存页迁移到第二物理机。
如图5所示,为本申请实施例提供的一种虚拟机内存管理方法的又一个实施例的流程图,该方法可以包括:
501:确定配置于第一物理机中任一个第一虚拟机的多个内存页。
502:确定多个内存页中满足迁出条件的至少一个迁出内存页。
503:将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
其中,可以对第一物理机中的多个第一虚拟机分别进行迁出条件的判断,以将多个第一虚拟机中分别对应的至少一个迁出内存页迁出到存储设备,并释放多个第一虚拟机各自的至少一个迁出内存页在第一物理机中占用的物理内存。有效减少多个第一虚拟机在第一物理机中的内存占用。
504:获取第一物理机中配置的多个第一虚拟机。
505:确定第一物理机中多个第一虚拟机分别占用的物理内存。
506:根据多个第一虚拟机分别占用的物理内存,判断第一物理机是否满足虚拟机迁移条件,如果是,则执行步骤507,如果否,执行步骤505。
507:从多个第一虚拟机中确定需要进行虚拟机迁移的第三虚拟机。
508:将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机。
本申请实施例中,在第一物理机中配置多个第一虚拟机,对于任一个第一虚拟机而言,可以根据对其多个内存页的迁出条件的判断结果,决定该第一虚拟机是否需要执行内存页的迁出,以降低第一虚拟机在第一物理机中占用的物理内存。在实际应用中,可以对多个第一虚拟机一一进行迁出条件的判断,尽可能减少第一物理机的物理内存的占用。此外,还可以对第一物理机的内存占用进行迁移判断,以在内存使用较多时,迁移其中的虚拟机。因此,可以确定第一物理机中多个第一虚拟机分别占用的物理内存。根据多个第一虚拟机分别占用的物理内存,判断第一物理机是否满足虚拟机迁移条件。如果满足,则确定多个第一虚拟机中需要迁移的第三虚拟机,将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机。通过对第一物理机的内存占用情况进行检测,可以对第一物理机的运行情况进行有效管理。在判断第一物理机需要迁移时,可以将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机。在第三虚拟机迁移过程中,仅需要迁移第一物理机中存储的未迁移的内存页,实现虚拟机的高效迁移。
作为一个实施例,将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机可以包括:
确定第三虚拟机的多个内存页中存储于第一物理机的多个第三内存页。
将多个第三内存页迁移至第二物理机。
在对内存页进行迁移之后,由于物理机的物理地址的改变,需要重新建立内存页的第一映射关系。
作为一种可能的实现方式,将多个第三内存页迁移至第二物理机可以包括:
根据多个第三内存页分别对应的虚拟地址以及第一映射关系,确定多个第三内存页在第一物理机分别对应的物理地址;其中,任一个内存页的第一映射关系为内存页在第三虚拟机的虚拟地址与第一物理机的物理地址的对应关系;
根据多个第三内存页分别在第一物理机对应的物理地址,获取多个第三内存页分别对应的内存数据;
将多个第三内存页分别对应的内存数据复制到第二物理设备,并获取多个第三内存页分别在第二物理设备对应的物理内存;
建立任一个第三内存页在第三虚拟机对应虚拟地址以及在第二物理机对应物理地址之间的第三映射关系,以获得多个第三内存页分别对应的第三映射关系;
根据多个第三内存页分别在第一物理机对应的物理地址,删除第一物理机中多个第三内存页分别对应的内存数据。
在一些实施例中,除确定第三虚拟机的多个内存页中存储于第一物理机的多个第三内存页之外,还可以确定第三虚拟机的多个内存页中存储于存储设备的第四内存页。在将多个第三内存页迁移至第二物理机时,不需要将存储于存储设备的第四内存页进行迁移,继续在存储设备中存储第四内存页。
第四内存页继续存储于存储设备中,第三虚拟机中的第四内存页原有对应的第二映射关系并不发生变化,此时,建立第二物理机与第三虚拟机的通信连接之后,即可以通过第四内存页原有的第二映射关系访问存储设备中的第四内存页。因此,在以迁入条件以及迁出条件作为判断依据对虚拟机的内存进行管理之后,可以减少虚拟机在物理机的内存页数量,进而在实际进行虚拟机迁移时,迁移虚拟机在物理机的内存页即可,而虚拟机在存储设备中存储的内存页不需要迁移,在建立虚拟机所在新物理机与存储设备之间的通信连接之后即可以访问存储设备中未迁移的内存页,进而提高虚拟机的迁移效率。
为了便于理解,以第一物理机为云服务器,在图6中标识为M1、存储设备为NVME,在图6中标识为M2为例详细介绍本申请实施例的技术方案。
如图6所示,云服务器M1中可以配置本申请的虚拟机内存管理方法,以对其配置的第一虚拟机进行内存管理。云服务器M1中可以配置多个第一虚拟机。云服务器M1可以601确定任一个第一虚拟机的多个内存页,并602确定多个内存页中满足迁出条件的至少一个迁出内存页。之后,将603至少一个迁出内存页迁出到NVME,M2。
在实际读取第一虚拟机的内存页时,可以从云服务器M1以及存储设备NVME,M2中读取。例如,假如目标用户发起的访问请求所针对的目标内存页为迁入到NVME,M2的内存页,可以从NVME,M2中604读取目标内存页的目标内存数据。
NVME,M2可以接收云服务器M1发送的至少一个迁出内存页,并存储至少一个迁出内存页。为了提高NVME,M2与云服务器M1的通信效率,NVME,M2与云服务器M1之间可以通过RDMA的高速网络通道进行数据传输。
如图7所示,为本申请实施例提供的一种虚拟机内存管理装置的一个实施例的流程图,该装置可以包括:
第一确定模块701:用于确定配置于第一物理机中任一个第一虚拟机的多个内存页。
第二确定模块702:用于确定多个内存页中满足迁出条件的至少一个迁出内存页。
内存迁出模块703:用于将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
作为一个实施例,该装置还可以包括:
请求接收模块,用于接收目标用户针对第一虚拟机发起的内存访问请求。
请求响应模块,用于响应内存访问请求,确定目标内存页。
数据获取模块,用于基于第一物理机以及存储设备,获取目标内存页的目标内存数据。
数据输出模块,用于为目标用户输出目标内存数据。
在一种可能的设计中,数据获取模块可以包括:
内存查询单元,用于查询多个内存页中未迁出的内存页中是否存在目标内存页;
第一获取单元,用于如果存在,从第一物理机获取目标内存页的目标内存数据;
第二获取单元,用于如果不存在,从存储设备中获取目标内存页的目标内存数据。
作为一种可能的实现方式,第二获取单元具体可以包括:
标记确定子单元,用于获取为第一虚拟机预置的迁移标记对应的标记信息。
标记匹配子单元,用于如果标记信息与预设标识相匹配,生成目标内存页的内存读取事件。
数据获取子单元,用于基于内存读取事件,从存储设备中读取目标内存页的目标内存数据。
在一种可能的设计中,数据获取子单元具体可以用于:
确定目标内存页在第一虚拟机的虚拟地址;生成目标内存页的虚拟地址对应的内存读取事件;运行内存读取事件,获取目标内存页的虚拟地址在存储设备的物理地址;基于目标内存页的虚拟地址在存储设备的物理地址,读取目标内存页的目标存储数据。
作为又一个实施例,该装置还可以包括:
第一划分模块,用于确定多个内存页中存储于第一物理机的多个第一内存页以及存储于存储设备的多个第二内存页。
第二确定模块可以包括:
第一确定单元,用于从多个第一内存页中确定满足迁出条件的至少一个迁出内存页。
还包括:
第三确定模块,用于从多个第二内存页中确定满足迁入条件的至少一个迁入内存页。
内存迁入模块,用于为至少一个迁入内存页在第一物理机中设置物理内存,并将至少一个迁入内存页从存储设备迁入第一物理机。
在一种可能的设计中,内存迁出模块可以包括:
第二确定单元,用于基于至少一个迁出内存页分别在第一虚拟机的虚拟地址以及第一映射关系,确定至少一个迁出内存页在第一物理机分别对应的物理地址。其中,任一个内存页的第一映射关系为内存页在第一虚拟机的虚拟地址与第一物理机的物理地址的对应关系。
第三获取单元,用于根据至少一个迁出内存页在第一物理机分别对应的物理地址,获取至少一个迁出内存页分别对应的内存数据。
第一复制单元,用于将至少一个迁出内存页分别对应的内存数据复制到存储设备,并获取至少一个迁出内存页各自的内存数据在存储设备的物理地址。
第一映射单元,用于建立任一个迁出内存页在第一虚拟机的虚拟地址与其内存数据在存储设备的物理地址之间的第二映射关系,以获得至少一个迁出内存页分别对应的第二映射关系。
第一删除单元,用于根据至少一个迁出内存页在第一物理机分别对应的物理地址,删除至少一个迁出内存页在第一物理机中的内存数据。
在又一种可能的设计中,内存迁入模块可以包括:
第三确定单元,用于基于至少一个迁入内存页分别在第一虚拟机的虚拟地址以及第二映射关系,确定至少一个迁入内存页在存储设备分别对应的物理地址。其中,任一个内存页的第二映射关系为内存页在第一虚拟机的虚拟地址与存储设备的物理地址的对应关系。
第四获取单元,用于根据至少一个迁入内存页在存储设备分别对应的物理地址,获取至少一个迁入内存页分别对应的内存数据。
第二复制单元,用于将至少一个迁入内存页各自的内存数据复制到第一物理机的物理内存,并获取至少一个迁入内存页各自的内存数据在第一物理设备的物理地址。
第二映射单元,用于建立任一个迁入内存页在第一虚拟机中的虚拟地址与其内存数据在第一物理机的物理地址之间的第一映射关系,以获得至少一个迁入内存页分别对应的第一映射关系;
第二删除单元,用于根据至少一个迁入内存页在存储设备分别对应的物理地址,删除至少一个迁入内存页在存储设备中的内存数据。
作为一个实施例,第二确定模块可以包括:
频率获取一单元,用于获取任一个内存页的访问频率。
第一处理单元,用于若内存页的访问频率高于第一频率阈值,确定内存页不满足迁出条件。
第二处理单元,用于若内存页的访问频率低于第一频率阈值,确定内存页满足迁出条件。
在某些实施例中,第三确定模块可以包括:
频率获取二单元,用于获取任一个第二内存页的访问频率;
第三处理单元,用于若第二内存页的访问频率高于第二频率阈值,确定第二内存页满足迁入条件;
第四处理单元,用于若第二内存页的访问频率低于第二频率阈值,确定第二内存页不满足迁入条件。
作为又一个实施例,该装置还可以包括:
第一生成模块,用于响应于虚拟机建立请求,生成第二虚拟机;
内存建立模块,用于基于第一物理机未被占用的物理内存,为第二虚拟机建立多个内存页。
在某些实施例中,该装置还可以包括:
虚拟机获取模块,用于获取第一物理机中配置的多个第一虚拟机;
迁移确定模块,用于从多个第一虚拟机中确定需要进行虚拟机迁移的第三虚拟机;
内存迁移模块,用于将第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机。
作为一种可能的实现方式,迁移确定模块可以包括:
物理确定单元,用于确定第一物理机中多个第一虚拟机分别占用的物理内存;
迁移判断单元,用于根据多个第一虚拟机分别占用的物理内存,判断第一物理机是否满足虚拟机迁移条件;
第五处理单元,用于如果是,确定多个第一虚拟机中需要迁移的第三虚拟机。
第六处理单元,用于如果否,返回至确定第一物理机中多个第一虚拟机分别占用的物理内存的步骤继续执行。
在某些实施例中,内存迁移模块可以包括:
第七确定单元,用于确定第三虚拟机的多个内存页中存储于第一物理机的多个第三内存页以及存储于存储设备的多个第四内存页;
内存迁移单元,用于将多个第三内存页迁移至第二物理机。
在一种可能的设计中,内存迁移单元具体可以用于:
根据多个第三内存页分别对应的虚拟地址以及第一映射关系,确定多个第三内存页在第一物理机分别对应的物理地址;其中,任一个内存页的第一映射关系为内存页在第三虚拟机的虚拟地址与第一物理机的物理地址的对应关系;
根据多个第三内存页分别在第一物理机对应的物理地址,获取多个第三内存页分别对应的内存数据;
将多个第三内存页分别对应的内存数据复制到第二物理设备,并获取多个第三内存页分别在第二物理设备对应的物理内存;
建立任一个第三内存页在第三虚拟机对应虚拟地址以及在第二物理机对应物理地址之间的第三映射关系,以获得多个第三内存页分别对应的第三映射关系;
根据多个第三内存页分别在第一物理机对应的物理地址,删除第一物理机中多个第三内存页分别对应的内存数据。
图7的虚拟机内存管理装置可以执行图1所示实施例的虚拟机内存管理方法,其实现原理和技术效果不再赘述。对于上述实施例中的各个模块、单元以及子单元所执行的各个步骤的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在实际应用中,图7所示的虚拟机内存管理装置可以配置为一物理机,如图8所示,为本申请实施例提供的一种物理机的结构示意图,该物理机可以包括:存储组件801以及处理组件802。该存储组件801可以用于存储一条或多条计算机指令。一条或多条计算机指令被处理组件802调用以执行前述实施例中任一中虚拟机内存管理方法。
诸如,该处理组件可以用于:确定配置于第一物理机中任一个第一虚拟机的多个内存页;确定多个内存页中满足迁出条件的至少一个迁出内存页;将至少一个迁出内存页迁出到存储设备,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
其中,处理组件802可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的虚拟机内存管理方法。
存储组件801被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
当然,服务器必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于服务器和其他设备,例如用户设备,之间有线或无线方式的通信等。
此外,本申请实施例还提供一种计算机可读存储介质,存储介质可以存储一条或多条计算机指令,一条或多条计算机指令执行时用以实现图1等实施例中的虚拟机内存管理方法。
如图9所示,为本申请实施例提供的一种虚拟机内存管理系统的一个实施例的流程图,该系统可以包括:第一物理机901以及存储设备902。
第一物理机901中可以配置多个第一虚拟机。
第一物理机901可以用于:确定配置于第一物理机中任一个第一虚拟机的多个内存页。确定多个内存页中满足迁出条件的至少一个迁出内存页。将至少一个迁出内存页迁出到存储设备902,并释放至少一个迁出内存页在第一物理机中占用的物理内存。
存储设备902可以用于:接收第一物理机发送的至少一个迁出内存页并存储。
本申请实施例中的第一物理机可以为图8所示的物理机,具体可以执行图1所示的虚拟机内存管理方法,实现第一物理机的内存管理,提高第一物理机的内存使用效率。第一物理机所在内存管理过程中所执行的管理步骤,可以参考图1所示的虚拟机内存管理方法,为了描述的简洁性考虑,在此不再赘述。
本申请实施例中,确定配置于第一物理机中任一个第一虚拟机的多个内存页时,可以确定该多个内存页中满足迁出条件的至少一个迁出内存页,进而将至少一个迁出内存页迁出到存储设备。存储设备可以为与第一物理机的存储装置,可以存储第一物理机中满足迁出条件的内存页。之后可以释放至少一个迁出内存页在第一物理机中占用的物理内存。减少第一虚拟机在第一物理机中的内存占用,释放第一物理机中的内存,使得第一物理机中的内存能够再次利用,进而提供第一物理机内存的使用效率。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,物理机可以包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (19)

1.一种虚拟机内存管理方法,其特征在于,包括:
确定配置于第一物理机中任一个第一虚拟机的多个内存页;
确定所述多个内存页中满足迁出条件的至少一个迁出内存页;
将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收目标用户针对所述第一虚拟机发起的内存访问请求;
响应所述内存访问请求,确定目标内存页;
基于所述第一物理机以及所述存储设备,获取所述目标内存页的目标内存数据;
为所述目标用户输出所述目标内存数据。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一物理机以及所述存储设备,获取所述目标内存页的目标内存数据包括:
查询所述多个内存页中未迁出的内存页中是否存在所述目标内存页;
如果存在,从所述第一物理机获取所述目标内存页的目标内存数据;
如果不存在,从所述存储设备中获取所述目标内存页的目标内存数据。
4.根据权利要求3所述的方法,其特征在于,所述目标内存数据从存储设备中的获取步骤包括:
获取为所述第一虚拟机预置的迁移标记对应的标记信息;
如果所述标记信息与预设标识相匹配,生成所述目标内存页的内存读取事件;
基于所述内存读取事件,从所述存储设备中读取所述目标内存页的目标内存数据。
5.根据权利要求4所述的方法,其特征在于,所述内存读取事件的生成步骤具体包括:
确定所述目标内存页在所述第一虚拟机的虚拟地址;
生成所述目标内存页的虚拟地址对应的内存读取事件;
所述基于所述内存读取事件,从所述存储设备中读取所述目标内存页的目标存储数据包括:
运行所述内存读取事件,获取所述目标内存页的虚拟地址在所述存储设备的物理地址;
基于所述目标内存页的虚拟地址在所述存储设备的物理地址,读取所述目标内存页的目标存储数据。
6.根据权利要求1所述的方法,其特征在于,所述确定配置于第一物理机中任一个第一虚拟机的多个内存页之后,还包括:
确定所述多个内存页中存储于所述第一物理机的多个第一内存页以及存储于所述存储设备的多个第二内存页;
所述确定所述多个内存页中满足迁出条件的至少一个迁出内存页包括:
从所述多个第一内存页中确定满足迁出条件的至少一个迁出内存页。
7.根据权利要求6所述的方法,其特征在于,还包括:
从所述多个第二内存页中确定满足迁入条件的至少一个迁入内存页;
为所述至少一个迁入内存页在所述第一物理机中设置物理内存,并将所述至少一个迁入内存页从所述存储设备迁入所述第一物理机的所述物理内存。
8.根据权利要求1或6任一项所述的方法,其特征在于,所述将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存包括:
基于所述至少一个迁出内存页分别在所述第一虚拟机的虚拟地址以及第一映射关系,确定所述至少一个迁出内存页在所述第一物理机分别对应的物理地址;其中,任一个内存页的第一映射关系为所述内存页在所述第一虚拟机的虚拟地址与所述第一物理机的物理地址的对应关系;
根据所述至少一个迁出内存页在所述第一物理机分别对应的物理地址,获取所述至少一个迁出内存页分别对应的内存数据;
将所述至少一个迁出内存页分别对应的内存数据复制到所述存储设备,并获取所述至少一个迁出内存页各自的内存数据在所述存储设备的物理地址;
建立任一个迁出内存页在所述第一虚拟机的虚拟地址与其内存数据在所述存储设备的物理地址之间的第二映射关系,以获得所述至少一个迁出内存页分别对应的第二映射关系;
根据所述至少一个迁出内存页在所述第一物理机分别对应的物理地址,删除所述至少一个迁出内存页在所述第一物理机中的内存数据。
9.根据权利要求7所述的方法,其特征在于,所述为所述至少一个迁入内存页在所述第一物理机中设置物理内存,并将所述至少一个迁入内存页从所述存储设备迁入所述第一物理机包括:
基于所述至少一个迁入内存页分别在所述第一虚拟机的虚拟地址以及第二映射关系,确定所述至少一个迁入内存页在所述存储设备分别对应的物理地址;其中,任一个内存页的第二映射关系为所述内存页在所述第一虚拟机的虚拟地址与所述存储设备的物理地址的对应关系;
根据所述至少一个迁入内存页在所述存储设备分别对应的物理地址,获取所述至少一个迁入内存页分别对应的内存数据;
将所述至少一个迁入内存页各自的内存数据复制到所述第一物理机的物理内存,并获取所述至少一个迁入内存页各自的内存数据在所述第一物理设备的物理地址;
建立任一个迁入内存页在所述第一虚拟机中的虚拟地址与其内存数据在所述第一物理机的物理地址之间的第一映射关系,以获得所述至少一个迁入内存页分别对应的第一映射关系;
根据所述至少一个迁入内存页在所述存储设备分别对应的物理地址,删除所述至少一个迁入内存页在所述存储设备中的内存数据。
10.根据权利要求1或6任一项所述的方法,其特征在于,所述任一个内存页是否满足迁出条件的判断步骤具体包括:
获取任一个内存页的访问频率;
若所述内存页的访问频率高于第一频率阈值,确定所述内存页不满足迁出条件;
若所述内存页的访问频率低于所述第一频率阈值,确定所述内存页满足迁出条件。
11.根据权利要求7所述的方法,其特征在于,所述任一个第二内存页是否满足迁入条件的判断步骤具体包括:
获取任一个第二内存页的访问频率;
若所述第二内存页的访问频率高于第二频率阈值,确定所述第二内存页满足迁入条件;
若所述第二内存页的访问频率低于所述第二频率阈值,确定所述第二内存页不满足迁入条件。
12.根据权利要求1所述的方法,其特征在于,还包括:
响应于虚拟机建立请求,在所述第一物理机中生成第二虚拟机;
基于所述第一物理机未被占用的物理内存,为所述第二虚拟机建立多个内存页。
13.根据权利要求1所述的方法,其特征在于,还包括:
获取所述第一物理机中配置的多个第一虚拟机;
从所述多个第一虚拟机中确定需要进行虚拟机迁移的第三虚拟机;
将所述第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机。
14.根据权利要求13所述的方法,其特征在于,所述从所述多个第一虚拟机中,确定需要虚拟机迁移的第三虚拟机包括:
确定所述第一物理机中多个第一虚拟机分别占用的物理内存;
根据所述多个第一虚拟机分别占用的物理内存,判断所述第一物理机是否满足虚拟机迁移条件;
如果是,确定所述多个第一虚拟机中需要迁移的第三虚拟机;
如果否,返回至所述确定所述第一物理机中多个第一虚拟机分别占用的物理内存的步骤继续执行。
15.根据权利要求13所述的方法,其特征在于,所述将所述第三虚拟机的多个内存页中未迁出的内存页迁移至第二物理机包括:
确定所述第三虚拟机的多个内存页中存储于所述第一物理机的多个第三内存页;
将所述多个第三内存页迁移至所述第二物理机。
16.根据权利要求15所述的方法,其特征在于,所述将所述多个第三内存页迁移至所述第二物理机包括:
根据所述多个第三内存页分别对应的虚拟地址以及第一映射关系,确定所述多个第三内存页在所述第一物理机分别对应的物理地址;其中,任一个内存页的第一映射关系为所述内存页在所述第三虚拟机的虚拟地址与所述第一物理机的物理地址的对应关系;
根据所述多个第三内存页分别在所述第一物理机对应的物理地址,获取所述多个第三内存页分别对应的内存数据;
将所述多个第三内存页分别对应的内存数据复制到所述第二物理设备,并获取所述多个第三内存页分别在所述第二物理设备对应的物理内存;
建立任一个第三内存页在所述第三虚拟机对应虚拟地址以及在所述第二物理机对应物理地址之间的第三映射关系,以获得所述多个第三内存页分别对应的第三映射关系;
根据所述多个第三内存页分别在所述第一物理机对应的物理地址,删除所述第一物理机中所述多个第三内存页分别对应的内存数据。
17.一种虚拟机内存管理装置,其特征在于,包括:
第一确定模块,用于确定配置于第一物理机中任一个第一虚拟机的多个内存页;
第二确定模块,用于确定所述多个内存页中满足迁出条件的至少一个迁出内存页;
内存迁出模块,用于将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存。
18.一种物理机,其特征在于,包括:存储组件以及处理组件;所述存储组件用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理组件调用以执行权利要求1~15任一项所述的虚拟机内存管理方法。
19.一种虚拟机内存管理系统,其特征在于,包括:第一物理机以及存储设备;
所述第一物理机用于:确定配置于第一物理机中任一个第一虚拟机的多个内存页;确定所述多个内存页中满足迁出条件的至少一个迁出内存页;将所述至少一个迁出内存页迁出到存储设备,并释放所述至少一个迁出内存页在所述第一物理机中占用的物理内存;
所述存储设备用于:接收所述第一物理机发送的所述至少一个迁出内存页并存储。
CN202110351746.7A 2021-03-31 2021-03-31 虚拟机内存管理方法、装置及系统、物理机 Pending CN113296886A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110351746.7A CN113296886A (zh) 2021-03-31 2021-03-31 虚拟机内存管理方法、装置及系统、物理机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110351746.7A CN113296886A (zh) 2021-03-31 2021-03-31 虚拟机内存管理方法、装置及系统、物理机

Publications (1)

Publication Number Publication Date
CN113296886A true CN113296886A (zh) 2021-08-24

Family

ID=77319316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110351746.7A Pending CN113296886A (zh) 2021-03-31 2021-03-31 虚拟机内存管理方法、装置及系统、物理机

Country Status (1)

Country Link
CN (1) CN113296886A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230097344A1 (en) * 2021-09-28 2023-03-30 Advanced Micro Devices, Inc. Dynamic repartition of memory physical address mapping
WO2023160358A1 (zh) * 2022-02-24 2023-08-31 阿里巴巴(中国)有限公司 内存扫描方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230097344A1 (en) * 2021-09-28 2023-03-30 Advanced Micro Devices, Inc. Dynamic repartition of memory physical address mapping
US11687251B2 (en) * 2021-09-28 2023-06-27 Advanced Micro Devices, Inc. Dynamic repartition of memory physical address mapping
WO2023160358A1 (zh) * 2022-02-24 2023-08-31 阿里巴巴(中国)有限公司 内存扫描方法及装置

Similar Documents

Publication Publication Date Title
CN108804350B (zh) 一种内存访问方法及计算机系统
US20200320036A1 (en) Data unit cloning in memory-based file systems
JP6542909B2 (ja) ファイル操作方法及び装置
EP4137924A1 (en) Fragment management method and fragment management apparatus
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US8402248B2 (en) Explicitly regioned memory organization in a network element
US7600093B2 (en) Device, method and computer program product for multi-level address translation
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
US20200257620A1 (en) Memory Block Reclamation Method and Apparatus
CN111309648B (zh) 存储装置及其操作方法
US9846626B2 (en) Method and apparatus for computer memory management by monitoring frequency of process access
CN113296886A (zh) 虚拟机内存管理方法、装置及系统、物理机
JP2014529829A (ja) 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム
US20160098302A1 (en) Resilient post-copy live migration using eviction to shared storage in a global memory architecture
US20180024935A1 (en) Data Block Sizing for Channels in a Multi-Channel High-Bandwidth Memory
CN105786725A (zh) 基于异构混合内存的内存管理方法和系统
CN110554911A (zh) 内存访问与分配方法、存储控制器及系统
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
CN116431530A (zh) 一种cxl内存模组、内存的处理方法及计算机系统
CN116302491A (zh) 内存管理方法、装置、计算机设备及存储介质
CN113297105B (zh) 一种转换地址的缓存处理方法及装置
CN114546898A (zh) 一种tlb管理方法、装置、设备及存储介质
WO2020000734A1 (zh) 存储对象的空间管理方法、装置、计算机装置及存储介质
JP2017033375A (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
TA01 Transfer of patent application right

Effective date of registration: 20240313

Address after: # 03-06, Lai Zan Da Building 1, 51 Belarusian Road, Singapore

Applicant after: Alibaba Innovation Co.

Country or region after: Singapore

Address before: Room 01, 45th Floor, AXA Building, 8 Shanton Road, Singapore

Applicant before: Alibaba Singapore Holdings Ltd.

Country or region before: Singapore

TA01 Transfer of patent application right