CN114691297A - 一种信息读写方法、电子设备、分布式系统以及程序产品 - Google Patents
一种信息读写方法、电子设备、分布式系统以及程序产品 Download PDFInfo
- Publication number
- CN114691297A CN114691297A CN202210255744.2A CN202210255744A CN114691297A CN 114691297 A CN114691297 A CN 114691297A CN 202210255744 A CN202210255744 A CN 202210255744A CN 114691297 A CN114691297 A CN 114691297A
- Authority
- CN
- China
- Prior art keywords
- virtual
- cpu
- information
- virtual machine
- storage area
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory 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
技术领域
本说明书实施例涉及虚拟机技术领域,尤其涉及一种信息读写方法、电子设备、分布式系统以及程序产品。
背景技术
云计算已经成为现代信息技术产业的核心技术框架,未来越来越多的信息技术应用会部署在云上。云计算的核心技术就是虚拟化。虚拟化(Virtualization)是一种资源管理技术,可以将计算机的各种如处理器(CPU)、内存、磁盘空间、网路适配器等实体资源予以抽象、转换,并分割、组合为一个或多个电脑组态环境。利用虚拟化技术,可以在计算机中通过软件模拟出具有完整硬件系统功能的虚拟机(Virtual Machine)。虚拟机也称为客户机(Guest Machine),相应地,运行有一个或多个虚拟机的计算机称为宿主机(HostMachine)。客户机在运行过程中,宿主机需要时刻对实体资源进行调度规划。客户机的虚拟CPU的运行情况对实体资源的调度规划有重要的参考作用。同时客户机也需要对虚拟资源进行调度与分配,物理CPU的运行情况也对虚拟资源的调度分配有重要的参考作用。如何实现宿主机与虚拟机之间数据交互,是本领域亟需解决的技术问题。
发明内容
本说明书实施例提供了一种信息读写方法、电子设备、分布式系统以及程序产品,可以让宿主机获取到虚拟CPU的信息。
根据本说明书实施例的第一方面,提供一种信息读写方法,应用于电子设备,所述电子设备运行有虚拟机,所述方法包括:
在所述虚拟机初始化时,由虚拟机内核程序在所述虚拟机的虚拟内存中创建用于存储信息的存储区域,并向虚拟寄存器发送所述存储区域的地址的写入指令;其中,在所述虚拟机运行过程中,由所述虚拟机内核程序在所述存储区域中读写信息;
由电子设备内核程序捕获所述写入指令,从所述写入指令中获取所述存储区域的地址,并基于所述地址在所述存储区域中读写信息。
在一些例子中,所述存储区域存储的信息包括:
所述虚拟机内核程序写入的虚拟CPU信息,以供所述电子设备内核程序读取;和/或
电子设备内核程序写入的物理CPU信息,以供所述虚拟机内核程序读取。
在一些例子中,所述电子设备包括至少一个物理CPU,所述虚拟机的虚拟CPU映射至所述至少一个物理CPU中的第一物理CPU上运行;所述方法还包括:
在所述虚拟机的运行过程中,若确定需要暂停所述虚拟CPU的运行,由所述电子设备内核程序暂停所述虚拟CPU映射至所述第一物理CPU,以使所述虚拟CPU暂停运行。
在一些例子中,所述虚拟CPU信息包括所述虚拟CPU的当前工作状态;所述工作状态包括内核态与用户态;所述若确定需要暂停所述虚拟CPU的运行,由所述电子设备内核程序暂停所述虚拟CPU映射至所述第一物理CPU,包括:
若确定需要执行所述电子设备发起的任务,由所述电子设备内核程序确定当前工作状态为用户态的虚拟CPU对应的目标物理CPU,并暂停所述目标物理CPU映射的虚拟CPU,以使所述目标物理CPU执行所述电子设备发起的任务。
在一些例子中,所述电子设备包括至少两个物理CPU,所述物理CPU信息包括所述第一物理CPU的信息;所述方法还包括:
若需要恢复所述虚拟CPU的运行,由所述电子设备内核程序读取在所述虚拟CPU被暂停前所述存储区域记录的第一物理CPU的信息,并将所述虚拟CPU重新映射至所述第一物理CPU。
在一些例子中,所述至少两个物理CPU共用末级缓存;所述末级缓存包括多个缓存子区域;所述物理CPU信息还包括分配给所述第一物理CPU的缓存子区域的区域信息;所述方法还包括:
由所述电子设备内核程序将与所述区域信息匹配的缓存子区域分配给所述第一物理CPU。
在一些例子中,所述虚拟机包括至少两个所述虚拟CPU,一个所述虚拟CPU对应一个所述用于存储虚拟CPU信息的存储区域;所述物理CPU信息包括映射所述虚拟CPU的物理CPU的负载信息,以使所述虚拟机根据所述负载信息向所述至少两个虚拟CPU分配任务。
在一些例子中,所述存储区域的地址为所述虚拟机中的物理地址;所述基于所述地址在所述存储区域中读写信息,包括:
将所述虚拟机中的物理地址转换为所述电子设备中的虚拟地址;
基于所述电子设备中的虚拟地址,在所述存储区域中读写信息。
根据本说明书实施例的第二方面,一种信息读写方法,应用于电子设备,在所述电子设备上运行的虚拟机执行以下步骤:
在所述虚拟机初始化时,由虚拟机内核程序在所述虚拟机的虚拟内存中创建用于存储信息的存储区域,并向虚拟寄存器发送所述存储区域的地址的写入指令;以使电子设备内核程序捕获所述写入指令,从所述写入指令中获取所述存储区域的地址,并基于所述地址在所述存储区域中读写信息。
在所述虚拟机运行过程中,由所述虚拟机内核程序在所述存储区域中读写信息。
根据本说明书实施例的第三方面,提供一种电子设备,运行有虚拟机,所述电子设备包括:
物理CPU;
用于存储处理器可执行指令的存储器;
其中,所述物理CPU调用所述可执行指令时实现上述第一方面任一所述方法的操作。
根据本说明书实施例的第四方面,提供一种分布式系统,所述分布式系统包括至少一个上述第二方面所述的电子设备。
根据本说明书实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述方法的步骤。
根据本说明书实施例的第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时执行上述第一方面任一所述的方法。
本说明书实施例的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例提供的一种信息读写方法、电子设备、分布式系统以及程序产品,应用在运行有虚拟机的电子设备中,在虚拟机初始化阶段中,由虚拟机内核程序在分配的虚拟内存中创建一个存储区域来存储信息,然后向虚拟寄存器发送该存储区域的地址的写入指令。在虚拟机的运行过程中,虚拟机内核程序可以在该存储区域中读写区域。同时,电子设备内核程序可以捕获该写入指令,从而可以从写入指令中获取到该存储区域的地址。基于存储区域的地址,可以在该存储区域中读写信息。通过上述方法,虚拟机与电子设备可以利用该存储区域中进行数据交互,从而可以利用交互的数据作出资源分配与调度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
附图说明
此处的附图被并入说明书中并构成本说明书实施例的一部分,示出了符合本说明书实施例的实施例,并与说明书一起用于解释本说明书实施例的原理。
图1是本说明书根据一实施例示出的一种信息读写方法的流程图。
图2是本说明书根据另一实施例示出的一种信息读写方法的流程图。
图3是本说明书根据另一实施例示出的一种信息读写方法的流程图。
图4是本说明书根据另一实施例示出的一种信息读写方法的流程图。
图5是本说明书根据一实施例示出的CPU电路板的示意图。
图6是本说明书根据另一实施例示出的一种信息读写方法的流程图。
图7是本说明书根据另一实施例示出的一种信息读写方法的流程图。
图8是本说明书根据一实施例示出的一种电子设备的硬件结构图。
图9是本说明书根据一实施例示出的一种分布式系统的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书实施例的一些方面相一致的装置和方法的例子。
在本说明书实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书实施例。在本说明书实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
云计算已经成为现代信息技术产业的核心技术框架,未来越来越多的信息技术应用会部署在云上。云计算的核心技术就是虚拟化。虚拟化(Virtualization)是一种资源管理技术,可以将计算机的各种如处理器(Central Processing Unit,CPU)、内存、磁盘空间、网路适配器等实体资源予以抽象、转换,并分割、组合为一个或多个电脑组态环境。利用虚拟化技术,可以在计算机中通过软件模拟出具有完整硬件系统功能的虚拟机(VirtualMachine)。虚拟机也称为客户机(Guest Machine),相应地,运行有一个或多个虚拟机的计算机称为宿主机(Host Machine)。
在虚拟化环境下,从虚拟机的角度出发,是用虚拟CPU(Virtual CentralProcessing Unit,VCPU)执行计算。但在实际上,是由虚拟机所在的物理主机,也即宿主机的物理CPU执行具体的计算功能。也即,VCPU映射至物理CPU上运行。同时随着技术发展,现已出现能同时并处理任务的多核处理器。多核处理器是指在一个CPU电路板中集成有两个以上的完整的计算引擎(内核,core),即集成两个以上的物理CPU。在本说明书实施例中,对于包括多核处理器的电子设备,物理CPU是指多核处理器中的内核。
虚拟机在运行过程中,宿主机需要时刻对实体资源进行调度规划。而虚拟机的虚拟CPU的运行情况对实体资源的调度规划有重要的参考作用。同时客户机也需要对虚拟资源进行调度与分配,物理CPU的运行情况也对虚拟资源的调度分配有重要的参考作用。如何实现宿主机与虚拟机之间数据交互,是本领域亟需解决的技术问题。为此,本说明书实施例提出了一种信息读写方法,应用于电子设备,其中,该电子设备运行有虚拟机。可以理解的是,运行有虚拟机的电子设备也即上文所述的宿主机。上述方法包括如图1所述的步骤:
步骤110:在所述虚拟机初始化时,由虚拟机内核程序在所述虚拟机的虚拟内存中创建用于存储信息的存储区域,并向虚拟寄存器发送所述存储区域的地址的写入指令;其中,在所述虚拟机运行过程中,由所述虚拟机内核程序在所述存储区域中读写信息;
步骤120:由电子设备内核程序捕获所述写入指令,从所述写入指令中获取所述存储区域的地址,并基于所述地址在所述存储区域中读写信息。
其中,可以通过虚拟化软件在电子设备中建立与运行一个至多个虚拟机,作为例子,虚拟化软件可以包括QEMU(Quick Emulator)、Virtual PC等。而QEMU可以与基于内核的虚拟机(Kernel-based Virtual Machine,KVM)配合完成电子设备的虚拟化工作。如图2所示,电子设备可以启动虚拟CPU线程,作为例子,可以利用虚拟化软件QEMU通过输入/输出操作的系统调用(input/output control,ioctl)来启动虚拟CPU线程,随后虚拟机进入虚拟CPU初始化阶段。
在虚拟机的初始化阶段,电子设备可以为虚拟机分配实体资源,如将虚拟机的虚拟CPU映射至物理CPU上运行,将电子设备的物理内存中的部分存储地址划分给虚拟机作为虚拟内存,等等。由于虚拟机具有完整硬件系统功能,同样具有操作系统,因此在虚拟机中可以运行有内核程序,称为虚拟机内核程序。而电子设备,也即宿主机本身运行的内核程序,可以称为电子设备内核程序。
如图2所示,在虚拟机的虚拟CPU开始初始化后,虚拟机内核程序可以在虚拟内存中创建存储区域,并随后向虚拟寄存器发送携带有存储区域地址的写入指令。电子设备内核程序可以捕获该写入指令,并在从写入指令中获取存储区域的地址。完成上述过程后,虚拟机的虚拟CPU完成初始化。
在一些实施例中,存储区域所存储的信息可以包括以下一种或两种:
虚拟机内核程序写入的虚拟CPU信息,该虚拟CPU信息用于提供给电子设备内核程序读取;
电子设备内核程序写入的物理CPU信息,该物理CPU信息用于提供给虚拟机内核程序读取。
在一些实施例中,上述物理CPU可以是基于X86架构的物理CPU,虚拟机的虚拟寄存器可以是模型特定寄存器(Model Specific Register,MSR)。MSR是在X86架构处理器中,一系列用于控制CPU、功能开关、调试、跟踪程序执行、监测CPU性能等方面的寄存器。
在一些实施例中,虚拟寄存器可以没有相应的实体寄存器。具体地,若电子设备包括物理寄存器0-7,那么在为虚拟机分配实体资源时,可以向虚拟机分配物理寄存器8,使得虚拟机包括虚拟寄存器8。从虚拟机的角度来看,虚拟机认为虚拟寄存器8可用,但并不知道虚拟寄存器8并没有对应的物理寄存器。如此,虚拟机在创建上述存储区域后,仍然会向虚拟寄存器8发送写入指令。而虚拟CPU对应的物理CPU执行该写入指令时,由于虚拟寄存器8没有相应的物理寄存器,因此不会执行该写指令。如此,虚拟机内核程序向虚拟寄存器发送的写入指令在被电子设备内核程序捕获后,该写入指令不会被执行。也即该写入指令在本实施例中实际上是充当从虚拟机向电子设备传递存储区域地址的作用,而非用于在物理寄存器中写入存储区域的地址。
在一些实施例中,虚拟CPU信息的数据类型可以是结构体,该虚拟CPU信息可以称为虚拟CPU调度结构体(VCPU Scheduler info,VSI)。
本说明书实施例提供的一种信息读写方法,通过虚拟化软件在宿主机中建立与运行虚拟机,在虚拟机初始化阶段中,由虚拟机内核程序在分配的虚拟内存中创建一个存储区域来存储信息。其中,若虚拟机包括多个虚拟CPU,则可以针对每个虚拟CPU均创建一个存储区域来存储对应的信息。在创建该虚拟区域后,向虚拟寄存器发送该存储区域的地址的写入指令。在虚拟机的运行过程中,虚拟机内核程序可以在该存储区域中进行信息的读写。同时电子设备内核程序可以捕获该写入指令,从而可以从写入指令中获取到该存储区域的地址。基于存储区域的地址,同样可以在该存储区域中进行信息读写。通过上述方法,虚拟机与电子设备可以利用该存储区域中进行数据交互,从而虚拟机与电子设备均可以利用交互的数据作出资源分配与调度。
电子设备可以包括至少一个物理CPU,如此,虚拟机的虚拟CPU可以映射到至少一个物理CPU中的第一物理CPU上运行。在一些实施例中,虚拟CPU可以以独占CPU的绑定方式映射到第一物理CPU上运行。也即第一物理CPU不会执行其他虚拟CPU的任务。
在另一些实施例中,虚拟CPU可以以共享CPU的绑定方式映射到第一物理CPU上运行。也即第一物理CPU在不同时间段可以执行不同虚拟CPU的任务,以提高物理CPU的资源利用率。
在共享CPU的绑定方式中,由于第一物理CPU可以执行不同虚拟CPU的任务,那么在一些实施例中,在虚拟机的运行过程中,可能会因为共享的第一物理CPU需要切换执行其他虚拟CPU的任务,而需要暂停当前所映射的虚拟CPU的运行。那么在本实施例提供的一种信息读写方法中,还可以包括步骤:在虚拟机运行过程中,若确定需要暂停虚拟CPU的运行,则由电子设备内核程序暂停虚拟CPU映射至第一物理CPU,以使虚拟CPU暂停运行。
作为例子,虚拟机可以包括多个虚拟CPU,同一虚拟机所包括的多个虚拟CPU中的部分虚拟CPU可以共享第一物理CPU。如此,可以是在第一物理CPU需要执行虚拟机的其他虚拟CPU的任务时,暂停当前映射的虚拟CPU的运行。
作为例子,电子设备可以运行有多个虚拟机,每个虚拟机可以包括至少一个虚拟CPU。不同虚拟机的虚拟CPU可以共享第一物理CPU。如此,可以是在第一物理CPU需要执行其他虚拟机的虚拟CPU的任务时,暂停当前映射的虚拟CPU的运行。可以理解的是,若虚拟机仅包括一个虚拟CPU,那么暂停该虚拟CPU的运行,即暂停该虚拟机的运行。
在一些场景中,若电子设备发起了待执行任务,而电子设备所包括的物理CPU均映射有虚拟CPU运行,那么电子设备可以抢占物理CPU来执行上述待执行任务。所谓抢占物理CPU,即暂停物理CPU上运行的虚拟CPU,并利用该物理CPU执行上述待执行任务。然而,CPU的工作状态可以分为用户态和内核态。当CPU在内核态下运行时,CPU运行的可能是与操作系统相关的任务,这些任务往往较为重要,例如该任务持有锁或持有关键资源。若内核态下的虚拟CPU被暂停运行,则可能会影响同一虚拟机下其他虚拟CPU上所执行的任务的性能。
为了避免处于内核态的虚拟CPU被电子设备暂停运行,在一些实施例中,上述虚拟机内核程序写入的虚拟CPU信息可以包括虚拟CPU的当前工作状态。其中,如图3所示,在虚拟机的运行过程中,当虚拟CPU在用户态下运行时,虚拟CPU可以在上述存储区域将虚拟CPU的工作状态设定为用户态;当虚拟CPU在内核态下运行时,虚拟CPU可以在上述存储区域将虚拟CPU的工作状态设定为内核态。那么,当需要暂停虚拟CPU的运行时,可以由电子设备内核程序通过存储区域的存储地址,从对应的物理内存中读取虚拟CPU的工作状态。若该虚拟CPU处于用户态,则可以暂停该虚拟CPU的运行。
作为例子,如在上述场景中,当电子设备发起了待执行任务,而电子设备所包括的物理CPU映射有虚拟CPU运行,那么电子设备内核程序可以执行如图4所示的步骤:
步骤410:在执行所述电子设备发起的任务时,读取所述存储区域记录的虚拟CPU的工作状态;
步骤420:确定工作状态为用户态的虚拟CPU对应的目标物理CPU;
步骤430:暂停所述目标物理CPU映射的虚拟CPU,并利用所述目标物理CPU执行所述电子设备发起的任务。
电子设备内核程序确定当前工作状态为用户态的虚拟CPU对应的目标物理CPU,并暂停目标物理CPU映射的虚拟CPU,以使目标物理CPU执行电子设备发起的任务。
作为例子,若电子设备所包括的物理CPU为多个,且多个物理CPU均映射有虚拟CPU运行。一个物理CPU映射有一个虚拟CPU。其中,多个物理CPU所映射的多个虚拟CPU可以是同一虚拟机的虚拟CPU,也可以是不同虚拟机的虚拟CPU。针对每一个虚拟CPU,可以创建一个存储区域来存储对应的虚拟CPU信息。如此,当确定需要执行电子设备发起的任务时,可以由电子设备内核程序逐一从各存储区域中读取各虚拟CPU的工作状态,并从各虚拟CPU中确定当前工作状态为用户态的虚拟CPU对应的目标物理CPU。然后暂停目标物理CPU映射的虚拟CPU,以使目标物理CPU执行电子设备发起的任务。
本说明书实施例提供的一种信息读写方法,通过设计虚拟内存中创建的存储区域用于存储虚拟CPU的工作状态,在虚拟机的运行过程中,当虚拟CPU的工作状态发生改变时,可以更新该存储区域所记录的虚拟CPU信息,使得电子设备可以直接得知虚拟CPU所处的工作状态,从而更有利于电子设备对物理CPU做出正确的调度,防止因暂停内核态虚拟CPU的运行而导致虚拟机操作系统崩溃。
如图5所示,电子设备可以包括至少两个物理CPU 511-512(图中示出两个物理CPU作为例子)。其中,至少两个物理CPU 511-512可以集成在CPU电路板500上。如此,虚拟CPU可以映射到至少两个CPU 511-512中的任一个物理CPU上运行。映射有该虚拟CPU的物理CPU可以是第一物理CPU。CPU电路板300还可以集成有一级缓存521-522,二级缓存531-532,以及三级缓存540。在一些实施例中,还可以集成有四级缓存(图中未示出)。其中,三级缓存和四级缓存也称为末级缓存(Last Level Cache,LLC)。以CPU电路板集成有一至三级缓存为例,每个物理CPU均有一一对应的一级缓存与二级缓存。如物理CPU511对应于一级缓存521和二级缓存531;物理CPU 512对应于一级缓存522和二级缓存532。而物理CPU 511与物理CPU512则共享三级缓存540。
如上文所述,在一些场景中,虚拟CPU可能会在运行过程中被暂停运行。当需要恢复虚拟CPU的运行时,在相关技术中,往往是随机将可用的物理CPU分配至需要恢复运行的虚拟CPU,以使虚拟CPU映射至所分配的物理CPU上运行。如此,每次虚拟CPU被暂停后重新恢复运行时,都可能会被映射至不同的物理CPU上运行。然而,在虚拟CPU执行任务的过程中,往往会将任务所需数据存放在与映射的物理CPU对应的缓存中。若虚拟CPU频繁更换映射至的物理CPU,那么虚拟CPU在继续执行中断的任务时,需要多次重新从内存中读取任务所需数据。以图5为例。若虚拟CPU在暂停运行前被映射至物理CPU 511上运行时,那么任务所需数据可以按照一级缓存>二级缓存>三级缓存的优先级,一次存放至相应的一级缓存521、二级缓存531以及三级缓存540对应的缓存子区域中。在需要恢复虚拟CPU运行时,若将虚拟CPU映射至物理CPU 512上运行,那么将无法继续使用之前存放在一级缓存521、二级缓存531以及三级缓存540对应的缓存子区域中的数据,需要从内存中重新读取任务所需数据。显然,上述的物理CPU的调度方式会影响任务执行速度。
为了解决上述技术问题,在一些实施例中,上述电子设备内核程序写入的物理CPU信息可以包括第一物理CPU的信息,其中,第一物理CPU可以是虚拟CPU被暂停运行前,所映射至的物理CPU。具体地,如图3所示,在虚拟机完成初始化后,电子设备可以获取上述存储区域的地址,如此,可以在存储区域中记录虚拟CPU所分配的第一物理CPU的信息。那么,当需要恢复被暂停的虚拟CPU的运行时,可以由电子设备内核程序读取在该虚拟CPU被暂停前对应的存储区域记录的第一物理CPU信息,然后将该虚拟CPU重新映射至该第一物理CPU上运行。
如上所述,末级缓存是多个物理CPU共享的缓存。末级缓存可以划分出多个缓存子区域,每个缓存子区域分别分配给不同的物理CPU。为了在恢复虚拟CPU运行后,第一物理CPU能复用虚拟CPU暂停运行前所对应的末级缓存的缓存子区域,也即维持热缓存,在一些实施例中,上述电子设备内核程序写入的物理CPU信息可以包括第一物理CPU的信息,以及分配给该第一物理CPU的缓存子区域的区域信息。也即,如图3所示,在虚拟机完成初始化后,电子设备可以在存储区域中记录虚拟CPU所分配的第一物理CPU的信息以及相应的LLC的信息。如此,当需要恢复被暂停的虚拟CPU的运行时,可以由电子设备内核程序读取在该虚拟CPU被暂停前对应的存储区域记录的第一物理CPU信息,以及分配给该第一物理CPU的缓存子区域的区域信息。然后将与该区域信息匹配的缓存子区域分配给第一物理CPU,以及将虚拟CPU重新映射至该第一物理CPU上运行。
本说明书实施例提供的一种信息读写方法,通过设计虚拟内存中创建的存储区域用于存储虚拟CPU在被暂停运行前所映射至的第一物理CPU的信息,以及分配给该第一物理CPU的缓存子区域的区域信息,使得在需要重新恢复虚拟CPU的运行时,电子设备可以优先将该虚拟CPU重新映射至第一物理CPU,并将对应的缓存子区域重新分配给第一物理CPU。如此,可以维持热缓存,避免虚拟CPU重新运行时需要重新从内存中读取任务所需数据,提高任务执行效率。
在一些场景中,电子设备运行的虚拟机可以包括两个以上的虚拟CPU,针对每个虚拟CPU,可以创建一个存储区域来存储相应信息。虚拟机可以将待执行的任务分配至不同的虚拟CPU上执行。为了均衡负载,在一些实施例中,上述电子设备内核程序写入的物理CPU信息可以包括映射该虚拟CPU的物理CPU的负载信息。如此,当虚拟机发起待执行任务时,可以读取每个虚拟CPU对应的存储区域中所记录的物理CPU的负载信息,并基于负载信息向多个虚拟CPU分配任务。从而避免了过于繁重的任务安排在已经负载较高的虚拟CPU上。
在虚拟机的初始化阶段,虚拟内核程序向虚拟寄存器发送的存储区域的地址的写入指令,携带有该存储区域的地址。在一些实施例中,该存储区域的地址可以是存储区域在虚拟机中的物理地址,也称为客户机物理地址(Guest Physical Address,GPA)。如此,上述步骤120中读取虚拟CPU信息的过程可以包括如图6所示的步骤:
步骤610:将所述虚拟机中的物理地址转换为所述电子设备中的虚拟地址;
步骤620:基于所述电子设备中的虚拟地址,从所述虚拟内存对应的物理内存中读取所述存储区域记录的虚拟CPU信息。
其中,电子设备中的虚拟地址也即宿主机虚拟地址(Host Virtual Address,HVA)。可以理解的是,在获得HVA后,可以由电子设备的内存管理单元(Memory ManagementUnit,MMU)将该虚拟地址转换为物理地址,以利用转换后的物理地址从对应的物理内存中读取该存储区域所记录的虚拟CPU信息。
此外,本说明书实施例还提供了一种信息读写方法,应用在电子设备,在该电子设备上运行的虚拟机执行以下步骤:在所述虚拟机初始化时,由虚拟机内核程序在所述虚拟机的虚拟内存中创建用于存储信息的存储区域,并向虚拟寄存器发送所述存储区域的地址的写入指令;以使电子设备内核程序捕获所述写入指令,从所述写入指令中获取所述存储区域的地址,并基于所述地址在所述存储区域中读写信息;
在所述虚拟机运行过程中,由所述虚拟机内核程序在所述存储区域中读写信息。
在一些实施例中,上述虚拟机包括至少两个虚拟CPU,针对每个虚拟CPU均对应创建一个用于存储虚拟CPU信息的存储区域。虚拟CPU可以包括映射该虚拟CPU的物理CPU的负载信息。为了让虚拟机向所包括的虚拟CPU更合理地分配任务,本实施例中,虚拟机还执行如图7所示的步骤:
步骤710:针对每个虚拟CPU,获取对应的存储区域中记录的物理CPU的负载信息;
步骤720:根据所述负载信息向所述至少两个虚拟CPU分配任务。
本说明书实施例提供的一种信息读写方法,应用在运行有虚拟机的电子设备中,在虚拟机初始化阶段中,由虚拟机内核程序在分配的虚拟内存中创建一个存储区域来存储信息,然后向虚拟寄存器发送该存储区域的地址的写入指令。在虚拟机的运行过程中,虚拟机内核程序可以在该存储区域中读写区域。同时,电子设备内核程序可以捕获该写入指令,从而可以从写入指令中获取到该存储区域的地址。基于存储区域的地址,可以在该存储区域中读写信息。通过上述方法,虚拟机与电子设备可以利用该存储区域中进行数据交互,从而可以利用交互的数据作出资源分配与调度。
基于上述任意实施例所述的一种信息读写方法,本说明书实施例还提供了如图8所示的一种电子设备的结构示意图。该电子设备上运行有虚拟机。如图8,在硬件层面,该电子设备包括物理CPU、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述任意实施例所述的一种信息读写方法。
在一些实施例中,上述电子设备还可以是分布式系统中的电子设备。图9示出了一种分布式系统的示意图。分布式系统900可以包括多个电子设备,如图中示出的电子设备910-940。分布式系统可以用于对大数据进行维护和管理,分布式系统中的每个电子设备可以分别存储一部分数据,并对所存储的数据进行维护。在本实施例中,电子设备910-940中的至少部分可以运行有虚拟机,并执行上述任一实施例提供的一种信息读写方法。
基于上述任意实施例所述的一种信息读写方法,本说明书实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可用于执行上述任意实施例所述的一种信息读写方法。
基于上述任意实施例所述的一种信息读写方法,本说明书实施例还提供了一种计算机存储介质,存储介质存储有计算机程序,计算机程序被处理器执行时可用于执行上述任意实施例所述的一种信息读写方法。
上述对本说明书实施例特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书实施例的其它实施方案。本说明书实施例旨在涵盖本说明书实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书实施例的一般性原理并包括本说明书实施例未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书实施例的真正范围和精神由下面的权利要求指出。
Claims (13)
1.一种信息读写方法,应用于电子设备,所述电子设备运行有虚拟机,所述方法包括:
在所述虚拟机初始化时,由虚拟机内核程序在所述虚拟机的虚拟内存中创建用于存储信息的存储区域,并向虚拟寄存器发送所述存储区域的地址的写入指令;其中,在所述虚拟机运行过程中,由所述虚拟机内核程序在所述存储区域中读写信息;
由电子设备内核程序捕获所述写入指令,从所述写入指令中获取所述存储区域的地址,并基于所述地址在所述存储区域中读写信息。
2.根据权利要求1所述的方法,所述存储区域存储的信息包括:
所述虚拟机内核程序写入的虚拟CPU信息,以供所述电子设备内核程序读取;和/或
电子设备内核程序写入的物理CPU信息,以供所述虚拟机内核程序读取。
3.根据权利要求2所述的方法,所述电子设备包括至少一个物理CPU,所述虚拟机的虚拟CPU映射至所述至少一个物理CPU中的第一物理CPU上运行;所述方法还包括:
在所述虚拟机的运行过程中,若确定需要暂停所述虚拟CPU的运行,由所述电子设备内核程序暂停所述虚拟CPU映射至所述第一物理CPU,以使所述虚拟CPU暂停运行。
4.根据权利要求3所述的方法,所述虚拟CPU信息包括所述虚拟CPU的当前工作状态;所述工作状态包括内核态与用户态;所述若确定需要暂停所述虚拟CPU的运行,由所述电子设备内核程序暂停所述虚拟CPU映射至所述第一物理CPU,包括:
若确定需要执行所述电子设备发起的任务,由所述电子设备内核程序确定当前工作状态为用户态的虚拟CPU对应的目标物理CPU,并暂停所述目标物理CPU映射的虚拟CPU,以使所述目标物理CPU执行所述电子设备发起的任务。
5.根据权利要求3所述的方法,所述电子设备包括至少两个物理CPU,所述物理CPU信息包括所述第一物理CPU的信息;所述方法还包括:
若需要恢复所述虚拟CPU的运行,由所述电子设备内核程序读取在所述虚拟CPU被暂停前所述存储区域记录的第一物理CPU的信息,并将所述虚拟CPU重新映射至所述第一物理CPU。
6.根据权利要求5所述的方法,所述至少两个物理CPU共用末级缓存;所述末级缓存包括多个缓存子区域;所述物理CPU信息还包括分配给所述第一物理CPU的缓存子区域的区域信息;所述方法还包括:
由所述电子设备内核程序将与所述区域信息匹配的缓存子区域分配给所述第一物理CPU。
7.根据权利要求2所述的方法,所述虚拟机包括至少两个所述虚拟CPU,一个所述虚拟CPU对应一个所述用于存储虚拟CPU信息的存储区域;所述物理CPU信息包括映射所述虚拟CPU的物理CPU的负载信息,以使所述虚拟机根据所述负载信息向所述至少两个虚拟CPU分配任务。
8.根据权利要求1所述的方法,所述存储区域的地址为所述虚拟机中的物理地址;所述基于所述地址在所述存储区域中读写信息,包括:
将所述虚拟机中的物理地址转换为所述电子设备中的虚拟地址;
基于所述电子设备中的虚拟地址,在所述存储区域中读写信息。
9.一种信息读写方法,应用于电子设备,在所述电子设备上运行的虚拟机执行以下步骤:
在所述虚拟机初始化时,由虚拟机内核程序在所述虚拟机的虚拟内存中创建用于存储信息的存储区域,并向虚拟寄存器发送所述存储区域的地址的写入指令;以使电子设备内核程序捕获所述写入指令,从所述写入指令中获取所述存储区域的地址,并基于所述地址在所述存储区域中读写信息;
在所述虚拟机运行过程中,由所述虚拟机内核程序在所述存储区域中读写信息。
10.一种电子设备,运行有虚拟机,所述电子设备包括:
物理CPU;
用于存储处理器可执行指令的存储器;
其中,所述物理CPU调用所述可执行指令时实现权利要求1-9任一所述方法的操作。
11.一种分布式系统,所述分布式系统包括至少一个如权利要求10所述的电子设备。
12.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1-9任一所述方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时执行权利要求1-9任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210255744.2A CN114691297A (zh) | 2022-03-15 | 2022-03-15 | 一种信息读写方法、电子设备、分布式系统以及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210255744.2A CN114691297A (zh) | 2022-03-15 | 2022-03-15 | 一种信息读写方法、电子设备、分布式系统以及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691297A true CN114691297A (zh) | 2022-07-01 |
Family
ID=82139210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210255744.2A Pending CN114691297A (zh) | 2022-03-15 | 2022-03-15 | 一种信息读写方法、电子设备、分布式系统以及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691297A (zh) |
-
2022
- 2022-03-15 CN CN202210255744.2A patent/CN114691297A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740146B2 (en) | Migrating virtual machines between compute systems by transmitting programmable logic accelerator state | |
US10691363B2 (en) | Virtual machine trigger | |
CN105830026B (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
Chen et al. | Enabling FPGAs in the cloud | |
US8972991B2 (en) | Systems and methods for exposing processor topology for virtual machines | |
US8151275B2 (en) | Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS | |
US5553291A (en) | Virtual machine control method and virtual machine system | |
Nukada et al. | NVCR: A transparent checkpoint-restart library for NVIDIA CUDA | |
US9588787B2 (en) | Runtime virtual process creation for load sharing | |
US20080109812A1 (en) | Method for Managing Access to Shared Resources in a Multi-Processor Environment | |
Xue et al. | {gScale}: Scaling up {GPU} Virtualization with Dynamic Sharing of Graphics Memory Space | |
US20170031593A1 (en) | Maintaining guest input/output tables in swappable memory | |
US20190377612A1 (en) | VCPU Thread Scheduling Method and Apparatus | |
US10268595B1 (en) | Emulating page modification logging for a nested hypervisor | |
JP5030647B2 (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
US10467078B2 (en) | Crash dump extraction of guest failure | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
CN113377545A (zh) | 用于分配gpu物理内存的方法及装置 | |
CN116360925A (zh) | 一种半虚拟化实现方法、装置、设备及介质 | |
CN114691297A (zh) | 一种信息读写方法、电子设备、分布式系统以及程序产品 | |
KR100220496B1 (ko) | 프로세서 및 정보 처리 장치 | |
Lu et al. | gMig: Efficient vGPU live migration with overlapped software-based dirty page verification | |
US10795813B2 (en) | Implementing per-processor memory areas with non-preemptible operations using virtual aliases | |
US20230266992A1 (en) | Processor for managing resources using dual queues, and operating method thereof | |
CN116048729A (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 |