CN114860439A - 一种内存分配方法、宿主机、分布式系统及程序产品 - Google Patents
一种内存分配方法、宿主机、分布式系统及程序产品 Download PDFInfo
- Publication number
- CN114860439A CN114860439A CN202210471159.6A CN202210471159A CN114860439A CN 114860439 A CN114860439 A CN 114860439A CN 202210471159 A CN202210471159 A CN 202210471159A CN 114860439 A CN114860439 A CN 114860439A
- Authority
- CN
- China
- Prior art keywords
- physical memory
- memory
- area
- client
- host
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供一种内存分配方法、宿主机、分布式系统及程序产品,将客户机所分配到的虚拟内存划分为多个区域,每个区域分别存储不同属性的数据。当宿主机监测到客户机对虚拟内存中目标数据的调用时,基于目标数据的属性和预设的物理内存分配策略,为目标数据所述区域分配物理内存。其中,物理内存分配策略与数据的属性匹配,且用于设置物理内存的连续性、可回收性以及执行权限中的一种或多种。由于虚拟内存被划分为存储不同属性的数据的多个区域,如此,宿主机在分配物理内存时,可以根据目标数据的属性,从物理内存连续性、可回收性以及执行权限的角度上,为目标数据所属区域相应地分配合适的物理内存,优化了物理内存的分配与管理策略。
Description
技术领域
本说明书实施例涉及虚拟机技术领域,尤其涉及一种内存分配方法、宿主机、分布式系统及程序产品。
背景技术
云计算已经成为现代信息技术产业的核心技术框架,未来越来越多的信息技术应用会部署在云上。云计算的核心技术就是虚拟化(Virtualization)。虚拟化是一种资源管理技术,可以将计算机的中央处理单元(Central Processing Unit,CPU)、内存、磁盘空间、网路适配器等实体资源予以抽象、转换,并分割、组合为一个或多个电脑组态环境。利用虚拟化技术,可以在计算机中通过软件模拟出具有完整硬件系统功能的虚拟机(VirtualMachine)。虚拟机也称为客户机(Guest Machine),相应地,运行有一个或多个虚拟机的计算机称为宿主机(Host Machine)。客户机在运行过程中,宿主机需要时刻对实体资源进行调度规划。其中,宿主机对物理内存的分配与管理对客户机的运行性能有重要的影响。宿主机如何优化物理内存的分配与管理策略,是本领域亟需解决的技术问题。
发明内容
本说明书实施例提供了一种内存分配方法、宿主机、分布式系统及程序产品,能够让宿主机优化物理内存的分配与管理策略。
根据本说明书实施例的第一方面,提供一种内存分配方法,应用于宿主机,所述宿主机运行有客户机,所述客户机分配到的虚拟内存划分为多个区域,各个区域分别存储不同属性的数据,所述方法包括:
监测所述客户机对所述虚拟内存中的目标数据的调用;
基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存;其中,所述物理内存分配策略与数据的属性匹配,所述物理内存分配策略用于设置物理内存的连续性、可回收性和/或执行权限。
在一些例子中,所述基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存,包括:
在所述多个区域包括存储内核程序的目标数据的第一区域时,为所述第一区域分配连续的物理内存;和/或
在所述多个区域包括存储高访问频率的目标数据的第二区域时,对为所述第二区域分配的物理内存进行锁定,以使所述第二区域对应的物理内存不可回收;其中,所述高访问频率的目标数据的访问频率大于预设的访问频率阈值;和/或
在所述多个区域包括存储仅读写的目标数据的第三区域时,将为所述第三区域分配的物理内存的执行权限设置为不可执行。
在一些例子中,所述宿主机的物理内存包括第一物理内存和第二物理内存,所述第一物理内存的读速度比所述第二物理内存的读速度快;所述基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存,包括:
在所述多个区域包括存储读频率高于写频率的目标数据的第四区域时,从所述第一物理内存中为所述第四区域分配物理内存。
在一些例子中,所述虚拟内存从低位至高位依次划分为所述第一区域、所述第二区域、所述第四区域以及所述第三区域。
在一些例子中,所述宿主机采用NUMA架构,所述NUMA架构包括至少两个NUMA节点,每个所述NUMA节点包括均物理内存;所述客户机运行在至少两个所述NUMA节点上;所述多个区域中的至少两个目标区域用于存储属性相同的数据,不同目标区域分配至运行有所述客户机的不同NUMA节点的物理内存中。
在一些例子中,所述多个区域由所述宿主机和/或所述客户机划分。
在一些例子中,所述第一区域由所述宿主机划分;
所述第二区域和/或所述第三区域由所述客户机划分之后,由所述客户机将区域信息发送至所述宿主机,所述区域信息包括划分出的各区域的位置信息与大小信息。
根据本说明书实施例的第二方面,提供一种电子设备,运行有客户机,所述宿主机包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器调用所述可执行指令时实现第一方面任一所述方法的操作。
根据本说明书实施例的第三方面,提供一种分布式系统,所述分布式系统包括至少一个第二方面所述的电子设备。
根据本说明书实施例的第四方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述方法的步骤。
根据本说明书实施例的第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时执行第一方面任一所述的方法。
本说明书实施例的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例提供了一种内存分配方法、宿主机、分布式系统及程序产品,将客户机所分配到的虚拟内存划分为多个区域,每个区域分别存储不同属性的数据。当宿主机监测到客户机对虚拟内存中目标数据的调用时,基于目标数据的属性和预设的物理内存分配策略,为目标数据所述区域分配物理内存。其中,物理内存分配策略与数据的属性匹配,且用于设置物理内存的连续性、可回收性以及执行权限中的一种或多种。由于虚拟内存被划分为存储不同属性的数据的多个区域,如此,宿主机在分配物理内存时,可以根据目标数据的属性,从物理内存连续性、可回收性以及执行权限的角度上,为目标数据所属区域相应地分配合适的物理内存,从而优化了物理内存的分配与管理策略。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
附图说明
此处的附图被并入说明书中并构成本说明书实施例的一部分,示出了符合本说明书实施例的实施例,并与说明书一起用于解释本说明书实施例的原理。
图1是本说明书根据一实施例示出的宿主机的示意图。
图2是本说明书根据一实施例示出的一种内存分配方法的流程图。
图3是本说明书根据一实施例示出的虚拟内存的示意图。
图4是本说明书根据一实施例示出的NUMA架构的示意图。
图5是本说明书根据一实施例示出的一种电子设备的硬件结构图。
图6是本说明书根据一实施例示出的一种分布式系统的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书实施例的一些方面相一致的装置和方法的例子。
在本说明书实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书实施例。在本说明书实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
云计算已经成为现代信息技术产业的核心技术框架,未来越来越多的信息技术应用会部署在云上。云计算的核心技术就是虚拟化。虚拟化(Virtualization)是一种资源管理技术,可以将计算机的各种如处理器(CPU)、内存、磁盘空间、网路适配器等实体资源予以抽象、转换,并分割、组合为一个或多个电脑组态环境。利用虚拟化技术,可以在计算机中通过软件模拟出具有完整硬件系统功能的虚拟机(Virtual Machine)。虚拟机也称为客户机(Guest Machine),相应地,运行有一个或多个虚拟机的计算机称为宿主机(HostMachine)。
宿主机可以为客户机分配内存,所分配的内存可以称为虚拟内存,以存放客户机运行时所需要的数据以及所产生的数据。发明人发现,虚拟内存存储的数据有不同的属性,包括但不限于读写频率、重要程度、安全程度等属性。然而,宿主机在为存储有不同属性数据的虚拟内存分配物理内存时,并不会考虑到不同的数据有不同的属性,而是无差别地为虚拟内存分配可用的物理内存。发明人发现,在客户机运行过程中,宿主机对物理内存的分配与管理对客户机的运行性能有重要的影响。如何优化宿主机对物理内存的分配与管理策略,是本领域亟需解决的技术问题。
为此,本说明书实施例提供了一种内存分配方法,应用于宿主机,如图1所示,宿主机100上运行有客户机110。通过虚拟化软件可以在宿主机100中建立与运行一个至多个客户机110(图中仅示出一个客户机以作示例),作为例子,虚拟化软件可以包括QEMU(QuickEmulator)、Virtual PC等。而QEMU可以与基于内核的虚拟机(Kernel-based VirtualMachine,KVM)配合完成虚拟化工作。宿主机100还包括物理CPU 120以及物理内存130。在客户机110的初始化阶段,宿主机100可以为客户机110分配实体资源,如将客户机110的虚拟CPU111映射至物理CPU 120上运行,为客户机110分配虚拟内存112等等。其中,宿主机100为客户机110分配虚拟内存112时,可以将物理内存130中的部分地址位划分给客户机110作为虚拟内存112;也可以通过内存超配技术来实现物理内存资源的按需分配。所谓内存超配技术,即宿主机上运行的所有客户机的虚拟内存总和大于宿主机的物理内存。利用内存超配技术,宿主机可以根据客户机对内存的需求,为客户机分配和回收物理内存,以实现物理内存的按需分配。在本说明书实施例中,客户机所分配到的虚拟内存可以划分为多个区域,其中,各个区域可以分别存储不同属性的数据。不同属性的数据在读写频率、重要程度和安全程度上有不同的特点。所述方法包括如图2所示的步骤:
步骤210:监测所述客户机对所述虚拟内存中的目标数据的调用;
步骤220:基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存;
其中,所述物理内存分配策略与数据的属性匹配,所述物理内存分配策略用于设置物理内存的连续性、可回收性和/或执行权限。
在客户机的创建过程中,可以由宿主机对虚拟内存进行区域划分;也可以在客户机创建完成后,由宿主机和/或客户机对虚拟内存进行区域划分。不同区域可以分别存储不同属性的数据,数据的属性可以包括但不限于读写频率、重要程度和安全程度。在客户机的运行过程中,当客户机调用虚拟内存中的任意目标数据时,宿主机可以监测到客户机对目标数据的调用行为。随后,宿主机可以基于目标数据的属性与物理内存分配策略,从物理内存连续性、可回收性以及执行权限的角度上,为目标数据所属区域相应地分配合适的物理内存,从而优化了物理内存的分配与管理策略。
数据的属性可以包括但不限于读写频率、重要程度和安全程度。在一些实施例中,数据可以包括以下一种或多种:内核程序的数据、高访问频率的数据、仅读写的数据、和读频率高于写频率的数据。在虚拟内存中,划分出的用于存储内核程序的目标数据的区域可以称为第一区域;划分出的用于存储高访问频率的目标数据的区域可以称为第二区域;划分出的用于存储仅读写的目标数据的区域可以称为第三区域;划分出的用于存储读频率高于写频率的目标数据的区域可以称为第四区域。
由于从宿主机中虚拟化的客户机具有完整硬件系统功能,同样具有操作系统,因此客户机可以运行内核程序。如此,内核程序的数据可以是客户机的内核程序,且内核程序的数据的重要程度较高。相应地,第一区域也可以称为内核区。为了提高内核程序运行效率,在一些实施例中,若虚拟内存的多个区域中包括第一区域,宿主机可以为第一区域分配连续的物理内存。作为例子,连续的物理内存可以是巨页(huge page)。通常地,普通的页(page)的大小通常是4k,而巨页的大小则可以高达1G。为内核区分配空间连续的巨页,能够有效减少内核程序运行时的缺页次数,减少页表的条目,节省了页表所占用的内存空间,同时还减少了内存地址转换次数,从而提高了内核程序的运行效率。
高访问频率的数据可以是客户机访问频率大于预设的访问频率阈值的数据,如页表。客户机每运行的一个进程,都可以生成一个页表,用于存放逻辑页与物理页帧的对应关系。在进程运行的过程中,客户机需要经常访问相应的页表,包括对页表执行读取操作和写入操作,页表是高访问频率的数据。相应地,第二区域也可以称为页表区,页表区中可以存储客户机运行的多个进程对应的页表。由于客户机在每个进程运行时都会对相应的页表进行访问,因此客户机会频繁对页表区进行访问操作。
如上所述,宿主机对物理内存进行按需分配时,可能会对物理内存不断进行分配和回收操作。由于客户机对页表区的访问频率高,若宿主机每次在客户机访问完页表区后,便回收页表区对应的物理内存,则会导致客户机下一次访问页表区中的页表时都会产生访存缺页。在发生访存缺页后,宿主机再重新为客户机需要访问的页表分配物理内存。显然,客户及每次访问页表时,都需要宿主机重新分配物理内存,会大大拖慢页表的访问速度,影响进程的运行性能。为此,在一些实施例中,若虚拟内存的多个区域中包括第二区域,宿主机可以对为第二区域分配的物理内存进行锁定,以使第二区域对应的物理内存不可回收。如此,可以避免宿主机频率重新分配物理内存,加快进程的运行效率。
仅读写的数据可以是仅用于读写而无法被执行的数据,例如客户机的用户进程在运行过程中产生的用户数据,这些数据往往仅供用户进程读写。相应地,第三区域也可以称为用户数据区。用户数据区用于存放仅读写的用户数据,而不会存放可执行的指令代码。但在一些场景中,一些恶意的进程可能会将一些恶意代码包装成用户数据写入用户数据区。若这些恶意代码被执行,会对进程乃至整个操作系统带来危害。为此,在一些实施例中,若虚拟内存的多个区域中包括第三区域,宿主机可以将为第三区域分配的物理内存的执行权限设置为不可执行。如此,在设定执行权限后,就算用户数据区被写入了恶意代码,客户机也无法执行用户数据区中的恶意代码,恶意代码在用户数据区中以“数据”的形式存储,无法被执行,从而加强了安全防护。
数据的访问包括读取与写入,对于虚拟内存中的部分数据,如用户进程的代码(以下简称用户代码),经常被客户机调用执行而甚少被修改或写入。因此,在一些实施例中,读频率高于写频率的数据可以包括用户代码,相应地,第四区域也可以称为用户代码区。
在一些实施例中,宿主机的物理内存包括异构内存,异构内存包括第一物理内存和第二物理内存。其中第一物理内存的读速度比第二物理内存的读速度快。第一物理内存也可以称为高速内存,第二物理内存也可以称为低速内存。在一些实施例中,低速内存的读速度与写速度可以相同,高速内存的读速度高于低速内存的读速度,高速内存的写速度低于低速内存的写速度。在一些实施例中,高速内存具有性能高但容量小成本高的特点,例如可以采用DRAM(Dynamic Random Access Memory,动态随机存取存储器)、DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器)等;低速内存具有性能低但容量大成本低等特点,例如可以采用持久内存等。
针对用户代码读频率高于写频率的特点,在一些实施例中,若虚拟内存的多个区域中包括第四区域,宿主机可以从第一物理内存,也即从高速内存中为第四区域分配物理内存。如此,诸如用户代码等读频率高于写频率的数据存储在读速度较快的物理内存中,可以加快客户机对这些数据的读取速度,从而提高进程运行效率,优化进程运行性能。
虚拟内存可以包括但不限于上述实施例列举的内核区、页表区、用户数据区、用户代码区,还可以包括其他用于存放其他属性数据的区域。在一些实施例中,内核区对应的虚拟内存空间也可以称为内核空间;页表区、用户数据区、用户代码区对应的虚拟内存空间之和可以统称为用户空间。内核区存储的客户机内核程序的大小一般是确定的,每次客户机运行时,内核程序所需内存大小一般不会有太大的变化。因此在一些实施例中,如图3所示,内核区可以划分至虚拟内存的低位地址中。相比之下,用户空间用于存放客户机运行的客户进程,用户空间中页表区、用户数据区、用户代码区的大小与所运行的客户进程的数量、各个客户进程所产生的中间数据量相关。因此用户空间可以划分至虚拟内存中比内核区高位的内存地址中,以便调整各个区域内存空间的大小。作为例子,如图3所示,虚拟内存300从低位至高位可以依次划分为内核区310(第一区域)、页表区320(第二区域)、用户代码区330(第四区域)以及用户数据区340(第三区域)。同时,虚拟内存300还可以包括用于存储其他属性数据的其他区域350。在一些实施例中,虚拟内存所划分的多个区域中的前后两个区域可以是非连续分布的,即前后两个区域之间可以有空白的虚拟内存,如图中所示的空白区域360(图3中共有6个空白区域360)。多个区域中的前后两个区域也可以是连续分布的,即两个区域之间没有空白区域。
如上所述,客户机的虚拟内存可以由宿主机进行划分。在一些实施例中,可以在客户机的创建过程中,由宿主机对虚拟内存进行区域划分。在另一些实施例中,可以在客户机创建完成后,由宿主机对虚拟内存进行区域划分。
此外,客户机的虚拟内存还可以由客户机进行划分。例如,可以在客户机创建完成后,由客户机对虚拟内存进行区域划分。
虚拟内存还可以由宿主机和客户机共同进行划分。例如,虚拟内存中不同的区域由宿主机或客户机进行划分。如上所述,由于内核区所存储的客户机内核程序所需的内存大小一般是确定的,因此在客户机创建过程中,可以先由宿主机在虚拟内存中划分出内核区,包括确定内核区在虚拟内存中的位置以及大小。随后,在客户机创建完成后,客户机可以根据所运行的进程的数量,预估用户空间中各个区域的大小,并在虚拟内存中划分出页表区、用户数据区以及用户代码区中的一种或多种。在完成划分后,客户机可以将区域信息发送至宿主机,以使宿主机为各个区域分配相应的物理内存。其中,区域信息可以包括各区域的位置信息与大小信息。
在一些实施例中,客户机还可以根据实际情况对划分的多个区域的大小和/或位置进行调整,并将各区域调整后的区域信息更新至宿主机。在一些实施例中,客户机可以通过超级调用(hypercall)等方式将区域信息发送至宿主机。
在一些实施例中,宿主机可以包括能同时并行处理任务的多核处理器。多核处理器是指在一个CPU电路板中集成有两个以上的完整的计算引擎(内核,core),即集成两个以上的物理CPU。在本说明书实施例中,对于包括多核处理器的电子设备,物理CPU是指多核处理器中的内核。对于包括多个物理CPU的宿主机,可以采用非一致内存访问(Non UniformMemory Access Architecture,NUMA)架构。NUMA架构包括至少两个NUMA节点(NUMAnode),如图4所示,以两个NUMA节点作为示例,宿主机可以包括NUMA节点410和NUMA节点420。在NUMA架构下,宿主机的多个物理CPU以及多个内存从属于不同的NUMA节点。每个NUMA节点均包括至少一个物理CPU与至少一个物理内存,图4以NUMA节点包括一个物理CPU和一个物理内存为例,NUMA节点410包括物理CPU 411和物理内存412。NUMA节点420包括物理CPU 421和物理内存422。在NUMA节点内部,物理CPU与物理内存之间使用集成内存控制器总线(Integrated Memory Controller Bus,IMC Bus)进行通信,而NUMA节点之间则使用快速通道互联(Quick Path Interconnect,QPI)进行通信。由于QPI的延迟高于IMC Bus的延迟,因此宿主机上物理CPU对内存的访问就有了远近之别(remote/local)。物理CPU访问本节点的物理内存速度较快,称为本地访存;物理CPU访问其他NUMA节点的物理内存速度较慢,称为远端访存。
在一些实施例中,客户机可以运行在NUMA节点410和NUMA节点420的任一节点上。也即客户机的虚拟CPU可以映射在物理CPU 411与物理CPU421中的任一上运行。在宿主机为客户机的虚拟内存分配物理内存时,可以将与虚拟CPU所映射至的物理CPU属于同一NUMA节点的物理内存分配给虚拟内存,以提高物理CPU的访存速度。
在一些实施例中,客户机可以包括多个虚拟CPU,客户机可以运行在至少两个NUMA节点上。作为例子,客户机可以运行在如图4所示的NUMA节点410和NUMA节点420上。例如,客户机包括的多个虚拟CPU可以分别映射到物理CPU 411和物理CPU 421上运行。客户机的虚拟内存可以映射到物理内存412和物理内存422中。如此,虚拟内存划分的多个区域中,有至少两个目标区域用于存储属性相同的数据,目标区域的数量与运行有客户机的NUMA节点的数量一致,不同目标区域分配至运行有客户机的不同NUMA节点的物理内存中。目标区域可以是内核区、页表区、用户代码区、用户数据区中的一种或多种。
如在上所述例子中,客户机运行在NUMA节点410与NUMA节点420,目标区域可以包括内核区、页表区、用户代码区、用户数据区。虚拟内存的可以分别划分出2个内核区、2个页表区、2个用户代码区以及2个用户数据区。同一类的两个区域可以分别分配有不同节点上的物理内存。例如,宿主机可以将物理内存412中的部分地址按照上述实施例提供的方法分配给两个内核区中的其中一个,将物理内存422中的部分地址按照上述实施例提供的方法分配给两个内核区中的另外一个。其他区域也是按照类似的过程进行物理内存的分配,在此不做赘述。
本说明书实施例提供的一种内存分配方法,将客户机所分配到的虚拟内存划分为多个区域,每个区域分别存储不同属性的数据,而不同属性的数据对应有不同的特点。当宿主机监测到客户机对虚拟内存中目标数据的调用时,基于目标数据的属性和预设的物理内存分配策略,为目标数据所述区域分配物理内存。其中,物理内存分配策略与数据的属性匹配,且用于设置物理内存的连续性、可回收性以及执行权限中的一种或多种。虚拟内存按照数据的特点被划分为多个存储不同属性的数据的区域,在对虚拟内存做了清新的划分后,宿主机在分配物理内存时,可以根据目标数据的属性,从物理内存连续性、可回收性以及执行权限的角度上,为目标数据所属区域相应地分配合适的物理内存,从而优化了宿主机对物理内存的分配与管理策略。
基于上述任意实施例所述的一种内存分配方法,本说明书实施例还提供了如图5所示的一种电子设备的结构示意图。该电子设备上运行有客户机。如图5,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述任意实施例所述的一种内存分配方法。
在一些实施例中,上述电子设备还可以是分布式系统中的电子设备。图6示出了一种分布式系统的示意图。分布式系统600可以包括多个电子设备,如图中示出的电子设备610-640。分布式系统600可以用于对大数据进行维护和管理,分布式系统600中的每个电子设备可以分别存储一部分数据,并对所存储的数据进行维护。在本实施例中,电子设备610-640中的至少部分可以运行有客户机,并执行上述任一实施例提供的一种内存分配方法。
基于上述任意实施例所述的一种内存分配方法,本说明书实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可用于执行上述任意实施例所述的一种内存分配方法。
基于上述任意实施例所述的一种内存分配方法,本说明书实施例还提供了一种计算机存储介质,存储介质存储有计算机程序,计算机程序被处理器执行时可用于执行上述任意实施例所述的一种内存分配方法。
上述对本说明书实施例特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书实施例的其它实施方案。本说明书实施例旨在涵盖本说明书实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书实施例的一般性原理并包括本说明书实施例未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书实施例的真正范围和精神由下面的权利要求指出。
Claims (11)
1.一种内存分配方法,应用于宿主机,所述宿主机运行有客户机,所述客户机分配到的虚拟内存划分为多个区域,各个区域存储不同属性的数据,所述方法包括:
监测所述客户机对所述虚拟内存中的目标数据的调用;
基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存;其中,所述物理内存分配策略与数据的属性匹配,所述物理内存分配策略用于设置物理内存的连续性、可回收性和/或执行权限。
2.根据权利要求1所述的方法,所述基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存,包括:
在所述多个区域包括存储内核程序的目标数据的第一区域时,为所述第一区域分配连续的物理内存;和/或
在所述多个区域包括存储高访问频率的目标数据的第二区域时,对为所述第二区域分配的物理内存进行锁定,以使所述第二区域对应的物理内存不可回收;其中,所述高访问频率的目标数据的访问频率大于预设的访问频率阈值;和/或
在所述多个区域包括存储仅读写的目标数据的第三区域时,将为所述第三区域分配的物理内存的执行权限设置为不可执行。
3.根据权利要求2所述的方法,所述宿主机的物理内存包括第一物理内存和第二物理内存,所述第一物理内存的读速度比所述第二物理内存的读速度快;所述基于所述目标数据的属性和预设的物理内存分配策略,为所述目标数据所属区域分配物理内存,包括:
在所述多个区域包括存储读频率高于写频率的目标数据的第四区域时,从所述第一物理内存中为所述第四区域分配物理内存。
4.根据权利要求3所述的方法,所述虚拟内存从低位至高位依次划分为所述第一区域、所述第二区域、所述第四区域以及所述第三区域。
5.根据权利要求1所述的方法,所述宿主机采用NUMA架构,所述NUMA架构包括至少两个NUMA节点,每个所述NUMA节点包括均物理内存;所述客户机运行在至少两个所述NUMA节点上;所述多个区域中的至少两个目标区域用于存储属性相同的数据,不同目标区域分配至运行有所述客户机的不同NUMA节点的物理内存中。
6.根据权利要求2所述的方法,所述多个区域由所述宿主机和/或所述客户机划分。
7.根据权利要求6所述的方法,所述第一区域由所述宿主机划分;
所述第二区域和/或所述第三区域由所述客户机划分之后,由所述客户机将区域信息发送至所述宿主机,所述区域信息包括划分出的各区域的位置信息与大小信息。
8.一种电子设备,运行有客户机,所述宿主机包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器调用所述可执行指令时实现权利要求1-7任一所述方法的操作。
9.一种分布式系统,所述分布式系统包括至少一个如权利要求8所述的电子设备。
10.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一所述方法的步骤。
11.一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时执行权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210471159.6A CN114860439A (zh) | 2022-04-28 | 2022-04-28 | 一种内存分配方法、宿主机、分布式系统及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210471159.6A CN114860439A (zh) | 2022-04-28 | 2022-04-28 | 一种内存分配方法、宿主机、分布式系统及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860439A true CN114860439A (zh) | 2022-08-05 |
Family
ID=82635059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210471159.6A Pending CN114860439A (zh) | 2022-04-28 | 2022-04-28 | 一种内存分配方法、宿主机、分布式系统及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860439A (zh) |
-
2022
- 2022-04-28 CN CN202210471159.6A patent/CN114860439A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101137172B1 (ko) | 가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램 | |
US10761876B2 (en) | Faster access of virtual machine memory backed by a host computing device's virtual memory | |
US8082400B1 (en) | Partitioning a memory pool among plural computing nodes | |
US9824011B2 (en) | Method and apparatus for processing data and computer system | |
US9529611B2 (en) | Cooperative memory resource management via application-level balloon | |
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
US9703488B2 (en) | Autonomous dynamic optimization of platform resources | |
CA3003789A1 (en) | Virtual non-uniform memory architecture for virtual machines | |
US10691481B2 (en) | System and method for detection of underprovisioning of memory in virtual machines | |
CN112799977B (zh) | 计算机的缓存分区和缓存访问实时性保护方法及装置 | |
Min et al. | Vmmb: Virtual machine memory balancing for unmodified operating systems | |
CN115904212A (zh) | 数据处理的方法、装置、处理器和混合内存系统 | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
EP0747828A2 (en) | System and method for providing efficient shared memory in a virtual memory system | |
US20140289739A1 (en) | Allocating and sharing a data object among program instances | |
EP0747827A1 (en) | System and method for providing shared memory using shared virtual segment identification in a computer system | |
US20210132979A1 (en) | Goal-directed software-defined numa working set management | |
US20200201691A1 (en) | Enhanced message control banks | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
JP2017033375A (ja) | 並列計算システム、マイグレーション方法、及びマイグレーションプログラム | |
CN114860439A (zh) | 一种内存分配方法、宿主机、分布式系统及程序产品 | |
WO2015161804A1 (zh) | 一种Cache分区的方法及装置 | |
US20130262790A1 (en) | Method, computer program and device for managing memory access in a multiprocessor architecture of numa type | |
RU2780973C2 (ru) | Ответ с идентификатором функции процессора для виртуализации | |
US11928510B2 (en) | Increasing page sharing on non-uniform memory access (NUMA)-enabled host systems |
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 |