CN117093326A - 虚拟机运行控制方法、装置、计算机设备和存储介质 - Google Patents

虚拟机运行控制方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117093326A
CN117093326A CN202311085440.7A CN202311085440A CN117093326A CN 117093326 A CN117093326 A CN 117093326A CN 202311085440 A CN202311085440 A CN 202311085440A CN 117093326 A CN117093326 A CN 117093326A
Authority
CN
China
Prior art keywords
target
virtual
virtual machine
numa
configuration information
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
CN202311085440.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.)
Beijing Volcano Engine Technology Co Ltd
Original Assignee
Beijing Volcano Engine Technology Co 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 Beijing Volcano Engine Technology Co Ltd filed Critical Beijing Volcano Engine Technology Co Ltd
Priority to CN202311085440.7A priority Critical patent/CN117093326A/zh
Publication of CN117093326A publication Critical patent/CN117093326A/zh
Pending legal-status Critical Current

Links

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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • 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
    • 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/45587Isolation or security of 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/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种虚拟机运行控制方法、装置、计算机设备和存储介质,其中,该方法包括:获取针对虚拟机的非统一内存访问NUMA节点配置信息;所述NUMA节点配置信息为根据运行所述虚拟机的主机对应的主机NUMA拓扑关系确定;所述主机NUMA拓扑关系用于指示所述主机中的物理中央处理器与物理内存空间之间的距离;利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,并将所述目标配置信息配置为所述虚拟机的子操作系统的目标启动参数;利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点。本公开实施例能够在不借助ACPI的情况下,实现将主机NUMA拓扑关系准确传递到虚拟机。

Description

虚拟机运行控制方法、装置、计算机设备和存储介质
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种虚拟机运行控制方法、装置、计算机设备和存储介质。
背景技术
为了提高在虚拟机的子操作系统(Guest OS)中运行的业务软件的性能,通常可以对Guest OS中的NUMA框架进行优化,优化效果会随着虚拟机规格的增大而明显提升。为了实现对NUMA框架的优化,常常采用的方式是将运行虚拟机的主机的NUMA拓扑结构传递给虚拟机,以使虚拟机能够基于主机的NUMA拓扑结构进行自身NUMA框架的优化。
常规的优化方式,通常是利用配置高级配置电源接口(Advanced ConfigurationPower Interface,ACPI)表格的方式实现对主机NUMA拓扑结构的传递。例如配置静态资源关联表(StaticResource Affinity Table,SRAT)和系统位置信息表(System LocalityInformation Table,SLIT)。但是,由于ACPI是一个复杂的子系统,代码数量庞大且信息庞杂,利用基于ACPI配置的SRAT和SLIT进行拓扑关系传递的方式,不仅会增加传递的难度,还会增加代码被侵入的可能,安全风险较大。
发明内容
本公开实施例至少提供一种虚拟机运行控制方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种虚拟机运行控制方法,包括:
获取针对虚拟机的非统一内存访问NUMA节点配置信息;所述NUMA节点配置信息为根据运行所述虚拟机的主机对应的主机NUMA拓扑关系确定;所述主机NUMA拓扑关系用于指示所述主机中的物理中央处理器与物理内存空间之间的距离;
利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,并将所述目标配置信息配置为所述虚拟机的子操作系统的目标启动参数;
利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点。
在一种可能的实施方式中,利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点,包括:
利用所述子操作系统中的节点信息转换进程,根据所述目标配置信息携带的虚拟NUMA节点标识、每个所述虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建所述虚拟机对应的各个目标虚拟NUMA节点。
在一种可能的实施方式中,根据所述目标配置信息携带的虚拟NUMA节点标识、每个所述虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建所述虚拟机对应的各个目标虚拟NUMA节点,包括:
将每个所述虚拟NUMA节点标识对应的目标内存空间,加入到所述虚拟机对应的虚拟内存管理器进行管理;以及
将每个所述虚拟NUMA节点标识对应的虚拟中央处理器列表中的各个虚拟中央处理器,与所述虚拟NUMA节点标识进行绑定,得到与每个所述虚拟NUMA节点标识相对应的目标虚拟NUMA节点。
在一种可能的实施方式中,获取针对虚拟机的非统一内存访问NUMA节点配置信息,包括:
在启动所述虚拟机监控器之前,确定为所述虚拟机监控器开发的拓扑关系配置接口,并根据所述主机NUMA拓扑关系,利用所述拓扑关系配置接口配置所述NUMA节点配置信息;
响应于启动所述虚拟机监控器,获取配置的所述NUMA节点配置信息。
在一种可能的实施方式中,利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,包括:
利用所述虚拟机监控器,确定所述NUMA节点配置信息指示的目标内存空间和目标主机NUMA节点;所述目标主机NUMA节点为所述主机NUMA拓扑关系包括的多个主机NUMA节点中一个节点;
从所述虚拟机对应的总内存空间中,确定与所述目标内存空间相匹配的物理地址范围;
根据所述物理地址范围、除所述目标内存空间和所述目标主机NUMA节点以外的所述NUMA节点配置信息,确定所述目标配置信息。
在一种可能的实施方式中,从所述虚拟机对应的总内存空间中,确定与所述目标内存空间相匹配的物理地址范围,包括:
确定为所述虚拟机中的各个虚拟设备分配的设备内存空间;
根据所述总内存空间和所述设备内存空间对应的设备地址范围,确定与所述目标内存空间相匹配的物理地址范围。
在一种可能的实施方式中,在确定与所述目标内存空间相匹配的物理地址范围之后,还包括:
将所述物理地址范围对应的目标内存空间,与所述目标主机NUMA节点进行绑定,以及,将所述NUMA节点配置信息指示的各个虚拟中央处理器与所述目标主机NUMA节点中的各个物理中央处理器进行两两绑定。
第二方面,本公开实施例还提供一种虚拟机运行控制装置,包括:
获取模块,用于获取针对虚拟机的非统一内存访问NUMA节点配置信息;所述NUMA节点配置信息为根据运行所述虚拟机的主机对应的主机NUMA拓扑关系确定;所述主机NUMA拓扑关系用于指示所述主机中的物理中央处理器与物理内存空间之间的距离;
配置模块,用于利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,并将所述目标配置信息配置为所述虚拟机的子操作系统的目标启动参数;
创建模块,用于利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述虚拟机运行控制装置、计算机设备、及计算机可读存储介质的效果描述参见上述虚拟机运行控制方法的说明,这里不再赘述。
本公开实施例提供的虚拟机运行控制方法、装置、计算机设备和存储介质,在获取到针对NUMA节点配置信息之后,通过虚拟机监控器VMM将节点配置信息转换为具有目标格式的目标配置信息,可以实现对NUMA节点配置信息的转换,得到能够表征需要传递的主机NUMA拓扑关系的目标配置信息。通过将目标配置信息配置在子操作系统的目标启动参数的方式,可以在启动子操作系统的时候,利用目标启动参数中的目标配置信息,实现在虚拟机中创建与传递的主机NUMA拓扑关系相匹配的各个目标虚拟NUMA节点,完成主机NUMA拓扑关系到虚拟机的传递和转换。上述整个主机NUMA拓扑关系的传递和转换过程无需使用基于ACPI配置ACPI表格,达到了轻量化的目的,降低了传递难度,且由于无需使用大规模的与ACPI相关的代码,所以可以有效降低代码被侵入的风险,提高虚拟机的运行安全性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种虚拟机运行控制方法的流程图;
图2示出了本公开实施例所提供的一种利用节点信息转换进程创建各个目标虚拟NUMA节点的过程示意图;
图3a示出了一种现有技术中的拓扑关系传递方法的具体实施过程示意图;
图3b示出了本公开实施例所提供的一种虚拟机运行控制方法的具体实施过程示意图;
图4示出了本公开实施例所提供的一种虚拟机运行控制装置的示意图;
图5示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
经研究发现,为了解决平台即服务(Platform as a Service,PaaS)的安全问题,通常采用基于虚拟化技术的安全容器方案。安全容器可以利用底层的硬件辅助虚拟化技术实现对各个容器之间的隔离,从而保证各个容器中的虚拟机能够独立运行。在安全容器中通常设置有VMM和Guest OS,当存在将主机NUMA拓扑关系传递至虚拟机的需求时,VMM可以通过ACPI配置SRAT和SLIT表格的方式,实现将主机NUMA拓扑关系传递至Guest OS。GuestOS可以利用部署的ACPI子系统,对SRAT和SLIT表格进行解析,以获取传递的主机NUMA拓扑关系,进而利用该主机NUMA拓扑关系,创建自身的NUMA拓扑关系。但是,VMM可以包括多种类型,例如虚拟操作系统模拟器qemu、云管理程序cloud-hypervisor、虚拟化服务firecracker,不是所有类型的VMM均支持利用ACPI配置的表格进行拓扑关系传递,因此该方式存在通用性差的问题。并且,若要使用基于ACPI配置的表格进行拓扑关系传递,需要在VMM和Guest OS中均部署ACPI子系统,但由于ACPI是一个复杂的子系统,代码数量庞大且信息庞杂,所以基于ACPI配置的表格进行拓扑关系传递的方式,不仅会增加传递难度和代码复杂度,还会加大代码被侵入的风险,影响了虚拟机的运行安全性。
基于上述研究,本公开提供了一种虚拟机运行控制方法、装置、计算机设备和存储介质,在获取到针对NUMA节点配置信息之后,通过VMM将节点配置信息转换为具有目标格式的目标配置信息,可以实现对NUMA节点配置信息的转换,得到能够表征需要传递的主机NUMA拓扑关系的目标配置信息。通过将目标配置信息配置在子操作系统的目标启动参数的方式,可以在启动子操作系统的时候,利用目标启动参数中的目标配置信息,实现在虚拟机中创建与传递的主机NUMA拓扑关系相匹配的各个目标虚拟NUMA节点,完成主机NUMA拓扑关系到虚拟机的传递和转换。上述整个主机NUMA拓扑关系的传递和转换过程无需使用基于ACPI配置ACPI表格,达到了轻量化的目的,降低了传递难度,且由于无需使用大规模的与ACPI相关的代码,所以可以有效降低代码被侵入的风险,提高虚拟机的运行安全性。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
需要说明的是,本公开实施例中所提到的特定名词包括:
NUMA:Non Uniform Memory Access,非统一内存访问;NUMA拓扑关系用于表征中央处理器与物理内存空间之间的距离。
Cmdline:一种内核启动命令行参数;
lscpu指令:Linux中用于查询有关CPU架构信息的指令;
numactl——hardware指令:Linux中用于查询是否直接NUMA的指令,有多个NUMAnode即支持。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种虚拟机运行控制方法进行详细介绍,本公开实施例所提供的虚拟机运行控制方法的执行主体一般为具有一定计算能力的终端设备或其他处理设备,其中终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、个人数字助理设备(Personal Digital Assistant,PDA)、手持设备、计算机设备等;在一些可能的实现方式中,该虚拟机运行控制方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为服务端为例对本公开实施例提供的虚拟机运行控制方法加以说明。
如图1所示,为本公开实施例提供的一种虚拟机运行控制方法的流程图,可以包括以下步骤:
S101:获取针对虚拟机的非统一内存访问NUMA节点配置信息;NUMA节点配置信息为根据运行虚拟机的主机对应的主机NUMA拓扑关系确定;主机NUMA拓扑关系用于指示主机中的物理中央处理器与物理内存空间之间的距离。
这里,主机可以为运行虚拟机的物理机,主机NUMA拓扑关系中可以包括多个主机NUMA节点,每个NUMA节点中可以包括至少一个物理中央处理器(Central ProcessingUnit,CPU)和至少一片内存空间,每个主机NUMA节点中的物理CPU与该NUMA节点中的物理内存空间的距离,相比于与非该NUMA节点中的物理内存空间的距离更近,读取速度更快。
NUMA节点配置信息可以为在运维端根据主机NUMA拓扑关系配置的信息,用于指示需要在虚拟机新增的虚拟NUMA节点对应的节点信息,具体可以包括新增的虚拟NUMA节点,该虚拟NUMA节点中分配的虚拟中央处理器(后文用vcpu表示)、该虚拟NUMA节点占用的物理内存空间、以及这些内存空间对应的主机NUMA节点等信息。
具体实施时,可以利用部署在安全容器中的VMM获取针对虚拟机的NUMA节点配置信息。需要说明的是,本公开实施例中提供的VMM是一种利用rust语言开发出的VMM,使用rust-vmm based VMM表示,该VMM在具有传统的VMM的所有功能的基础上,还可以利用为其开发的应用程序接口(Application Programming Interface,API),实现对NUMA节点配置信息的获取。
示例性的,可以在运维端根据主机NUMA拓扑关系,确定需要新增的虚拟NUMA节点的数量,以及每个虚拟NUMA节点的节点信息。然后,可以按照节点配置信息的配置格式,配置NUMA节点配置信息,并将NUMA节点配置信息发送至用rust-vmm based VMM。如此,可以利用用rust-vmm based VMM获取到NUMA节点配置信息。
在一种实施例中,针对S101,可以按照以下步骤实施:
在启动虚拟机监控器之前,确定为虚拟机监控器开发的拓扑关系配置接口,并根据主机NUMA拓扑关系,利用拓扑关系配置接口配置NUMA节点配置信息;
响应于启动虚拟机监控器,获取配置的NUMA节点配置信息。
这里,拓扑关系配置接口即预先为用rust-vmm based VMM开发的API,该API专用于进行NUMA节点的配置,且该API只有在rust-vmm based VMM启动前被调用才有效。
因此,在具体实施时,当存在在虚拟机中创建与主机NUMA拓扑关系相匹配的虚拟NUMA节点拓扑关系时,可以先获取为rust-vmm based VMM开发的拓扑关系配置接口,然后可以在rust-vmm based VMM启动前,调用该拓扑关系配置接口。根据主机NUMA拓扑关系,以及新增的虚拟NUMA节点的数量,以及每个虚拟NUMA节点的节点信息,按照拓扑关系配置接口对应的信息配置格式,配置针对虚拟机的NUMA节点配置信息。需要说明的是,在调用拓扑关系配置接口时,一次可以用于配置用于新增一个虚拟NUMA节点的NUMA节点配置信息。若需要新增多个虚拟NUMA节点,则需要通过多次调用拓扑关系配置接口,配置多个NUMA节点配置信息。
其中,按照拓扑关系配置接口对应的信息配置格式可以如下所示:
新增API(即拓扑关系配置接口),表示增加一个虚拟NUMA节点。如果用户需要新增多个虚拟NUMA节点,则需要多次调用该API。
add_one_numa_node( //增加一个虚拟NUMA节点
&mut self,
id:String, //新增的虚拟NUMA节点在rust-vmm based VMM的标识(即虚拟NUMA节点标识),字符串格式
size:u64, //新增的虚拟NUMA节点占用的目标内存空间(即目标内存空间),64位无符号整数格式
host_numa_node:u32, //新增的虚拟NUMA节点的内存空间所需绑定的主机NUMA节点,32位无符号整数格式
cpu_list:String //新增的虚拟NUMA节点上分配的vcpu列表(即虚拟中央处理器列表),字符串格式。
具体实施时,在调用拓扑关系配置接口之后,可以按照上述信息配置格式,根据主机NUMA拓扑关系配置NUMA节点配置信息。
进一步的,在配置好NUMA节点配置信息之后,可以在启动rust-vmm based VMM时,利用rust-vmm based VMM获取利用拓扑关系配置接口配置各个NUMA节点配置信息。其中,rust-vmm based VMM启动时机可以为启动虚拟机的时机。
S102:利用虚拟机监控器,将NUMA节点配置信息转换为具有目标格式的目标配置信息,并将目标配置信息配置为虚拟机的子操作系统的目标启动参数。
这里,虚拟机监控器VMM即为上文中所述的rust-vmm based VMM,可以用于处理安全容器中的虚拟机的所有功能,其中最核心的在于保证虚拟机的安全运行。目标格式可以为预先指定好的信息格式,是虚拟机中的子操作系统Guest OS能够识别并理解的信息格式,基于该信息格式,Guest OS能够获取到NUMA节点配置信息。示例性的,目标格式可以为numa=numa_node_id,physical_start_addr@size,cpu_list_bind_to_the_node”,其中,numa=numa_node_id表示新增的虚拟NUMA节点在rust-vmm based VMM的标识,physical_start_addr@size表示新增的虚拟NUMA节点占用的物理内存空间,cpu_list_bind_to_the_node表示新增的虚拟NUMA节点上分配的vcpu列表。
目标配置信息即为具有目标格式的NUMA节点配置信息。目标启动参数可以为cmdline参数,用于将目标配置信息传递至Guest OS。
具体实施时,在得到NUMA节点配置信息之后,可以利用rust-vmm based VMM,按照目标格式对NUMA节点配置信息进行格式转换,得到目标配置信息。然后,可以将目标配置信息注入到Guest OS的cmdline中,得到目标启动参数。
示例性的,目标配置信息可以为:“numa=0,0x0@0xd0000000@0x100000000@0x330000000,0-3numa=1,0x430000000@0x400000000,4-7”、该目标配置信息表示往虚拟机的Guest OS传递的NUMA拓扑信息包括了2个新增虚拟NUMA node:
第一个NUMA node包含了vcpu0~vcpu3(vcpu0、vcpu1、vcpu2和vcpu3),并且该NUMA node中包含了两段物理内存空间对应的物理地址范围:范围1是(0x0)~((0x0)+0xd0000000),范围2是(0x100000000)~(0x100000000+0x330000000);
第二个NUMA node包含了vcpu4~vcpu7(vcpu4、vcpu5、vcpu6和vcpu7),并且该NUMA node中包含了一段物理内存空间对应的物理地址范围:范围是(0x430000000)~(0x430000000+0x400000000)。
在一种实施例中,针对S102中“将NUMA节点配置信息转换为具有目标格式的目标配置信息”的步骤,可以按照以下步骤实施:
步骤一、利用虚拟机监控器,确定NUMA节点配置信息指示的目标内存空间和目标主机NUMA节点;目标主机NUMA节点为主机NUMA拓扑关系包括的多个主机NUMA节点中一个节点。
这里,目标内存空间即为NUMA节点配置信息指示的新增的虚拟NUMA节点占用的物理内存空间的大小,可以根据NUMA节点配置信息中的尺寸size信息确定。目标主机NUMA节点可以为主机NUMA拓扑关系包括的多个主机NUMA节点中任一个节点,也为新增的虚拟NUMA节点的内存空间所需绑定的主机NUMA节点
具体实施时,可以利用rust-vmm based VMM,根据NUMA节点配置信息中的size信息,确定目标内存空间;同时根据NUMA节点配置信息中的host_numa_node信息,确定目标主机NUMA节点。
步骤二、从虚拟机对应的总内存空间中,确定与目标内存空间相匹配的物理地址范围。
这里,物理地址范围用于指示目标内存空间的起始地址和结束地址。
具体实施时,可以从虚拟机对应的总内存空间中,筛选出具有目标内存空间指示的空间大小的内存空间,根据该内存空间对应的起始地址和结束地址,确定与目标内存空间相匹配的物理地址范围。
在一种实施例中,上述步骤二还可以按照以下步骤实施:
确定为所述虚拟机中的各个虚拟设备分配的设备内存空间;根据总内存空间和设备内存空间对应的设备地址范围,确定与目标内存空间相匹配的物理地址范围。
这里,虚拟设备可以为运行在虚拟机中的一些设备,例如虚拟外设。设备地址范围即设备内存空间对应的物理地址范围。
具体实施时,可以从虚拟机对应的总内存空间中,确定出为各个虚拟设备分配的设备内存空间。可选的,如果总内存空间中包括为主机的外设等设备分配的设备内存空间,也可以一并确定出来。
在确定出各个设备内存空间对应的设备地址范围后,可以从总内存空间对应的物理内存范围中,确定具有目标内存空间指示的空间大小的待调整的物理地址范围。然后,从待调整的物理地址范围中,剔除掉设备地址范围对应的内存空间,得到目标设备空间对应的物理地址范围。
或者,可以先从总内存空间对应的物理内存范围中,剔除掉设备地址范围,再从剔除后的物理内存范围中,确定出具有目标内存空间指示的空间大小的物理地址范围,将该物理地址范围作为目标内存空间对应的物理地址范围。
这样,通过对设备内存空间对应的设备地址范围进行剔除,可以跳过诸如外设等设备所占用的内存空间,实现对内存空间的整形。
步骤三、根据物理地址范围、除目标内存空间和目标主机NUMA节点以外的NUMA节点配置信息,确定目标配置信息。
这里,除目标内存空间和目标主机NUMA节点以外的NUMA节点配置信息,至少可以包括虚拟NUMA节点标识和虚拟中央处理器列表。
具体实施时,可以按照目标格式,将物理地址范围除目标内存空间和目标主机NUMA节点以外的NUMA节点配置信息,转换为目标配置信息。
而之所以在转换得到目标配置信息时可以去除目标主机NUMA节点,是因为在确定出与目标内存空间相匹配的物理地址范围以及目标主机NUMA节点之后,可以对目标内存空间进行绑定。具体的,在确定与目标内存空间相匹配的物理地址范围之后,还可以执行下述步骤:
将物理地址范围对应的目标内存空间,与目标主机NUMA节点进行绑定,以及,将NUMA节点配置信息指示的各个虚拟中央处理器与目标主机NUMA节点中的各个物理中央处理器进行两两绑定。
具体实施时,可以利用rust-vmm based VMM,将物理地址范围指示的目标内存空间,与目标主机NUMA节点进行绑定,实现虚拟机的内存空间和主机的内存空间的NUMA绑定。同时,可以将NUMA节点配置信息指示的vcpu列表中的各个vcpu,与目标主机NUMA节点中包括的各个物理cpu进行两两绑定。这里,vcpu与物理cpu进行绑定时,可以将一个vcpu绑定到任一个物理cpu中,实现两两绑定。不同的vcpu绑定的物理cpu不同,在vcpu的数量小于物理cpu的数量时,每个vcpu都会与物理cpu进行绑定,但部分物理cpu可以不存在绑定的vcpu。这样,可以实现虚拟机的vcpu和主机的物理cpu的绑定,使得虚拟机的vcpu和内存空间位于同一个目标主机NUMA节点上。
S103:利用子操作系统根据目标启动参数携带的目标配置信息,创建虚拟机对应的各个目标虚拟NUMA节点。
这里,目标虚拟NUMA节点中的各个vcpu和目标内存空间之间的距离关系,与主机NUMA拓扑关系指示的物理中央处理器与物理内存空间之间的距离关系一致。
具体实施时,Guest OS在启动时,可以从cmdline中,获取到rust-vmm based VMM传递的目标启动参数,并根据目标启动参数确定出携带的目标配置信息。之后,可以利用Guest OS,根据目标配置信息指示的NUMA拓扑,在虚拟机中创建各个目标虚拟NUMA节点。其中,目标虚拟NUMA节点即为NUMA节点配置信息指示的需要在虚拟机中新增的各个虚拟NUMA节点。
示例性的,可以先创建具有目标配置信息携带的虚拟NUMA节点标识的虚拟NUMA节点,在将目标配置信息指示的各个vcpu和目标内存空间添加到该虚拟NUMA节点中,得到目标虚拟NUMA节点。
这样,在虚拟机中创建了各个目标虚拟NUMA节点之后,就可以说明已经在虚拟机中创建了与主机相同的NUMA拓扑结构,实现了对虚拟机NUMA结构的调整。之后,可以在虚拟机运行业务时,根据调整后的NUMA结构进行vcpu和目标内存空间的调用,从而实现对虚拟机的运行控制。
在一种实施例中,上述S103可以按照以下步骤实施:
利用子操作系统中的节点信息转换进程,根据目标配置信息携带的虚拟NUMA节点标识、每个虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建虚拟机对应的各个目标虚拟NUMA节点。
这里,节点信息转换进程为预先开发出的一个进程,用于将目标配置信息指示的NUMA拓扑关系对接到Guest OS对应的NUMA子系统中,无需经过ACPI子系统。目标内存空间可以为上文中确定出的物理地址范围对应的内存空间。
具体实施时,在从cmdline中获取到rust-vmm based VMM传递的目标配置信息之后,可以利用节点信息转换进程,对目标配置信息进行解析,得到目标配置信息指示的虚拟NUMA节点的数量,以及每个虚拟NUMA节点对应的虚拟NUMA节点标识、每个虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表。然后,针对每个虚拟NUMA节点标识,可以根据该标识对应的目标内存空间和虚拟中央处理器列表,创建具有该标识的目标虚拟NUMA节点。
在一种实施例中,可以利用节点信息转换进程,按照如下步骤实现目标虚拟节点的创建:
将每个虚拟NUMA节点标识对应的目标内存空间,加入到虚拟机对应的虚拟内存管理器进行管理;以及将每个虚拟NUMA节点标识对应的虚拟中央处理器列表中的各个虚拟中央处理器,与虚拟NUMA节点标识进行绑定,得到与每个虚拟NUMA节点标识相对应的目标虚拟NUMA节点。
具体实施时,可以针对从cmdline中传来的每个虚拟NUMA节点,可以利用节点信息转换进程,调用Guest OS的内存管理接口,将虚拟NUMA节点的虚拟NUMA节点标识对应的目标内存空间,加入到虚拟机的虚拟内存管理器中,从而实现对目标内存空间的管理。
示例性的,内存管理接口可以为Guest OS中的添加非统一内存访问内存块(numa_add_memblk)接口,在调用该接口时,可以在该接口中设置虚拟NUMA节点标识和目标内存空间的起始地址和结束地址,实现将目标内存空间加入到虚拟内存管理器。例如,调用内存管理接口的指令可以为“numa_add_memblk(numa_node_index,numa_node_start_addr,numa_node_end_addr)”,其中,numa_node_index即虚拟NUMA节点标识,numa_node_start_addr即目标内存空间的起始地址,numa_node_end_addr即目标内存空间的结束地址。
无论目标配置信息中携带有几个虚拟NUMA节点对应的节点信息,均可以利用节点信息转换进程,通过调用Guest OS的内存管理接口的方式,实现对新增的虚拟NUMA节点的内存空间管理。
进一步的,在将各个虚拟NUMA节点分别对应的内存空间加入到虚拟内存管理器之后,还可以利用节点信息转换进程,调用Guest OS的处理器管理接口,将每个虚拟NUMA节点标识对应的虚拟中央处理器列表中的各个虚拟中央处理器,与虚拟NUMA节点标识进行绑定,从而实现虚拟NUMA节点和vcpu的绑定,以得到各个目标虚拟NUMA节点。
示例性的,处理器管理接口可以为Guest OS中的设置apic标识到节点(set_apicid_to_node)接口,在调用该接口时,可以在该接口中设置虚拟NUMA节点标识和虚拟中央处理器的标识,实现将虚拟中央处理器绑定至虚拟NUMA节点标识对应的目标虚拟NUMA节点中。其中,处理器管理接口每次调用可以实现对一个虚拟中央处理器的绑定,所以在虚拟NUMA节点标识对应的虚拟中央处理器列表中包括多个虚拟中央处理器时,可以多次调用处理器管理接口,实现将多个虚拟中央处理器绑定至同一个虚拟NUMA节点标识对应的目标虚拟NUMA节点。例如,调用处理器管理接口的指令可以为“set_apicid_to_node(cpu_index,numa_node_index)”,其中,cpu_index即虚拟中央处理器列表中的虚拟中央处理器的标识,numa_node_index即虚拟NUMA节点标识。
通过调用上述两个接口,可以实现利用节点信息转换进程将rust-vmm based VMM传递的主机NUMA拓扑关系,对接到内核非统一内存访问子系统(即Kernel NUMA System),得到在虚拟机中创建的各个目标虚拟NUMA节点。
如图2所示,为本公开实施例提供的一种利用节点信息转换进程创建各个目标虚拟NUMA节点的过程示意图,其中,针对cmdline传递过来的每一个虚拟NUMA节点,均可以先利用节点信息转换进程(即图2中的NUMA Info translator),调用添加非统一内存访问内存块(numa_add_memblk)接口,将每个虚拟NUMA节点标识对应的目标内存空间,加入到虚拟机对应的虚拟内存管理器进行管理;以及利用设置apic标识到节点(set_apicid_to_node)接口,将虚拟中央处理器绑定至虚拟NUMA节点标识对应的目标虚拟NUMA节点中。如此,可以实现将主机NUMA拓扑关系对接到内核NUMA子系统(Kernel NUMA System),得到在虚拟机中创建的各个目标虚拟NUMA节点。
为了体现本公开实施例提供的种虚拟机运行控制方法与现有技术中的拓扑关系传递方法的区别,将利用图3a和图3b进行直观体现。其中,图3a为现有技术中的拓扑关系传递方法的具体实施过程示意图,图3b为本公开实施例提供的一种虚拟机运行控制方法的具体实施过程示意图。
在图3a中,Hardware表示主机的硬件,Host OS kernel表示主操作系统的内核,主操作系统即为主机对应的操作系统。在安全容器中设置的VMM为虚拟操作系统模拟器qemu或云管理程序cloud-hypervisor。VMM在获取到需要传递的主机NUMA拓扑关系后,可以执行步骤“a、准备”,该步骤具体为通过ACPI配置与主机NUMA拓扑关系相关的ACPI表格,例如SRAT表格和SLIT表格等。然后执行步骤“b、获取”,该步骤具体为Guest OS获取ACPI表格并将ACPI表格传递至虚拟机的内核ACPI子系统(即图3a中的Kernel ACPI Subsystem)。其中,必须保证Kernel ACPI Subsystem已经使能。然后,可以利用Kernel ACPI Subsystem执行步骤“c.传递”,该步骤具体为利用Kernel ACPI Subsystem对ACPI表格(例如SRAT和SLIT表格)进行解析,以获取传递的主机NUMA拓扑关系,然后将NUMA拓扑关系传递至虚拟机的内核非统一内存访问子系统(即Kernel NUMA System),从而实现在虚拟机中创建虚拟NUMA节点。
而在图3b中,Hardware表示主机的硬件,Host OS kernel表示主操作系统的内核,主操作系统即为主机对应的操作系统。在安全容器中设置的VMM为rust-vmm based VMM。然后可以利用拓扑关系配置接口,配置NUMA节点配置信息。rust-vmm based VMM在获取到NUMA节点配置信息之后,可以执行步骤“1.准备”,该步骤用于将NUMA节点配置信息转换为具有目标格式的目标配置信息,并将目标配置信息注入到cmdline中,得到目标启动参数。虚拟机的子操作系统Guest OS在启动之后,可以执行步骤“2.获取”,该步骤用于从cmdline中获取目标启动参数携带的目标配置信息,并将目标配置信息发送至节点信息转换进程(NUMA Info translator)。然后,可以利用NUMA Info translator执行步骤“3.传递”,该步骤用于将目标配置信息指示的NUMA拓扑信息传递至虚拟机的内核非统一内存访问子系统(即Kernel NUMA System),实现在虚拟机中创建各个目标虚拟NUMA节点。基于上述过程,可以在不借助ACPI的情况下,利用cmdline将主机NUMA拓扑关系传递至虚拟机。
基于图3a和图3b可知,现有技术中的拓扑关系传递方法对应的拓扑关系传递过程,与本公开实施例提供的虚拟机运行控制方法对应的拓扑关系传递过程相比,使用的VMM不同,一个是qemu或cloud-hypervisor,而另一个使用的是自主开发的rust-vmm basedVMM,使用的VMM完全不同。传递过程中,一个必须使用Kernel ACPI Subsystem和ACPI表格(例如SRAT和SLIT表格),而另一个使用的是cmdline和NUMA Info translator,使用的手段也完全不同。由于是cmdline和NUMA Info translator相对与Kernel ACPI Subsystem和ACPI表格更轻量,所以本公开实施例提供的虚拟机运行控制方法不仅可以达到轻量化的目的,降低传递难度,而且由于无需使用大规模的与ACPI相关的代码,所以可以有效降低代码被侵入的风险,提高虚拟机的运行安全性。
为了进一步体现本公开实施例提供的虚拟机运行控制方法的拓扑关系传递效果,可以利用linux操作系统中的部分指令,对主机的内存、物理cpu、NUMA节点进行查询,以及在利用本公开实施例提供的虚拟机运行控制方法完成拓扑关系传递后,虚拟机对应的NUMA拓扑关系进行传递。例如,利用lscpu指令,查询出的主机的内存和物理cpu的信息如下:
/>
/>
这样,基于查询出的主机的NUMA节点信息和完成拓扑关系传递后的虚拟机的虚拟NUMA节点信息可知,利用公开实施例提供的虚拟机运行控制方法完成拓扑关系传递后,虚拟NUMA拓扑关系可以与主机NUMA拓扑关系相匹配,继而也可以说明利用公开实施例提供的虚拟机运行控制方法,可以实现将主机NUMA拓扑关系准确传递至虚拟机。
这样,基于上述各实施例,整个主机NUMA拓扑关系的传递和转换过程无需使用基于ACPI配置ACPI表格,达到了轻量化的目的,降低了传递难度,且由于无需使用大规模的与ACPI相关的代码,所以可以有效降低代码被侵入的风险,提高虚拟机的运行安全性。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与虚拟机运行控制方法对应的虚拟机运行控制装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述虚拟机运行控制方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,为本公开实施例提供的一种虚拟机运行控制装置的示意图,包括:
获取模块401,用于获取针对虚拟机的非统一内存访问NUMA节点配置信息;所述NUMA节点配置信息为根据运行所述虚拟机的主机对应的主机NUMA拓扑关系确定;所述主机NUMA拓扑关系用于指示所述主机中的物理中央处理器与物理内存空间之间的距离
配置模块402,用于利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,并将所述目标配置信息配置为所述虚拟机的子操作系统的目标启动参数;
创建模块403,用于利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点。
在一种可能的实施方式中,所述创建模块403,在利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点时,用于:
利用所述子操作系统中的节点信息转换进程,根据所述目标配置信息携带的虚拟NUMA节点标识、每个所述虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建所述虚拟机对应的各个目标虚拟NUMA节点。
在一种可能的实施方式中,所述创建模块403,在根据所述目标配置信息携带的虚拟NUMA节点标识、每个所述虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建所述虚拟机对应的各个目标虚拟NUMA节点时,用于:
将每个所述虚拟NUMA节点标识对应的目标内存空间,加入到所述虚拟机对应的虚拟内存管理器进行管理;以及
将每个所述虚拟NUMA节点标识对应的虚拟中央处理器列表中的各个虚拟中央处理器,与所述虚拟NUMA节点标识进行绑定,得到与每个所述虚拟NUMA节点标识相对应的目标虚拟NUMA节点。
在一种可能的实施方式中,所述获取模块401,在获取针对虚拟机的非统一内存访问NUMA节点配置信息时,用于:
在启动所述虚拟机监控器之前,确定为所述虚拟机监控器开发的拓扑关系配置接口,并根据所述主机NUMA拓扑关系,利用所述拓扑关系配置接口配置所述NUMA节点配置信息;
响应于启动所述虚拟机监控器,获取配置的所述NUMA节点配置信息。
在一种可能的实施方式中,所述配置模块402,在利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息时,用于:
利用所述虚拟机监控器,确定所述NUMA节点配置信息指示的目标内存空间和目标主机NUMA节点;所述目标主机NUMA节点为所述主机NUMA拓扑关系包括的多个主机NUMA节点中一个节点;
从所述虚拟机对应的总内存空间中,确定与所述目标内存空间相匹配的物理地址范围;
根据所述物理地址范围、除所述目标内存空间和所述目标主机NUMA节点以外的所述NUMA节点配置信息,确定所述目标配置信息。
在一种可能的实施方式中,所述配置模块402,在从所述虚拟机对应的总内存空间中,确定与所述目标内存空间相匹配的物理地址范围时,用于:
确定为所述虚拟机中的各个虚拟设备分配的设备内存空间;
根据所述总内存空间和所述设备内存空间对应的设备地址范围,确定与所述目标内存空间相匹配的物理地址范围。
在一种可能的实施方式中,所述装置还包括:
绑定模块404,在确定与所述目标内存空间相匹配的物理地址范围之后,用于
将所述物理地址范围对应的目标内存空间,与所述目标主机NUMA节点进行绑定,以及,将所述NUMA节点配置信息指示的各个虚拟中央处理器与所述目标主机NUMA节点中的各个物理中央处理器进行两两绑定。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本申请实施例还提供了一种计算机设备。参照图5所示,为本申请实施例提供的一种计算机设备的结构示意图,包括:
处理器501、存储器502和总线503。其中,存储器502存储有处理器501可执行的机器可读指令,处理器501用于执行存储器502中存储的机器可读指令,所述机器可读指令被处理器501执行时,处理器501执行下述步骤:S101:获取针对虚拟机的非统一内存访问NUMA节点配置信息;NUMA节点配置信息为根据运行虚拟机的主机对应的主机NUMA拓扑关系确定;主机NUMA拓扑关系用于指示主机中的物理中央处理器与物理内存空间之间的距离;S102:利用虚拟机监控器,将NUMA节点配置信息转换为具有目标格式的目标配置信息,并将目标配置信息配置为虚拟机的子操作系统的目标启动参数以及S103:利用子操作系统根据目标启动参数携带的目标配置信息,创建虚拟机对应的各个目标虚拟NUMA节点。
上述存储器502包括内存5021和外部存储器5022;这里的内存5021也称内存储器,用于暂时存放处理器501中的运算数据,以及与硬盘等外部存储器5022交换的数据,处理器501通过内存5021与外部存储器5022进行数据交换,当计算机设备运行时,处理器501与存储器502之间通过总线503通信,使得处理器501在执行上述方法实施例中所提及的执行指令。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的虚拟机运行控制方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的虚拟机运行控制方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的虚拟机运行控制方法的步骤,具体可参见上述方法实施例,在此不再赘述。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式、处理的个人信息种类等信息。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种虚拟机运行控制方法,其特征在于,包括:
获取针对虚拟机的非统一内存访问NUMA节点配置信息;所述NUMA节点配置信息为根据运行所述虚拟机的主机对应的主机NUMA拓扑关系确定;所述主机NUMA拓扑关系用于指示所述主机中的物理中央处理器与物理内存空间之间的距离;
利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,并将所述目标配置信息配置为所述虚拟机的子操作系统的目标启动参数;
利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点。
2.根据权利要求1所述的方法,其特征在于,利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点,包括:
利用所述子操作系统中的节点信息转换进程,根据所述目标配置信息携带的虚拟NUMA节点标识、每个所述虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建所述虚拟机对应的各个目标虚拟NUMA节点。
3.根据权利要求2所述的方法,其特征在于,根据所述目标配置信息携带的虚拟NUMA节点标识、每个所述虚拟NUMA节点标识对应的目标内存空间和虚拟中央处理器列表,创建所述虚拟机对应的各个目标虚拟NUMA节点,包括:
将每个所述虚拟NUMA节点标识对应的目标内存空间,加入到所述虚拟机对应的虚拟内存管理器进行管理;以及
将每个所述虚拟NUMA节点标识对应的虚拟中央处理器列表中的各个虚拟中央处理器,与所述虚拟NUMA节点标识进行绑定,得到与每个所述虚拟NUMA节点标识相对应的目标虚拟NUMA节点。
4.根据权利要求1所述的方法,其特征在于,获取针对虚拟机的非统一内存访问NUMA节点配置信息,包括:
在启动所述虚拟机监控器之前,确定为所述虚拟机监控器开发的拓扑关系配置接口,并根据所述主机NUMA拓扑关系,利用所述拓扑关系配置接口配置所述NUMA节点配置信息;
响应于启动所述虚拟机监控器,获取配置的所述NUMA节点配置信息。
5.根据权利要求1所述的方法,其特征在于,利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,包括:
利用所述虚拟机监控器,确定所述NUMA节点配置信息指示的目标内存空间和目标主机NUMA节点;所述目标主机NUMA节点为所述主机NUMA拓扑关系包括的多个主机NUMA节点中一个节点;
从所述虚拟机对应的总内存空间中,确定与所述目标内存空间相匹配的物理地址范围;
根据所述物理地址范围、除所述目标内存空间和所述目标主机NUMA节点以外的所述NUMA节点配置信息,确定所述目标配置信息。
6.根据权利要求5所述的方法,其特征在于,从所述虚拟机对应的总内存空间中,确定与所述目标内存空间相匹配的物理地址范围,包括:
确定为所述虚拟机中的各个虚拟设备分配的设备内存空间;
根据所述总内存空间和所述设备内存空间对应的设备地址范围,确定与所述目标内存空间相匹配的物理地址范围。
7.根据权利要求5所述的方法,其特征在于,在确定与所述目标内存空间相匹配的物理地址范围之后,还包括:
将所述物理地址范围对应的目标内存空间,与所述目标主机NUMA节点进行绑定,以及,将所述NUMA节点配置信息指示的各个虚拟中央处理器与所述目标主机NUMA节点中的各个物理中央处理器进行两两绑定。
8.一种虚拟机运行控制装置,其特征在于,包括:
获取模块,用于获取针对虚拟机的非统一内存访问NUMA节点配置信息;所述NUMA节点配置信息为根据运行所述虚拟机的主机对应的主机NUMA拓扑关系确定;所述主机NUMA拓扑关系用于指示所述主机中的物理中央处理器与物理内存空间之间的距离;
配置模块,用于利用虚拟机监控器,将所述NUMA节点配置信息转换为具有目标格式的目标配置信息,并将所述目标配置信息配置为所述虚拟机的子操作系统的目标启动参数;
创建模块,用于利用所述子操作系统根据所述目标启动参数携带的所述目标配置信息,创建所述虚拟机对应的各个目标虚拟NUMA节点。
9.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至7任意一项所述的虚拟机运行控制方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至7任意一项所述的虚拟机运行控制方法的步骤。
CN202311085440.7A 2023-08-25 2023-08-25 虚拟机运行控制方法、装置、计算机设备和存储介质 Pending CN117093326A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311085440.7A CN117093326A (zh) 2023-08-25 2023-08-25 虚拟机运行控制方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311085440.7A CN117093326A (zh) 2023-08-25 2023-08-25 虚拟机运行控制方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN117093326A true CN117093326A (zh) 2023-11-21

Family

ID=88773355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311085440.7A Pending CN117093326A (zh) 2023-08-25 2023-08-25 虚拟机运行控制方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117093326A (zh)

Similar Documents

Publication Publication Date Title
CN109104467B (zh) 开发环境构建方法、装置以及平台系统和存储介质
US10915348B2 (en) Technologies for duplicating virtual machine states
US11645068B2 (en) Method for implementing function jump, apparatus, and computer storage medium
US20160261693A1 (en) Cloud-based data backup and operation method and system
KR102235556B1 (ko) 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US9734311B1 (en) Secure authentication of firmware configuration updates
CN108073423B (zh) 一种加速器加载方法、系统和加速器加载装置
WO2017148287A1 (zh) 一种嵌入式软件开发方法、装置、平台及存储介质
US9811481B2 (en) Distributed intelligent platform management interface (D-IPMI) system and method thereof
CN107368353B (zh) 一种实现虚拟机内存热添加的方法和装置
US20180203734A1 (en) Thread associated memory allocation and memory architecture aware allocation
US20150026379A1 (en) Generic method to build virtual pci device and virtual mmio device
CN106126303A (zh) Linux操作系统的安装方法、装置及系统
US11321109B2 (en) Container engine for selecting driver based on container metadata
CN108234174B (zh) 虚拟网络功能的管理方法和装置
CN117573338A (zh) 一种资源分配方法、装置及电子设备
CN117093326A (zh) 虚拟机运行控制方法、装置、计算机设备和存储介质
US10552168B2 (en) Dynamic microsystem reconfiguration with collaborative verification
US10261921B2 (en) Universal secure platform virtualization system and method thereof
CN104182271A (zh) 一种基于申威处理器的虚拟化实现方法
CN108804144B (zh) 操作系统启动的控制方法/系统、存储介质及电子设备
CN105511940B (zh) 一种Xen虚拟化中授权虚拟机访问Xenstore的方法及系统
CN111857816A (zh) 寄存器分配方法、装置、电子设备及计算机存储介质
CN117667465B (zh) 代码共享方法、装置、交换机、多主机系统、设备和介质
Sekigawa et al. Web Application-Based WebAssembly Container Platform for Extreme Edge Computing

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