CN116028164A - 设备虚拟化方法以及装置 - Google Patents
设备虚拟化方法以及装置 Download PDFInfo
- Publication number
- CN116028164A CN116028164A CN202310325561.8A CN202310325561A CN116028164A CN 116028164 A CN116028164 A CN 116028164A CN 202310325561 A CN202310325561 A CN 202310325561A CN 116028164 A CN116028164 A CN 116028164A
- Authority
- CN
- China
- Prior art keywords
- virtual
- equipment
- information
- virtual machine
- target
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本说明书实施例提供设备虚拟化方法以及装置,其中所述设备虚拟化方法包括:读取待虚拟化设备的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。实现了对待虚拟化设备进行虚拟化,以便对虚拟机中的进程进行资源管理。
Description
技术领域
本说明书实施例涉及数据处理技术领域,特别涉及设备虚拟化方法及装置。
背景技术
在公有云场景及混部等场景下,不同负载之间在共享资源的使用上存在竞争关系。一个工作负载对共享的资源占用会对其他工作负载的性能产生影响,从而出现嘈杂邻居问题。因此如何更好地实现共享资源的隔离和控制,减少不同工作负载之间因资源竞争造成的性能干扰,是提高资源利用率和服务稳定性的重要一环。目前具有缓存和内存带宽等共享资源的隔离和监测功能的硬件设备的使用多限于物理机。因此亟需提供一种解决上述问题的方案。
发明内容
有鉴于此,本说明书实施例提供了两种设备虚拟化方法。本说明书一个或者多个实施例同时涉及一种设备虚拟化系统,两种设备虚拟化装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种设备虚拟化方法,应用于宿主机,包括:
读取待虚拟化设备的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
根据本说明书实施例的第二方面,提供了另一种设备虚拟化方法,应用于宿主机,其中,所述宿主机装载配置内存系统组件的处理器,包括:
读取所述内存系统组件的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
基于所述设备信息创建所述内存系统组件对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
根据本说明书实施例的第三方面,提供了一种设备虚拟化装置,应用于宿主机,包括:
第一读取模块,被配置为读取待虚拟化设备的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
第一创建模块,被配置为基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
第一添加模块,被配置为根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
第一生成模块,被配置为通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
根据本说明书实施例的第四方面,提供了另一种设备虚拟化装置,应用于宿主机,其中,所述宿主机装载配置内存系统组件的处理器,包括:
第二读取模块,被配置为读取所述内存系统组件的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
第二创建模块,被配置为基于所述设备信息创建所述内存系统组件对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
第二添加模块,被配置为根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
第二生成模块,被配置为通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
根据本说明书实施例的第五方面,提供了一种设备虚拟化系统,包括:
虚拟化驱动模块和虚拟机,
所述虚拟化驱动模块用于存储虚拟设备节点生成可执行指令,所述虚拟机用于存储虚拟设备生成可执行指令,所述虚拟设备节点生成可执行指令被所述虚拟化驱动模块执行,以及所述虚拟设备生成可执行指令被所述虚拟机执行时,实现所述设备虚拟化方法的步骤。
根据本说明书实施例的第六方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述设备虚拟化方法的步骤。
根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述设备虚拟化方法的步骤。
根据本说明书实施例的第八方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述设备虚拟化方法的步骤。
本说明实施例提供的设备虚拟化方法,应用于宿主机,为了实现待虚拟化设备的虚拟化,从而实现对虚拟机中进程进行资源管理。通过读取待虚拟化设备的设备信息,并在设备信息中确定虚拟机对应的目标分区标识;基于设备信息创建待虚拟化设备对应的虚拟化设备信息,并基于目标分区标识对虚拟化设备信息进行配置,获得目标虚拟化设备信息,实现了将待虚拟化设备的设备信息暴露到用户态;根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,实现了将目标虚拟设备信息转换为虚拟机可识别的信息格式;通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理,实现了将待虚拟化设备进行虚拟化,以便对虚拟机中的进程粒度进行资源管理。
附图说明
图1是本说明书一个实施例提供的一种设备虚拟化方法的示意图;
图2是本说明书一个实施例提供的一种设备虚拟化方法的流程图;
图3是本说明书一个实施例提供的另一种设备虚拟化方法的流程图;
图4是本说明书一个实施例提供的一种设备虚拟化方法中虚拟MSC设备的创建过程的示意图;
图5是本说明书一个实施例提供的一种设备虚拟化方法中虚拟MSC设备透传到虚拟机的示意图;
图6是本说明书一个实施例提供的一种设备虚拟化方法中MPAM系统寄存器的存储以及恢复过程的示意图;
图7是本说明书一个实施例提供的一种设备虚拟化方法中虚拟机对MSC设备的读写过程的处理过程流程图;
图8是本说明书一个实施例提供的一种设备虚拟化装置的结构示意图;
图9是本说明书一个实施例提供的另一种设备虚拟化装置的结构示意图;
图10是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
MPAM(Memory System Resource Partitioning And Monitoring,内存系统资源隔离和监测):是ARM64架构下的内存资源隔离和监测特性。
MSC(Memory System Component,内存系统组件):为MPAM特性中的概念。MSC为负责MPAM资源管控的硬件单元,在内核中以platform(平台)设备形式存在。
PARTID(分区标识):MPAM中的概念,为MSC设备进行资源隔离的基本单位。
MMIO(Memory-mapped I/O,内存映射输入/输出),它是PCI(PeripheralComponent Interconnect,局部总线标准)规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存一样。
PMG:MPAM中的概念,为MSC设备进行资源监测的基本单位。
VFI0(Virtual Function I/O,虚拟功能输入/输出):是在Linux内核中引入的一种设备透传框架,支持PCIe、平台等设备的透传。
VFIO-mdev(VFIO Mediated Device,VFIO中介设备):VFIO-mdev在vfio框架的基础上,在软件上实现了将一个物理设备分享给多个虚拟机使用的能力。
混部:将不同类型和特征的任务跑在相同物理集群上,通过调度、资源隔离等控制手段,在保障稳定性的基础上,达到充分利用服务器资源的目的。
resctrl文件系统:存在于Linux内核中,其提供了RDT特性的用户态接口。
RDT:全称为Resource Director Technology,为x86架构下的特性,提供了Cache和内存带宽的隔离和监测能力。
宿主机(host):对应虚拟化场景中直接运行在物理资源上的物理机。
虚拟机(guest):对应虚拟化场景中运行在宿主机之上的虚拟机。
虚拟机监测器(VMM,Virtual machine monitor):是一个系统软件,可以维护多个高效的、隔离的程序环境,该环境支持用户直接去访问真实硬件,而这样的程序环境就称为虚拟机。虚拟机是一个真实存在的计算机系统的硬软件副本,其中部分虚拟处理器指令子集以本地(native)方式执行在宿主机上,其他部分指令以仿真方式执行。从以上定义可以看出,VMM管理计算机系统的真实资源,为虚拟机提供接口。
在本说明书中,提供了两种设备虚拟化方法,本说明书同时涉及一种设备虚拟化系统,两种设备虚拟化装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1所示的示意图,本说明实施例提供的设备虚拟化方法,应用于宿主机,为了实现待虚拟化设备的虚拟化,从而实现对虚拟机中进程进行资源管理,在服务端接收到用户提交的针对待虚拟化设备的虚拟化请求的情况下,通过读取待虚拟化设备的设备信息,其中,设备信息中包括目标分区标识;基于设备信息创建待虚拟化设备对应的虚拟化设备信息,实现了构建用户态的虚拟化设备信息,并通过对所述虚拟化设备信息配置所述目标分区标识,获得目标虚拟化设备信息,实现了对虚拟化设备信息的分区标识配置;再根据目标虚拟化设备信息构建设备树,实现了将目标虚拟化设备信息转换为虚拟机可识别的信息格式,并通过虚拟机解析设备树,根据解析结果在虚拟机中生成待虚拟化设备对应的虚拟设备,其中,虚拟设备用于对虚拟机中的进程进行资源管理,实现了将待虚拟化设备进行虚拟化,并在虚拟机中的进程级别进行资源管理。
参见图2,图2示出了根据本说明书一个实施例提供的一种设备虚拟化方法的流程图,应用于宿主机,具体包括以下步骤。
步骤202:读取待虚拟化设备的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识。
具体的,宿主机,是指装载待虚拟化设备的物理机,该宿主机中可以安装至少一个虚拟机。其中,待虚拟化设备,是指需要进行虚拟化的设备,通过将设备虚拟化,可以将该设备的功能透传给虚拟机使用。具体的,该待虚拟化设备,用以对操作系统中的进程进行资源管理。相应的,设备信息,是指与待虚拟化设备相关的属性、状态、功能等信息。比如,该设备信息包括:设备所管理的资源类型(如cache或内存带宽等),设备所管理的设备标识、设备所支持的分区标识信息、MMIO空间信息、中断信息等。
目标分区标识,是指在待虚拟化设备的设备信息中包含的分区标识中划分出的一部分或全部的分区标识。该目标分区标识的数量可以是一个或多个。该目标分区标识用以分配给虚拟机,也可以理解为将该目标分区标识提供虚拟化后的设备使用。其中,分区标识是待虚拟化设备进行资源隔离的基本单位。将目标分区标识分配给虚拟机后,以便实现虚拟化后的设备基于该目标分区标识对虚拟机中的进程进行资源管理。具体的,资源管理包括对进程进行缓存和/或内存带宽等资源的分配、调度、隔离以及监测等管理。
实际应用中,待虚拟化设备的设备信息中可能一部分存储于内核中,一部分存储于设备文件中,此外,还有可能可以存储于设备寄存器中,因此,在读取待虚拟化设备的设备信息时,可以在以上这些位置读取设备信息。
进一步的,考虑到待虚拟化设备和待虚拟后的设备可能都需要分区标识用以支持其进行资源管理,如果将全部的分区标识分配给虚拟机,将影响待虚拟化设备对宿主机中的进程进行资源管理。因此,本说明书实施例中,所述在所述设备信息中确定虚拟机对应的目标分区标识,具体实现如下所示:
在所述设备信息中提取分区标识;
基于所述分区标识以及预设标识划分策略,确定虚拟机对应的目标分区标识。
具体的,预设标识划分策略,是指预先设置的对分区标识进行划分的策略,通过该预设标识划分策略从分区标识中划分出分配给虚拟机使用的目标分区标识。该预设标识划分策略可以是将待虚拟化设备所支持的分区标识按照预设的比例进行划分,从而根据该划分比例确定虚拟机对应的目标分区标识。此外,该预设标识划分策略,还可以是在分区标识中划分出从第i分区标识后的分区标识作为目标分区标识等。实际应用中,该预设标识划分策略可以根据实际需求进行设置,在此不做限制。
以待虚拟化设备为MPAM特性下的MSC设备进行举例说明,获取MSC设备的设备信息,并提取设备信息中的分区标识,所提取的分区标识为0,1,2……63。在预设标识划分策略为分配分区标识中31之后的分区标识给虚拟机使用,则将分区标识32,33,……63确定为虚拟机对应的目标分区标识。
综上,按照预设标识划分策略从待虚拟化设备的分区标识中划分出需要分配给虚拟机使用的目标分区标识,实现了给虚拟机分配其所需的分区标识,并给宿主机保留了其所需的分区标识,使虚拟机和宿主机都可使用待虚拟化设备的资源管理特性,此外还增加了分区标识划分的灵活性,并保障了分区标识划分的合理性。
步骤204:基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息。
具体的,在上述读取待虚拟化设备的设备信息的基础上,考虑到存储于内核态的设备信息,因此无法被运行于用户态的程序访问,本说明书实施例中,需要基于设备信息创建待虚拟化设备对应的可供用户态的程序访问的目标虚拟化设备信息。
其中,虚拟化设备信息,是指用以创建待虚拟化设备对应的虚拟化后的设备的信息。该虚拟化设备信息可以理解为可供用户态的程序可以访问的设备信息。相应的,目标虚拟化设备信息,是指对虚拟化设备信息配置目标分区标识的相关信息后生成的设备信息。具体实施时,基于设备信息创建待虚拟化设备对应虚拟化设备信息,可以是通过向用户态暴露相关的数据读取接口,以便用户态运行的应用程序可以通过该数据读取接口访问待虚拟化设备的设备信息,并将其访问的设备信息作为虚拟化设备信息。或者将设备信息以预设的结构形式(内容结构或目录结构)进行组装,生成可供在用户态运行的应用程序访问的信息。
在创建虚拟化设备信息的基础上,基于目标分区标识对虚拟化设备信息进行配置,具体实施时,可以直接将目标分区标识存储至虚拟化设备信息中的设定位置,此外,还可以将目标分区标识关联的信息(比如数目、偏移量等)存储至虚拟化设备信息中。实际应用中,可以根据实际需求进行配置,在此不做限制。
实际应用中,考虑到宿主机中可能安装了多个虚拟机,每个虚拟机都需要对其内运行的进程进行资源管理,因此,需要针对每个虚拟机进行该待虚拟化设备的透传。在此基础上,可以为每个虚拟机创建对应的虚拟化设备信息。且为了避免这些虚拟机之间产生干扰,在基于目标分区标识进行配置时,也需要避免针对各个虚拟机所配置的分区标识之间产生重叠。
比如:设备信息确定的目标分区标识为32……63,虚拟机包括虚拟机A以及虚拟机B,为了实现对这两个虚拟机内的进程进行资源管理,需要将其中24个目标分区标识配置至虚拟机A,并将其余8个分配至虚拟机B。因此,将为虚拟机A创建的虚拟化设备信息中配置24个目标分区标识,并为虚拟机B创建的虚拟化设备信息中配置其余的8个目标分区标识。
进一步的,为了保障虚拟化后的设备的可用性,需要保障虚拟化设备信息的准确性以及全备性,还可以编写针对待虚拟化设备的新的内核模块,即虚拟化驱动,并通过该虚拟化驱动实现透传至虚拟机的虚拟子设备的构建。本说明书实施例中,所述基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息,具体通过如下步骤实现:
步骤20402:基于所述设备信息,创建所述目标设备对应的虚拟父设备类,其中,所述虚拟父设备类中包含子设备类型以及所述子设备类型对应的创建接口。
具体的,虚拟父设备类,是指待虚拟化设备对应的未实例化的虚拟的设备模板。该虚拟父设备类用以创建具体虚拟子设备实例并进行虚拟分区标识的分配。子设备类型,是指待创建的虚拟子设备实例的类型。实际应用中,可以根据预计分配的虚拟分区标识数目的不同,划分出不同的子设备类型。假设预计分配给待创建的虚拟子设备实例A以及虚拟子设备B的虚拟分区标识数目为16,则虚拟子设备实例A和虚拟子设备实例B对应一种子设备类型,预计分配给待创建的虚拟子设备实例C的虚拟分区标识数目为8,则虚拟子设备实例C对应另一种子设备类型。
其中,虚拟分区标识数目,是指虚拟分区标识的数目;相应的,虚拟分区标识,是指提供给虚拟机使用的虚拟的分区标识。实际应用中,虽然给虚拟机分配了对应的目标分区标识,但通常这些目标分区标识并不直接提供给虚拟机使用,而是将与目标分区标识存在对应关系的虚拟分区标识分配给虚拟机使用。
创建接口,是指通过虚拟父设备类的设备文件暴露到用户态的,可供用户态访问的用于实例化虚拟父设备类的接口。该创建接口,可以存在于虚拟化父设备类的设备文件中。
进一步的,考虑到虚拟父设备类还需要对创建的虚拟子设备实例进行虚拟分区标识的分配,因此,本说明书实施例中,所述基于所述设备信息,创建所述目标设备对应的虚拟父设备类,包括:
构建所述目标分区标识和预设虚拟分区标识之间的映射关系;
基于所述设备信息,创建所述目标设备对应的初始虚拟父设备类,并将所述映射关系存储至所述初始虚拟父设备类,获得虚拟父设备类。
具体的,预设虚拟分区标识,是指预先设置的虚拟分区标识。由于虚拟分区标识是虚拟的,因此其需要预先设置。映射关系,是指目标分区标识和预设虚拟分区标识之间的关联关系。实际应用中,构建该映射关系可以是通过直接映射的方式构建,比如目标分区标识映5映射虚拟分区标识1;该映射关系也可以是通过表达式映射的方式进行构建,比如目标分区标识=预设虚拟分区标识+8等,在此不做限制。此外,该映射关系,也可以通过填充待虚拟化设备对应的分区标识映射寄存器,创建目标分区标识和预设虚拟分区标识之间的映射关系,在此不做限制。该初始虚拟父设备类,是指未存储映射关系之前的虚拟父设备类。
实际应用中,映射关系可以表示为如下表达式:
ppartid = vpartid + physical_partid_offset,其中,ppartid表示目标分区标识,vpartid表示虚拟分区标识,physical_partid_offset表示物理分区标识偏移量。
基于此,在上述读取待虚拟化设备的设备信息的基础上,基于设备信息创建初始虚拟父设备类。并将映射关系存储至初始虚拟父设备类,生成虚拟父设备类,至此可以理解为完成虚拟父设备类的创建,以便基于创建的虚拟父设备类创建对应的虚拟子设备实例。
综上,通过将构建目标分区标识和预设虚拟分区标识之间的映射关系,存储至初始虚拟父设备类,以便后续虚拟父设备类可以基于配置的映射关系,实现对虚拟子设备实例的虚拟分区标识的分配。
步骤20404:调用所述创建接口创建所述子设备类型对应的初始虚拟子设备实例,并将所述初始虚拟子设备实例的初始子设备信息作为虚拟化设备信息。
具体的,初始虚拟子设备实例,可以理解为未初始化之前的可以透传至虚拟机的虚拟子设备。相应的,初始子设备信息,是指初始虚拟子设备实例的设备信息。
由于待虚拟化设备的设备信息通常为内核态,无法被运行于用户态的应用程序访问。因此,在待虚拟化设备实现虚拟化的过程中,需要基于待虚拟化设备的设备信息构建可以透传至虚拟机的虚拟子设备实例。本说明书实施例,先基于待虚拟化设备的设备信息创建用户态可以访问的虚拟父设备类。具体的,该虚拟父设备类中可以包含虚拟化过程中所需的待虚拟化设备中的设备信息。进一步的,为了对该虚拟父设备类进行实例化,该虚拟父设备类需要提供针对初始虚拟子设备实例创建接口,并通过该创建接口对应的创建函数创建初始虚拟子设备实例。并将初始虚拟子设备实例的初始子设备信息作为虚拟化设备信息。
以待虚拟化设备为MPAM特性下的MSC设备进行举例说明,读取MSC设备的设备信息dev-infor,并基于设备信息dev-infor创建初始虚拟化父设备类ipdev。并在目标分区标识为32,33,……63,预设虚拟分区标识为0,1,……31的基础上,构建目标分区标识和预设虚拟分区标识之间的映射关系map为:目标分区标识=虚拟分区标识+32。将该映射关系map存储至初始虚拟化父设备类ipdev,生成虚拟化父设备类pdev。再调用虚拟化父设备类pdev中的创建接口create(),创建初始虚拟MSC子设备实例imdev,并将初始虚拟MSC子设备实例imdev的初始子设备信息imdev-infor,并将初始子设备信息imdev-infor作为虚拟化设备信息。
综上,通过创建待虚拟化设备对应的虚拟化父设备类,并通过虚拟化父设备类中的创建接口创建初始虚拟子设备实例,实现了可透传至虚拟机的初始虚拟子设备实例的创建,为后续对创建待虚拟化设备对应的虚拟设备提供了信息基础。
进一步的,在上述创建虚拟子设备实例的基础上,为了保障在虚拟机中可以基于所分配的目标分区标识实现对其中进程的资源管理,还需要基于目标分区标识对虚拟子设备实例进行配置,本申请实施例中,所述基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息,具体实现如下:
根据所述映射关系以及所述子设备类型,确定所述初始虚拟化子设备实例对应的虚拟分区标识数目以及虚拟分区标识偏移量;
将所述虚拟分区标识数目以及所述虚拟分区标识偏移量配置至所述初始虚拟子设备实例,获得虚拟子设备实例,将所述虚拟子设备实例的子设备信息作为目标虚拟化设备信息。
具体的,虚拟分区标识偏移量,是指虚拟机中较小的预设虚拟分区标识与初始虚拟分区标识(比如预设虚拟分区标识是从0开始,则0则为初始虚拟分区标识)之间的偏移。
由于子设备类型可以是根据虚拟分区标识数目进行划分获得的,因此,根据子设备类型即可直接确定其对应的虚拟分区标识数目,比如子设备类型T1对应的虚拟分区标识数目24,子设备类型T2对应的虚拟分区标识数目8。
在存在一个虚拟机的情况下,根据子设备类型即可确定待创建的虚拟子设备实例对应的虚拟分区标识数目,根据映射关系中较小的预设虚拟分区标识的值即可确定待创建的虚拟子设备实例对应的虚拟分区标识偏移量。
在存在多个虚拟机,根据子设备类型确定待创建的虚拟子设备实例对应的虚拟分区标识数目之后,需要根据虚拟分区标识数目以及映射关系,进一步确定待创建的虚拟子设备实例对应的虚拟分区标识偏移量。
比如:映射关系为目标分区标识31对应预设虚拟分区标识0,目标分区标识32对应预设虚拟分区标识1,以此类推,目标分区标识63对应预设虚拟分区标识31,在存在虚拟机A以及虚拟机B的情况下,虚拟机A对应的子设备类型T1对应的虚拟分区标识数目为24,虚虚拟机B对应的子设备类型T2对应的虚拟分区标识数目为8。假设子设备类型T1对应的初始虚假子设备实例imdevA对应的预设虚拟分区标识从0开始,则初始虚假子设备实例imdevA对应的虚拟分区标识偏移量为0。将虚拟分区标识数目24以及虚拟分区标识偏移量0配置至初始虚拟子设备实例imdevA中,获得虚拟子设备实例mdevA;则子设备类型T2对应的虚假子设备实例imdevB对应的虚拟分区标识偏移量为24。将虚拟分区标识数目8以及虚拟分区标识偏移量24配置至初始虚拟子设备实例imdevB中,获得虚拟子设备实例mdevB,将虚拟子设备实例mdevA以及虚拟子设备实例mdevB的子设备信息作为目标虚拟化设备信息。
在待虚拟化设备为MPAM MSC设备的情况下,完整的系统模型中一般拥有多个MSC设备,分别负责管理不同资源。因此,MSC设备对应的虚拟子设备实例的子设备信息中还可以包括该虚拟子设备实例所管理的设备类型,如cache或内存带宽,以及虚拟子设备实例所管理的设备标识。
需要说明的是,为了实现对待虚拟化设备的设备信息的读写,目标虚拟化设备信息中通常除了暴露到用户态的待虚拟化设备的设备信息之外,还包括暴露到用户态的设备读写接口,以便基于该设备读写接口实现对待虚拟化设备的读写处理。
综上,通过将虚拟分区标识数目以及虚拟分区标识偏移量配置至初始虚拟子设备实例中,实现了对初始虚拟子设备实例的初始化,也提供了可透传至虚拟机的虚拟分区标识信息。
步骤206:根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点。
具体的,在生成目标虚拟化设备信息的基础上,考虑到目标虚拟化设备信息可能不是虚拟机可识别的设备信息格式。因此,需要根据目标虚拟化设备信息创建虚拟设备节点,并将虚拟设备节点添加至虚拟机对应的设备树中,以便将设备树提供给虚拟机进行识别。
其中,设备树,是采用树形结构来描述设备信息的文件。每个待透传至虚拟机的设备,都该设备树以虚拟设备节点的形式存在于设备树中。具体实施时,根据目标虚拟化设备信息在创建虚拟设备节点,再将创建的虚拟设备节点添加至虚拟机对应的设备树中。此外,还可以基于目标虚拟化设备信息以及用以构造设备树的信息一同构建设备树,其中目标虚拟化设备信息用于构造的设备树中的虚拟设备节点。实际应用中,虚拟设备节点的节点信息可以采用键—值对的形式进行表示。
虚拟设备节点,是指目标虚拟化设备信息在设备树中对应的以节点形式存在的设备节点。
此外,在存在多个虚拟机的情况下,由于不同虚拟机所分配的虚拟分区标识是不同的,因此虚拟机监测器还需要基于虚拟子设备实例中的虚拟分区标识信息维护不同虚拟机的虚拟分区标识偏移量,并将该虚拟分区标识偏移量传递给对应的虚拟机。
具体实施时,由于虚拟机通常无法独立运行,而是需要在虚拟机监测器中运行。因此需要虚拟机监测器可以作为虚拟机与宿主机通信的桥梁,本说明书实施例中,所述根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,包括:
通过虚拟机监测器调用所述虚拟子设备实例中的数据读取接口,获取所述目标虚拟化设备信息;
基于目标虚拟化设备信息构建虚拟设备节点,并将所述虚拟设备节点添加至所述虚拟机对应的设备树。
具体的,虚拟机监测器(VMM)是安装在物理硬件上的软件层,可以将物理机通过虚拟化分成至少一个虚拟机。相应的,数据读取接口,是指用以读取目标虚拟化信息的接口。该数据读取接口可以是自定义的接口,也可以是对现有接口进行修改后获得的接口,在此不做限制。
基于此,在获得目标虚拟化设备信息的基础上,为了将目标虚拟化设备信息转换为虚拟机可识别的设备格式信息,通过虚拟机监测器调用虚拟子设备实例中暴露的数据读取接口,获取目标虚拟化信息,并基于目标虚拟化设备信息构建虚拟对应的设备树中的虚拟设备节点,以便虚拟机可以通过解析设备树进行虚拟设备的创建以及初始化。
在获得目标虚拟化设备信息的基础上,通过VMM调用虚拟子设备实例mdev提供的数据读写接口读取目标虚拟化设备信息mdev-infor,并将读取目标虚拟化设备信息mdev-infor用以构建为虚拟设备节点N,将该虚拟设备节点N添加至虚拟机对应的设备树T中。
综上,通过虚拟机监测器调用通过虚拟子设备实例对应的设备文件暴露到用户态的数据读取接口,将目标虚拟化设备信息构建为设备树中的虚拟设备节点,提供了虚拟机可识别的设备信息格式,并且由于虚拟机监测器与虚拟机之间通信的便宜性,潜在地提升了虚拟设备的创建效率。
步骤208:通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
具体的,在上述构建设备树的基础上,由于虚拟机可直接识别该设备树,因此,通过虚拟机解析该设备树,并根据解析结果在虚拟机中生成待虚拟化设备对应的虚拟设备。
其中,虚拟设备,是指待虚拟化设备对应的可供虚拟机使用的设备。进程是具有独立功能的程序在数据集上的动态执行的过程,是操作系统进行资源分配和调度的独立单位,是应用程序运行的载体。具体实施时,由于虚拟机中具备解析设备树的解析程序,因此通过该解析程序即可实现对设备树的解析,通过解析程序中的设备驱动解析设备树中的虚拟设备节点,从而创建待虚拟化设备对应的虚拟设备。实际应用中,由于通常虚拟设备节点中还包括对虚拟设备进行初始化和配置的信息,因此,在解析设备树从而创建虚拟设备的过程中,还包括对虚拟设备的初始化以及配置。
具体实施,可以在虚拟机的启动过程中,虚拟机中的设备驱动识别并解析设备树中的虚拟设备节点,根据解析结果创建虚拟设备,并完成对虚拟设备的初始化及配置工作。此外,虚拟机还需要基于虚拟机监测器传递的虚拟分区标识偏移,完成自身虚拟分区标识的设置。
该虚拟设备以所分配的目标分区标识进行资源管理的基本单位实现对进程的资源管理,具体的,对进程进行资源管理,可以包括对进程中的线性进行资源管理。
在上述生成虚拟设备的基础上,考虑到虚拟机根据解析结果在所述虚拟机中生成所述待虚拟化设备对应的虚拟设备之后,还包括:
通过所述虚拟机挂载所述虚拟设备对应的资源管理文件,并按照预设资源管理策略,对所述资源管理文件进行配置;
通过所述虚拟机监测器确定所述待虚拟化设备对应的目标虚拟化寄存器,并对所述目标虚拟化寄存器进行虚拟化配置。
具体的,资源管理文件,是指可以用以对虚拟设备进行配置的文件。在待虚拟化设备为虚拟化的MSC设备的情况下,该资源管理文件,可以为resctrl文件系统,MPAM特性对该文件系统进行了复用。resctrl文件系统以rdtgroup为单位提供了缓存(Cache)和内存带宽资源管控的用户态接口,每一个rdtgroup对应MPAMMSC设备中的一个PARTID。该resctrl文件系统中的主要目录有4个:schemata:该目录包含了该rdtgroup对应的资源管控方案;mon_data:该目录下包含了该rdtgroup对应的不同资源监测接口;tasks:该目录包含了该rdtgroup管控的task的pid;cpus/cpus_list:该目录包含了该rdtgroup管控的CPU。预设资源管理策略,是指预先设置的对虚拟机中进程进行资源管理的策略。通过对上述主要目录中相关信息的配置即可理解为通过资源管理文件完成虚拟设备的资源管理配置。具体的,资源管理配置包括:cache及内存带宽资源隔离的配置和资源监测值(PMG)的获取。实际应用中,MPAM MSC设备为资源访问请求添加了PARTID和PMG标识,MSC设备可以对这些标识进行区分处理,进而实现资源的隔离和监测功能。
目标虚拟化寄存器,是指对待虚拟化设备进行虚拟化配置的寄存器。
基于此,为了实现对虚拟设备的预配置,可以在虚拟机中挂载虚拟设备对应的资源管理文件,并通过对资源管理文件进行配置实现对虚拟设备的资源管理配置,并通过对目标虚拟化寄存器进行虚拟化设置,可以在寄存器级别实现虚拟设备的虚拟化设置。
比如:在虚拟机中挂载resctrl文件系统,并在resctrl文件系统中的schemata、mon_data、tasks等目录中分别进行MSC虚拟设备的资源管理配置,并对处理器中MPAM特征对应的寄存器进行虚拟化配置。
综上,通过对资源管理文件进行配置,并对目标虚拟化寄存器进行虚拟化设置,实现了在虚拟设备的预配置,保障了虚拟设备的设备功能的可使用性。
进一步的,所述对所述目标虚拟化寄存器进行虚拟化设置,具体实现如下所示:
将所述映射关系配置至目标虚拟化寄存器中的分区标识映射寄存器;
对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理。
虚拟化映射寄存器,是指用以开启分区标识映射功能的寄存器。将该虚拟化映射寄存器进行置位处理,可以理解为对该虚拟化映射寄存器中否开启映射的配置参数进行置位。分区标识映射寄存器,是指存储目标分区标识和预设虚拟分区标识之间的映射关系的寄存器。
在待虚拟化设备为MPAM MSC设备的情况下,通过虚拟机监测器确定MPAM MSC设备对应的MPAM特性相关的配置寄存器作为目标虚拟化寄存器。其中,虚拟化映射寄存器为MPAMHCR_EL2寄存器,其中是否开启映射的配置参数为EL0_VPMEN和EL1_VPMEN,将MPAMHCR_EL2寄存器中的EL0_VPMEN和EL1_VPMEN置为1,即可实现将对来自虚拟机的 MPAM0_EL1和MPAM1_EL1虚拟分区标识寄存器中的虚拟分区标识进行映射。分区标识映射寄存器MPAM_VPM0_EL2~MPAM_VPM7_EL2,将预先构造的构造vPARTID(预设虚拟分区标识)到pPARTID(目标分区标识,也即物理分区标识)的映射关系,存储至该分区标识映射寄存器。
此外,对目标虚拟化寄存器的设置,还包括对其中的发现寄存器中的陷入参数进行虚拟化配置。发现寄存器是指用以设置是否将虚拟机对EL1的访问陷入到EL2来处理。在待虚拟设备为MPAM MSC设备的情况下,发现寄存器为MPAMIDR_EL1寄存器。相应的,陷入参数是指参数TRAP_MPAMIDR_EL1,该陷入参数可以控制从MPAMIDR_EL1对发现寄存器的此类访问是否陷入到MPAMIDR_EL2。
综上,通过对目标虚拟化寄存器的虚拟化设置,可以实现对应用于虚拟机的虚拟分区标识的映射功能,以便基于映射的目标分区标识在虚拟机中的进程级别进行资源管理。
在上述完成对虚拟设备的预配置之后,为了对可以使用该虚拟设备对虚拟机中的进程进行资源管理。本说明书实施例中,所述对所述目标虚拟化寄存器进行虚拟化设置之后,还包括:
在所述虚拟机被中断的情况下,确定所述虚拟机在所述目标虚拟化寄存器中对应的虚拟分区标识寄存器;将所述虚拟分区标识寄存器中存储的虚拟分区标识进行存储,获得虚拟分区标识存储信息;
在所述虚拟机被调度的情况下,获取所述虚拟分区标识存储信息,并基于所述虚拟分区标识存储信息对所述虚拟分区标识寄存器进行赋值。
具体的,虚拟机被中断,可以理解为处理器从虚拟机模式切换到宿主机模式。虚拟分区标识存储信息,是指虚拟分区标识寄存器中的虚拟分区标识相关的信息。该虚拟分区标识存储信息中可以包括虚拟分区标识以及该虚拟分区标识对应的虚拟分区标识寄存器的标识信息。相应的,虚拟机被调度,可以理解为处理器从宿主机模式切换到虚拟机模式。
由于处理器从虚拟机模式切换到宿主机模式时,并不会自动保存虚拟机相关联的部分寄存器的值。因此,当发生虚拟机退出(即虚拟机被中断)时,需要先将虚拟相关联的虚拟分区标识寄存器中的虚拟分区标识进行存储。当处理器从宿主机模式切换到虚拟机模式,也不会自动将存储值恢复至虚拟机相关联的部分寄存器。因此,当发生虚拟机载入(即虚拟机被调度)时,需要基于存储的虚拟分区标识存储信息对虚拟分区标识寄存器进行赋值。对携带虚拟分区标识的虚拟分区标识寄存器中的虚拟分区标识进行存储和恢复可以通过虚拟机监测器完成。
在待虚拟化设备为MPAM MSC设备的情况下,虚拟分区标识寄存器包括:MPAM0_EL1和MPAM1_EL1。而由于在MPAM虚拟化驱动中已经基于预设分区标识划分策略完成了虚拟分区标识和物理分区标识的映射,因此MPAM特性对应的分区标识映射寄存器无需在虚拟机被中断和调度时被虚拟机监测器进行存储和恢复,从而大大加快了虚拟机被中断和调度的效率。
比如,在虚拟机A被中断的情况下,将虚拟分区标识寄存器MPAM0_EL1中存储的虚拟分区标识进行存储,获得虚拟分区存储信息t1。在该虚拟机A被调度时,再虚拟分区存储信息t1中的存储的虚拟分区标识赋值至虚拟分区标识寄存器MPAM0_EL1中。
综上,通过对虚拟分区标识寄存器中的虚拟分区标识进行存储和恢复,保障了虚拟机的访问请求携带正确的虚拟分区标识,并避免与宿主机对应的分区标识相冲突。
本说明实施例提供的设备虚拟化方法,应用于宿主机,为了实现待虚拟化设备的虚拟化,从而实现对虚拟机中进程进行资源管理。通过读取待虚拟化设备的设备信息,并在设备信息中确定虚拟机对应的目标分区标识;基于设备信息创建待虚拟化设备对应的虚拟化设备信息,并基于目标分区标识对虚拟化设备信息进行配置,获得目标虚拟化设备信息,实现了将待虚拟化设备的设备信息暴露到用户态;根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,实现了将目标虚拟设备信息转换为虚拟机可识别的信息格式;通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理,实现了将待虚拟化设备进行虚拟化,以便对虚拟机中的进程粒度进行资源管理。
参见图3,图3示出了根据本说明书一个实施例提供的另一种设备虚拟化方法的流程图,应用于宿主机,其中,所述宿主机装载配置内存系统组件的处理器,具体包括以下步骤。
步骤302:读取所述内存系统组件的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
步骤304:基于所述设备信息创建所述内存系统组件对应的虚拟化设备信息,并通过对所述虚拟化设备信息配置所述目标分区标识,获得目标虚拟化设备信息;
步骤306:根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
步骤308:通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
可选地,所述在所述设备信息中确定虚拟机对应的目标分区标识,包括:
在所述设备信息中提取分区标识;
基于所述分区标识以及预设标识划分策略,确定虚拟机对应的目标分区标识。
可选地,所述基于所述设备信息创建所述内存系统组件对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息,包括:
基于所述设备信息,创建所述目标设备对应的虚拟父设备类,其中,所述虚拟父设备类中包含子设备类型以及所述子设备类型对应的创建接口;
通过调用所述创建接口创建所述子设备类型对应的初始虚拟子设备实例,并将所述初始虚拟子设备实例的初始子设备信息作为虚拟化设备信息。
可选地,所述基于所述设备信息,创建所述目标设备对应的虚拟父设备类,包括:
构建所述目标分区标识和预设虚拟分区标识之间的映射关系;
基于所述设备信息,创建所述目标设备对应的初始虚拟父设备类,并将所述映射关系存储至所述初始虚拟父设备类,获得虚拟父设备类。
可选地,所述基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息,包括:
根据所述映射关系以及所述子设备类型,确定所述初始虚拟化子设备实例对应的虚拟分区标识数目以及虚拟分区标识偏移量;
将所述虚拟分区标识数目以及所述虚拟分区标识偏移量配置至所述初始虚拟子设备实例,获得虚拟子设备实例,将所述虚拟子设备实例的子设备信息作为目标虚拟化设备信息。
可选地,所述根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,包括:
通过虚拟机监测器调用所述虚拟子设备实例中的数据读取接口,获取所述目标虚拟化设备信息;
基于目标虚拟化设备信息构建虚拟设备节点,并将所述虚拟设备节点添加至所述虚拟机对应的设备树。
可选地,所述通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备之后,还包括:
通过所述虚拟机挂载所述虚拟设备对应的资源管理文件,并按照预设资源管理策略,对所述资源管理文件进行配置;
通过所述虚拟机监测器确定所述内存系统组件对应的目标虚拟化寄存器,并对所述目标虚拟化寄存器进行虚拟化配置。
可选地,所述对所述目标虚拟化寄存器进行虚拟化配置,包括:
将所述映射关系配置至目标虚拟化寄存器中的分区标识映射寄存器;
对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理。
可选地,所述对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理之后,还包括:
在所述虚拟机被中断的情况下,确定所述虚拟机在所述目标虚拟化寄存器中对应的虚拟分区标识寄存器;将所述虚拟分区标识寄存器中存储的虚拟分区标识进行存储,获得虚拟分区标识存储信息;
在所述虚拟机被调度的情况下,获取所述虚拟分区标识存储信息,并基于所述虚拟分区标识存储信息对所述虚拟分区标识寄存器进行赋值。
其中,内存系统组件即为MPAM特性的MSC设备,可简称为MPAM MSC设备。MPAM将提供资源管理功能组件抽象为MSC设备,MSC设备可以对资源请求进行处理。由于当前MPAM特性可以在物理机上使用,但resctrl文件系统无法对虚拟机内部的进程线程进行感知,只能感知到虚拟机的vCPU对应的进程。所以当前的MPAM软件方案只能做到对整个guest级别的Cache和内存带宽资源管控。如果虚拟机内部的不同任务拥有不同优先级,则无法做到区分和管控。
本说明书实施例中内存系统组件对应的设备虚拟化方法,对下完成了MPAM MSC设备功能的访问和设置,包括MPAMMSC设备资源的获取和初始化、中断初始化以及对设备MMIO寄存器的读写,对上则与resctrl文件系统(上述的资源管理文件)进行交互。具体实现过程可以采用VFIO或VFIO-mdev框架等方式进行实现,也可以采用其他自定义方式实现,在此不做限制。从而使虚拟机内部也能够实现MPAM MSC设备驱动的加载和resctrl文件系统的挂载,进而实现虚拟机内部不同应用对Cache和内存带宽资源的资源管理。
上述为本实施例的另一种设备虚拟化方法的示意性方案。需要说明的是,该另一种设备虚拟化方法的技术方案与上述一种的设备虚拟化方法的技术方案属于同一构思,一种设备虚拟化方法的技术方案未详细描述的细节内容,均可以参见上述一种设备虚拟化方法的技术方案的描述。
本说明实施例提供的设备虚拟化方法,本说明实施例提供的设备虚拟化方法,应用于宿主机,为了实现内存系统组件的虚拟化,从而实现对虚拟机中进程进行资源管理。通过读取内存系统组件的设备信息,并在设备信息中确定虚拟机对应的目标分区标识;基于设备信息创建内存系统组件对应的虚拟化设备信息,并基于目标分区标识对虚拟化设备信息进行配置,获得目标虚拟化设备信息,实现了将内存系统组件的设备信息暴露到用户态;根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,实现了将目标虚拟设备信息转换为虚拟机可识别的信息格式;通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理,实现了将内存系统组件进行虚拟化,以便对虚拟机中的进程粒度进行资源管理。
下述结合附图4至附图7,以本说明书提供的设备虚拟化方法在MPAM MSC设备虚拟化中的应用为例,对所述设备虚拟化方法进行进一步说明。其中,图4示出了本说明书一个实施例提供的一种设备虚拟化方法中虚拟MSC设备的创建过程的示意图;图5示出了本说明书一个实施例提供的一种设备虚拟化方法中虚拟MSC设备透传到虚拟机的示意图;图6示出了本说明书一个实施例中一种设备虚拟化方法中MPAM系统寄存器的存储以及恢复过程的示意图;图7示出了本说明书一个实施例中一种设备虚拟化方法中虚拟机对MSC设备的读写过程的处理过程流程图。具体的,MPAM MSC设备软件虚拟化具体包括以下部分:
在对MPAM特性虚拟化之前,需要保证宿主机上的MPAM特性功能正常可用,MPAMMSC 设备信息在宿主机内核中可以正常访问。在具备上述前置条件的基础上,通过宿主机中的MPAM MSC设备虚拟化驱动(简称MSC设备虚拟化驱动)、虚拟机监测器以及虚拟机三个模块共同完成对MPAM 特性的虚拟化。
其中,MSC设备虚拟化驱动,是基于宿主机内核中 MPAM MSC 设备的设备信息编写的新的内核模块,用以实现可以透传至虚拟机的虚拟MPAM MSC设备的构建。该MSC设备虚拟化驱动的主要工作包括:
读取宿主机上MPAM MSC设备(即物理MSC设备)的设备信息,并在设备信息中提取分区标识。基于在设备信息中提取的分区标识以及预设分区标识划分策略,划分出应用于虚拟机的目标分区标识。并通过填充MPAM虚拟化映射相关寄存器,创建目标分区标识和预设虚拟分区标识之间的映射关系。
基于设备信息,创建MPAM MSC设备对应的虚拟父设备(可以理解为上述方法实施例中的虚拟父设备类),并将映射关系存储至虚拟父设备,完成虚拟父设备的创建。虚拟父设备的作用为创建虚拟MSC设备并进行虚拟分区标识的分配。虚拟父设备中包括了不同的虚拟MSC设备类型(可以理解为上述方法实施例中的子设备类型),不同虚拟 MSC 设备类型拥有不同的可用分区标识数目。并且每种虚拟MSC设备类型都有对应的创建接口。
当需要生成某一类型的虚拟 MSC 设备(可以理解为上述方法实施例中的虚拟子设备实例)时,调用对应的创建接口,创建接口对应的驱动函数会创建新的虚拟MSC设备。驱动将根据映射关系以及MSC设备类型,确定虚拟MSC设备对应的虚拟分区标识数目以及虚拟分区标识偏移量,并对虚拟 MSC设备进行初始化,完成虚拟 MSC设备的构建。其中,虚拟MSC设备的设备信息和设备读写接口会通过文件系统暴露到用户态。虚拟MSC设备的整个创建过程的示意图具体如图4所示。
虚拟机监测器,用以将MSC设备虚拟化驱动构建的虚拟 MSC设备的设备信息以设备树中MSC设备节点的形式透传至虚拟机。该虚拟监测器的主要工作包括:
通过调用虚拟MSC设备中的相关数据读取接口,获取虚拟MSC设备的虚拟MSC设备信息。基于虚拟MSC设备信息构建虚拟MSC设备节点,并将虚拟MSC设备节点添加至虚拟机对应的设备树。
对MPAM特性在处理器中对应的虚拟化配置寄存器中虚拟化映射寄存器进行置位,其中,虚拟化映射寄存器置位后用以对虚拟分区标识的映射进行使能。
不同虚拟机所分配的虚拟分区标识是不同的,因此虚拟机监测器还需要基于虚拟MSC 设备中的虚拟分区标识信息维护不同虚拟机的虚拟分区标识偏移量信息,并将该信息传递给虚拟机。
虚拟机在启动过程中,虚拟化的MSC设备的创建过程如图5所示,虚拟机内核中的MPAMMSC设备驱动(简称为MSC设备驱动)会识别并解析虚拟机监测器所提供的设备树中的MSC设备节点信息,根据解析结果创建虚拟化的MSC设备(可以理解为上述方法实施例中的虚拟设备),并完成对虚拟化的MSC设备的初始化及配置工作。虚拟机还需要基于虚拟机监测器传递的虚拟分区标识偏移,完成自身初始分区标识的设置。配置完成后,虚拟机可以经由虚拟机监测器实现对虚拟MSC设备的设备读/写。
当虚拟机需要使用 MPAM 特性时,首先需要挂载resctrl文件系统,并通过resctrl 文件系统完成虚拟化的MSC设备关联的资源管理配置。其中,资源管理配置包括:cache 及内存带宽资源隔离的配置和资源监测值的获取。
以上过程就完成了 MPAM 特性虚拟化的所有配置工作。
在虚拟机使用MPAM特性过程中,虚拟分区标识的正确性由虚拟机监测器的相关设置进行维护。具体地,当虚拟机被中断和调度时,需要对携带虚拟分区标识的MPAM系统寄存器(可以理解为上述方法实例中的虚拟分区标识寄存器)(MPAM0_EL1和MPAM1_EL1)中的虚拟分区标识进行存储和恢复,以保障虚拟机的访问请求携带正确的虚拟分区标识,并避免与宿主机对应的分区标识相冲突。由于在MSC设备虚拟化驱动中已经基于预设分区标识划分策略完成了虚拟分区标识和物理分区标识的映射,因此MPAM虚拟化映射相关寄存器无需在中断和调度时被虚拟机监测器进行存储和恢复。具体的,MPAM系统寄存器的存储和恢复过程如图6所示。当虚拟机被中断(VM-Exit)时,对虚拟机存储于携带虚拟分区标识的MPAM系统寄存器(MPAM0_EL1和MPAM1_EL1)的值(虚拟分区标识)进行保存,获得虚拟分区标识存储信息;并将预先保存的宿主机于MPAM系统寄存器(MPAM0_EL1和MPAM1_EL1)中的分区标识恢复至MPAM系统寄存器(恢复host MPAM系统寄存器的值)。在虚拟机被调度(VM-Enter)时,则将宿主机存储至MPAM系统寄存器的分区标识进行保存(保存host MPAM系统寄存器的值),并基于虚拟分区标识存储信息对MPAM系统寄存器进行赋值(恢复guest MPAM系统寄存器的值)。
MSC设备内存空间访问请求中的分区标识的正确性则由MSC设备虚拟化驱动维护。具体的,虚拟机对MSC设备的读写过程如图7所示。当虚拟机需要通过resctrl文件系统修改或者读取MSC设备中的资源管理配置(比如调整资源隔离配置或读取资源监测值)时,生成设备读写请求。设备读写请求由resctrl文件系统通过系统调用交由MSC设备驱动处理。MSC设备驱动会读写MSC设备相关地址空间,对MSC设备相关地址的访问会陷出到虚拟机监测器中。虚拟机监测器会进一步调用虚拟MSC设备提供的设备读写接口,将设备读写请求交由MSC设备虚拟化驱动处理。MSC设备虚拟化驱动会对设备读写请求中的虚拟分区标识进行处理,将请求信息中虚拟分区标识修改为对应的物理分区标识,基于修改后的设备读写请求访问物理MSC设备。物理MSC设备返回设备读写请求对应的请求结果后,再由MSC设备虚拟化驱动对请求结果处理后获得处理结果,将处理结果返回至虚拟机中MSC设备驱动,MSC设备驱动将处理结果返回至resctrl文件系统。
本说明实施例提供的设备虚拟化方法,应用于宿主机,为了实现MPAM MSC设备的虚拟化,从而实现对虚拟机中进程进行资源管理,通过读取MPAM MSC设备的设备信息,其中,设备信息中包括目标分区标识;基于设备信息创建MPAM MSC设备对应的虚拟化设备信息,实现了构建用户态的虚拟化设备信息,并通过对所述虚拟化设备信息配置所述目标分区标识,获得目标虚拟化设备信息,实现了对虚拟化设备信息的分区标识配置;再根据目标虚拟化设备信息构建设备树,实现了将目标虚拟化设备信息转换为虚拟机可识别的信息格式,并通过虚拟机解析设备树,根据解析结果在虚拟机中生成待虚拟化设备对应的虚拟设备,其中,虚拟设备用于对虚拟机中的进程进行资源管理,实现了将MPAM MSC设备进行虚拟化,并在虚拟机中的进程级别进行资源管理。
与上述方法实施例相对应,本说明书还提供了设备虚拟化装置实施例,图8示出了本说明书一个实施例提供的一种设备虚拟化装置的结构示意图。如图8所示,应用于宿主机,该装置包括:
第一读取模块802,被配置为读取待虚拟化设备的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
第一创建模块804,被配置为基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
第一添加模块806,被配置为根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
第一生成模块808,被配置为通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
可选地,所述第一读取模块802,进一步被配置为:
在所述设备信息中提取分区标识;
基于所述分区标识以及预设标识划分策略,确定虚拟机对应的目标分区标识。
可选地,所述第一创建模块804,进一步被配置为:
第一父设备创建单元,被配置为基于所述设备信息,创建所述目标设备对应的虚拟父设备类,其中,所述虚拟父设备类中包含子设备类型以及所述子设备类型对应的创建接口;
第一子设备实例创建单元,被配置为通过调用所述创建接口创建所述子设备类型对应的初始虚拟子设备实例,并将所述初始虚拟子设备实例的初始子设备信息作为虚拟化设备信息。
可选地,所述第一父设备创建单元,进一步被配置为:
构建所述目标分区标识和预设虚拟分区标识之间的映射关系;
基于所述设备信息,创建所述目标设备对应的初始虚拟父设备类,并将所述映射关系存储至所述初始虚拟父设备类,获得虚拟父设备类。
可选地,所述第一创建模块804,进一步被配置为:
根据所述映射关系以及所述子设备类型,确定所述初始虚拟化子设备实例对应的虚拟分区标识数目以及虚拟分区标识偏移量;
将所述虚拟分区标识数目以及所述虚拟分区标识偏移量配置至所述初始虚拟子设备实例,获得虚拟子设备实例,将所述虚拟子设备实例的子设备信息作为目标虚拟化设备信息。
可选地,所述第一添加模块806,进一步被配置为:
通过虚拟机监测器调用所述虚拟子设备实例中的数据读取接口,获取所述目标虚拟化设备信息;
基于目标虚拟化设备信息构建虚拟设备节点,并将所述虚拟设备节点添加至所述虚拟机对应的设备树。
可选地,所述设备虚拟化装置,还包括:
第一文件配置模块,被配置为通过所述虚拟机挂载所述虚拟设备对应的资源管理文件,并按照预设资源管理策略,对所述资源管理文件进行配置;
第一寄存器配置,被配置为通过所述虚拟机监测器确定所述待虚拟化设备对应的目标虚拟化寄存器,并对所述目标虚拟化寄存器进行虚拟化配置。
可选地,所述第一寄存器配置,进一步被配置为:
将所述映射关系配置至目标虚拟化寄存器中的分区标识映射寄存器;
对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理。
可选地,所述设备虚拟化装置,还包括:
第一标识存储模块,被配置为在所述虚拟机被中断的情况下,确定所述虚拟机在所述目标虚拟化寄存器中对应的虚拟分区标识寄存器;将所述虚拟分区标识寄存器中存储的虚拟分区标识进行存储,获得虚拟分区标识存储信息;
第一赋值模块,被配置为在所述虚拟机被调度的情况下,获取所述虚拟分区标识存储信息,并基于所述虚拟分区标识存储信息对所述虚拟分区标识寄存器进行赋值。
本说明实施例提供的设备虚拟化装置,应用于宿主机,为了实现待虚拟化设备的虚拟化,从而实现对虚拟机中进程进行资源管理。通过读取待虚拟化设备的设备信息,并在设备信息中确定虚拟机对应的目标分区标识;基于设备信息创建待虚拟化设备对应的虚拟化设备信息,并基于目标分区标识对虚拟化设备信息进行配置,获得目标虚拟化设备信息,实现了将待虚拟化设备的设备信息暴露到用户态;根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,实现了将目标虚拟设备信息转换为虚拟机可识别的信息格式;通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理,实现了将待虚拟化设备进行虚拟化,以便对虚拟机中的进程粒度进行资源管理。
上述为本实施例的一种设备虚拟化装置的示意性方案。需要说明的是,该设备虚拟化装置的技术方案与上述的设备虚拟化方法的技术方案属于同一构思,设备虚拟化装置的技术方案未详细描述的细节内容,均可以参见上述设备虚拟化方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了设备虚拟化装置实施例,图9示出了本说明书一个实施例提供的一种设备虚拟化装置的结构示意图。如图9所示,应用于宿主机,其中,所述宿主机装载配置内存系统组件的处理器,该装置包括:
第二读取模块902,被配置为读取所述内存系统组件的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
第二创建模块904,被配置为基于所述设备信息创建所述内存系统组件对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
第二添加模块906,被配置为根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
第二生成模块908,被配置为通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
可选地,所述第二读取模块902,进一步被配置为:
在所述设备信息中提取分区标识;
基于所述分区标识以及预设标识划分策略,确定虚拟机对应的目标分区标识。
可选地,所述第二创建模块904,进一步被配置为:
第二父设备创建单元,被配置为基于所述设备信息,创建所述目标设备对应的虚拟父设备类,其中,所述虚拟父设备类中包含子设备类型以及所述子设备类型对应的创建接口;
第二子设备实例创建单元,被配置为通过调用所述创建接口创建所述子设备类型对应的初始虚拟子设备实例,并将所述初始虚拟子设备实例的初始子设备信息作为虚拟化设备信息。
可选地,所述第二父设备创建单元,进一步被配置为:
构建所述目标分区标识和预设虚拟分区标识之间的映射关系;
基于所述设备信息,创建所述目标设备对应的初始虚拟父设备类,并将所述映射关系存储至所述初始虚拟父设备类,获得虚拟父设备类。
可选地,所述第二创建模块904,进一步被配置为:
根据所述映射关系以及所述子设备类型,确定所述初始虚拟化子设备实例对应的虚拟分区标识数目以及虚拟分区标识偏移量;
将所述虚拟分区标识数目以及所述虚拟分区标识偏移量配置至所述初始虚拟子设备实例,获得虚拟子设备实例,将所述虚拟子设备实例的子设备信息作为目标虚拟化设备信息。
可选地,所述第二添加模块906,进一步被配置为:
通过虚拟机监测器调用所述虚拟子设备实例中的数据读取接口,获取所述目标虚拟化设备信息;
基于目标虚拟化设备信息构建虚拟设备节点,并将所述虚拟设备节点添加至所述虚拟机对应的设备树。
可选地,所述设备虚拟化装置,还包括:
第二文件配置模块,被配置为通过所述虚拟机挂载所述虚拟设备对应的资源管理文件,并按照预设资源管理策略,对所述资源管理文件进行配置;
第二寄存器配置,被配置为通过所述虚拟机监测器确定所述内存系统组件对应的目标虚拟化寄存器,并对所述目标虚拟化寄存器进行虚拟化配置。
可选地,所述第二寄存器配置,进一步被配置为:
将所述映射关系配置至目标虚拟化寄存器中的分区标识映射寄存器;
对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理。
可选地,所述设备虚拟化装置,还包括:
第二标识存储模块,被配置为在所述虚拟机被中断的情况下,确定所述虚拟机在所述目标虚拟化寄存器中对应的虚拟分区标识寄存器;将所述虚拟分区标识寄存器中存储的虚拟分区标识进行存储,获得虚拟分区标识存储信息;
第二赋值模块,被配置为在所述虚拟机被调度的情况下,获取所述虚拟分区标识存储信息,并基于所述虚拟分区标识存储信息对所述虚拟分区标识寄存器进行赋值。
本说明实施例提供另一种的设备虚拟化装置,应用于宿主机,为了实现内存系统组件的虚拟化,从而实现对虚拟机中进程进行资源管理。通过读取内存系统组件的设备信息,并在设备信息中确定虚拟机对应的目标分区标识;基于设备信息创建内存系统组件对应的虚拟化设备信息,并基于目标分区标识对虚拟化设备信息进行配置,获得目标虚拟化设备信息,实现了将内存系统组件的设备信息暴露到用户态;根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,实现了将目标虚拟设备信息转换为虚拟机可识别的信息格式;通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理,实现了将内存系统组件进行虚拟化,以便对虚拟机中的进程粒度进行资源管理。
上述为本实施例的一种设备虚拟化装置的示意性方案。需要说明的是,该设备虚拟化装置的技术方案与上述的设备虚拟化方法的技术方案属于同一构思,设备虚拟化装置的技术方案未详细描述的细节内容,均可以参见上述设备虚拟化方法的技术方案的描述。
图10示出了根据本说明书一个实施例提供的一种计算设备1000的结构框图。该计算设备1000的部件包括但不限于存储器1010和处理器1020。处理器1020与存储器1010通过总线1030相连接,数据库1050用于保存数据。
计算设备1000还包括接入设备1040,接入设备1040使得计算设备1000能够经由一个或多个网络1060通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备1040可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备1000的上述部件以及图10中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图10所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1000可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备1000还可以是移动式或静止式的服务器。
其中,处理器1020用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述设备虚拟化方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的设备虚拟化方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述设备虚拟化方法的技术方案的描述。
本说明书一实施例还提供一种设备虚拟化系统,所述系统包括:虚拟化驱动模块和虚拟机,所述虚拟化驱动模块用于存储虚拟设备节点生成可执行指令,所述虚拟机用于存储虚拟设备生成可执行指令,所述虚拟设备节点生成可执行指令被所述虚拟化驱动模块执行,以及所述虚拟设备生成可执行指令被所述虚拟机执行时,实现所述设备虚拟化方法的步骤。
上述为本实施例的一种设备虚拟化系统的示意性方案。需要说明的是,该设备虚拟化系统的技术方案与上述的设备虚拟化方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述设备虚拟化方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述设备虚拟化方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的设备虚拟化方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述设备虚拟化方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述设备虚拟化方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的设备虚拟化方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述设备虚拟化方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (13)
1.一种设备虚拟化方法,应用于宿主机,包括:
读取待虚拟化设备的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
2.根据权利要求1所述的方法,所述在所述设备信息中确定虚拟机对应的目标分区标识,包括:
在所述设备信息中提取分区标识;
基于所述分区标识以及预设标识划分策略,确定虚拟机对应的目标分区标识。
3.根据权利要求2所述的方法,所述基于所述设备信息创建所述待虚拟化设备对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息,包括:
基于所述设备信息,创建所述目标设备对应的虚拟父设备类,其中,所述虚拟父设备类中包含子设备类型以及所述子设备类型对应的创建接口;
通过调用所述创建接口创建所述子设备类型对应的初始虚拟子设备实例,并将所述初始虚拟子设备实例的初始子设备信息作为虚拟化设备信息。
4.根据权利要求3所述的方法,所述基于所述设备信息,创建所述目标设备对应的虚拟父设备类,包括:
构建所述目标分区标识和预设虚拟分区标识之间的映射关系;
基于所述设备信息,创建所述目标设备对应的初始虚拟父设备类,并将所述映射关系存储至所述初始虚拟父设备类,获得虚拟父设备类。
5.根据权利要求4所述的方法,所述基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息,包括:
根据所述映射关系以及所述子设备类型,确定所述初始虚拟化子设备实例对应的虚拟分区标识数目以及虚拟分区标识偏移量;
将所述虚拟分区标识数目以及所述虚拟分区标识偏移量配置至所述初始虚拟子设备实例,获得虚拟子设备实例,将所述虚拟子设备实例的子设备信息作为目标虚拟化设备信息。
6.根据权利要求5所述的方法,所述根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点,包括:
通过虚拟机监测器调用所述虚拟子设备实例中的数据读取接口,获取所述目标虚拟化设备信息;
基于目标虚拟化设备信息构建虚拟设备节点,并将所述虚拟设备节点添加至所述虚拟机对应的设备树。
7.根据权利要求4所述的方法,所述通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备之后,还包括:
通过所述虚拟机挂载所述虚拟设备对应的资源管理文件,并按照预设资源管理策略,对所述资源管理文件进行配置;
通过所述虚拟机监测器确定所述待虚拟化设备对应的目标虚拟化寄存器,并对所述目标虚拟化寄存器进行虚拟化配置。
8.根据权利要求7所述的方法,所述对所述目标虚拟化寄存器进行虚拟化配置,包括:
将所述映射关系配置至目标虚拟化寄存器中的分区标识映射寄存器;
对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理。
9.根据权利要求8所述的方法,所述对所述目标虚拟化寄存器中虚拟化映射寄存器进行置位处理之后,还包括:
在所述虚拟机被中断的情况下,确定所述虚拟机在所述目标虚拟化寄存器中对应的虚拟分区标识寄存器;将所述虚拟分区标识寄存器中存储的虚拟分区标识进行存储,获得虚拟分区标识存储信息;
在所述虚拟机被调度的情况下,获取所述虚拟分区标识存储信息,并基于所述虚拟分区标识存储信息对所述虚拟分区标识寄存器进行赋值。
10.一种设备虚拟化方法,应用于宿主机,其中,所述宿主机装载配置内存系统组件的处理器,包括:
读取所述内存系统组件的设备信息,并在所述设备信息中确定虚拟机对应的目标分区标识;
基于所述设备信息创建所述内存系统组件对应的虚拟化设备信息,并基于所述目标分区标识对所述虚拟化设备信息进行配置,获得目标虚拟化设备信息;
根据所述目标虚拟化设备信息在所述虚拟机对应的设备树中添加虚拟设备节点;
通过虚拟机解析所述设备树,根据解析结果在所述虚拟机中生成所述虚拟设备节点对应的虚拟设备,其中,所述虚拟设备用于对所述虚拟机中的进程进行资源管理。
11.一种设备虚拟化系统,所述系统包括:
虚拟化驱动模块和虚拟机,
所述虚拟化驱动模块用于存储虚拟设备节点生成可执行指令,所述虚拟机用于存储虚拟设备生成可执行指令,所述虚拟设备节点生成可执行指令被所述虚拟化驱动模块执行,以及所述虚拟设备生成可执行指令被所述虚拟机执行时,实现权利要求1至10任意一项所述设备虚拟化方法的步骤。
12.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述设备虚拟化方法的步骤。
13.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述设备虚拟化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310325561.8A CN116028164B (zh) | 2023-03-29 | 2023-03-29 | 设备虚拟化方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310325561.8A CN116028164B (zh) | 2023-03-29 | 2023-03-29 | 设备虚拟化方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028164A true CN116028164A (zh) | 2023-04-28 |
CN116028164B CN116028164B (zh) | 2023-06-20 |
Family
ID=86089745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310325561.8A Active CN116028164B (zh) | 2023-03-29 | 2023-03-29 | 设备虚拟化方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028164B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667241A (zh) * | 2024-02-01 | 2024-03-08 | 龙芯中科技术股份有限公司 | 设备加载方法、装置、电子设备及存储介质 |
CN117667241B (zh) * | 2024-02-01 | 2024-04-26 | 龙芯中科技术股份有限公司 | 设备加载方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2797292A1 (en) * | 2013-04-25 | 2014-10-29 | Telefónica, S.A. | Method and device for virtualization of terminal devices of a wireless network |
CN106796507A (zh) * | 2014-09-18 | 2017-05-31 | 英特尔公司 | 无需内容转换支持计算设备中的多操作系统环境 |
CN110058946A (zh) * | 2019-04-26 | 2019-07-26 | 上海燧原科技有限公司 | 设备虚拟化方法、装置、设备及存储介质 |
CN110168500A (zh) * | 2017-01-13 | 2019-08-23 | Arm有限公司 | 存储器系统资源或性能监测的划分 |
CN111447103A (zh) * | 2020-03-09 | 2020-07-24 | 杭州海康威视系统技术有限公司 | 虚拟设备的管理系统及方法、电子设备及介质 |
CN111831588A (zh) * | 2015-10-21 | 2020-10-27 | 华为技术有限公司 | 一种存储设备访问方法、装置和系统 |
CN113849269A (zh) * | 2021-09-18 | 2021-12-28 | 北京金山云网络技术有限公司 | 在虚拟机中添加gpu资源的方法及装置 |
CN113849272A (zh) * | 2021-09-18 | 2021-12-28 | 北京金山云网络技术有限公司 | 在虚拟机中添加gpu资源的方法及装置 |
CN114625484A (zh) * | 2022-03-31 | 2022-06-14 | 苏州浪潮智能科技有限公司 | 虚拟化实现方法、装置、电子设备、介质及arm平台 |
-
2023
- 2023-03-29 CN CN202310325561.8A patent/CN116028164B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2797292A1 (en) * | 2013-04-25 | 2014-10-29 | Telefónica, S.A. | Method and device for virtualization of terminal devices of a wireless network |
CN106796507A (zh) * | 2014-09-18 | 2017-05-31 | 英特尔公司 | 无需内容转换支持计算设备中的多操作系统环境 |
CN111831588A (zh) * | 2015-10-21 | 2020-10-27 | 华为技术有限公司 | 一种存储设备访问方法、装置和系统 |
CN110168500A (zh) * | 2017-01-13 | 2019-08-23 | Arm有限公司 | 存储器系统资源或性能监测的划分 |
CN110058946A (zh) * | 2019-04-26 | 2019-07-26 | 上海燧原科技有限公司 | 设备虚拟化方法、装置、设备及存储介质 |
CN111447103A (zh) * | 2020-03-09 | 2020-07-24 | 杭州海康威视系统技术有限公司 | 虚拟设备的管理系统及方法、电子设备及介质 |
CN113849269A (zh) * | 2021-09-18 | 2021-12-28 | 北京金山云网络技术有限公司 | 在虚拟机中添加gpu资源的方法及装置 |
CN113849272A (zh) * | 2021-09-18 | 2021-12-28 | 北京金山云网络技术有限公司 | 在虚拟机中添加gpu资源的方法及装置 |
CN114625484A (zh) * | 2022-03-31 | 2022-06-14 | 苏州浪潮智能科技有限公司 | 虚拟化实现方法、装置、电子设备、介质及arm平台 |
Non-Patent Citations (2)
Title |
---|
HIMANSHU RAJ: "High performance and scalable I/O virtualization via self-virtualized devices", 《PROCEEDINGS OF THE 16TH INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE DISTRIBUTED COMPUTING》, pages 179 - 188 * |
郭芳超;周霆;徐晓光;: "一种嵌入式分区操作系统中虚拟化串口的设计与实现", 数码世界, no. 06 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667241A (zh) * | 2024-02-01 | 2024-03-08 | 龙芯中科技术股份有限公司 | 设备加载方法、装置、电子设备及存储介质 |
CN117667241B (zh) * | 2024-02-01 | 2024-04-26 | 龙芯中科技术股份有限公司 | 设备加载方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116028164B (zh) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101952795B1 (ko) | 자원 프로세싱 방법, 운영체제, 및 장치 | |
US9582221B2 (en) | Virtualization-aware data locality in distributed data processing | |
US10025615B2 (en) | Dynamic guest virtual machine identifier allocation | |
US7725559B2 (en) | Virtual data center that allocates and manages system resources across multiple nodes | |
US9413819B1 (en) | Operating system interface implementation using network-accessible services | |
JP6564838B2 (ja) | インダストリアル・インターネットオペレーティングシステムに基づくマルチオペレーティングシステム運行方法および装置 | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
US20070067366A1 (en) | Scalable partition memory mapping system | |
JP2016541072A5 (zh) | ||
US10728169B1 (en) | Instance upgrade migration | |
WO2023000673A1 (zh) | 硬件加速器设备管理方法、装置及电子设备和存储介质 | |
US9454394B2 (en) | Hypervisor dynamically assigned input/output resources for virtual devices | |
CN112130960A (zh) | 一种轻量化移动边缘计算节点及构建方法 | |
US20230133273A1 (en) | System and interrupt handling method | |
CN115309511B (zh) | 基于Xen的数据交互方法、装置、存储介质以及电子设备 | |
CN115526770A (zh) | 用于虚拟化图形处理的缩放 | |
CN116028164B (zh) | 设备虚拟化方法以及装置 | |
CN114816665B (zh) | 混合编排系统及超融合架构下虚拟机容器资源混合编排方法 | |
CN113626131A (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
Di Martino et al. | Cross-platform cloud APIs | |
US8924972B2 (en) | Method and system for logging into a virtual environment executing on a host | |
US10228859B2 (en) | Efficiency in active memory sharing | |
US11829792B1 (en) | In-place live migration of compute instances for efficient host domain patching | |
US20220214968A1 (en) | Enabling efficient guest access to peripheral component interconnect express (pcie) configuration space | |
US20190278714A1 (en) | System and method for memory access latency values in a virtual machine |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |