基于处理器的虚拟机构建方法和系统与流程

文档序号:17220677发布日期:2019-03-27 11:55阅读:236来源:国知局
基于处理器的虚拟机构建方法和系统与流程

本发明涉及虚拟机构建领域,具体地,涉及一种基于处理器的虚拟机构建方法和系统,尤其是涉及一种基于国产申威处理器的虚拟机构建方法和系统。



背景技术:

当前,国产申威处理器架构正在不断迈向成熟,同时也因此正在许多不同应用领域逐渐获得了广泛的应用,特别是在我国政府机关以及相关机构组织的关键应用场景下。考虑到国产申威处理器平台是由我国研究机构自主研发并维护控制其设计架构,此平台很显然将具有优秀的安全可信度,同时也能够根据我国组织机构的特殊需求进行相应的调整与适应,亦增加了其应用的灵活性以及广泛性。因此,基于申威处理器架构的计算机设施将有能力参与构建支持大部分的政府以及机构关键重要项目活动,为其提供可信任的承载环境,并实现这些项目活动所必需的各种计算功能,包括数学模型模拟,大规模数据处理,云数据存储以及网络通信等。

然而,作为一个具有一定需求导向的开发项目,由于国产申威处理器架构仍然处于新近开发,并期望在应用测试中逐渐进行长期迭代完善的平台,其在功能完整性上仍然存在一定的不足与限制。很显然,这些功能上的限制整体而言主要可以归咎于两方面的原因:一方面是由于硬件设计的复杂度在支持基础功能以外的扩展功能上存在一定的困难,而另一方面则是由于软件应用环境的不够成熟,许多支持特殊应用功能的系统软件未能成功移植至申威处理器平台。作为一个典型的例子,基于国产申威处理器平台的虚拟化支持是很具有代表性的。正是因为国产申威处理器并未提供硬件原生的页式内存管理与多重页表支持等虚拟化必要功能,此平台很难实现硬件辅助虚拟化,而必须求助于软件模拟。同时,申威处理器平台缺少虚拟化管理工具软件的移植与实现,因此必须通过开发原生虚拟化支持平台以实现虚拟化功能。

同时,在所有必要实现的技术路线中,虚拟化功能支持对于国产申威处理器平台而言,又是极为关键的一项技术功能。所谓虚拟化技术,可以简单理解为在物理计算机平台上构建并模拟多个独立的“虚拟”计算环境,同时让它们并行同步运行的技术。这些可以被定义为“虚拟机”的计算环境,在共同分享物理机所提供的各种计算资源的前提下,却能够互相隔离成具有不同硬件设备配置与操作系统环境独立计算环境以提供给不同客户互不干扰地使用。由于国产申威处理器平台更多是面向专业用户而非个人用户,可以想象基于此平台所构建部署的计算设备,绝大多数为专用服务器或数据中心节点集群等中大型计算机设施。很明显在此类计算设施中,多用户多任务的并行处理能力是极为基础的,同时虚拟化技术所提供的大规模计算资源共享分配,以及多用户间资源环境隔离能力同样非常关键。此亦为本专利所开发设计的一种基于国产申威处理器平台的轻量级虚拟机构建方法的意义所在。

目前,设计并实现基于国产申威处理器的轻量级虚拟机构建方法需要面对以下问题:首先,不同于主流x86指令集平台,申威处理器平台并未提供硬件原生的虚拟化支持加速功能,因此亦无法通过调用硬件接口实现高效的虚拟机运行管理,而必须通过软件处理实现虚拟化。同时,国产申威处理器指令集架构具有特殊的运行特权级设计,切换流程以及运行规范,因此在实现虚拟化过程中必须以此为参照设计相应功能实现过程,开发硬件相关代码。另外,现有开源虚拟化实现方案无法在申威处理器平台指令集上进行直接的移植与运行,必须以此为参照开发原生解决方案。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于处理器的虚拟机构建方法和系统。

根据本发明提供的一种基于处理器的虚拟机构建方法,包括以下步骤:用户空间启动步骤:在用户空间虚拟机管理程序中,输入配置命令,创建并启动虚拟机;内核模块接口调用步骤:用户空间虚拟机管理程序中的用户接口接收并解析配置命令,访问内核模块接口;设备文件创建步骤:在物理机文件系统中创建设备文件作为用户空间虚拟机管理程序访问物理机内核的内核模块接口;虚拟机实例构建步骤:物理机内核的虚拟化管理程序响应用户空间虚拟机管理程序访问,初始化虚拟机实例的数据结构,填充虚拟cpu状态数据,保存物理机的当前cpu运行状态,访问hmcode特定调用切换至虚拟机运行状态。

优选地,所述配置命令是虚拟机控制指令,用户空间虚拟机管理程序提供用户界面,用户界面接收虚拟机控制指令,发送给用户接口,实现与内核模块接口的通信。

优选地,所述用户空间虚拟机管理程序中包括设备虚拟化模型,所述设备虚拟化模型实现虚拟设备模拟,与物理机内核合作完成设备虚拟化,提供虚拟机交互显示界面。

优选地,所述用户空间虚拟机管理程序中包括虚拟机监控器,所述虚拟机监控器实现虚拟机实例创建、虚拟cpu管理调度、虚拟机内存管理、虚拟中断处理、虚拟机域与物理机域切换。

优选地,所述hmcode特定调用是硬件级特权功能库hmcode中在特权模式下执行的功能指令,所述功能指令控制虚拟机运行的功能结构,提供操作内存管理、中断处理的功能接口。

优选地,所述基于处理器的虚拟机构建方法还包括超级调用步骤;超级调用步骤:客户虚拟机定制内核启动超级调用,以半虚拟化方式模拟虚拟硬件资源管理。

优选地,所述虚拟机域与物理机域切换通过特权模式下运行特殊指令,由程序计数器寄存器冗余位保持特权模式状态,由特殊指令切换。

优选地,所述虚拟cpu管理调度通过将虚拟cpu包装为特殊内核线程,由内核线程调度机制进行调度;由虚拟中断的转发与响应控制虚拟cpu的切换、退出,通过hmcode接口的超级调用保证虚拟机内核与物理机内核中虚拟化管理之间的通信。

优选地,所述初始化虚拟机实例通过物理机内存虚拟化管理以预分配形式预留连续物理内存区域,将所述物理内存区域对应的物理区间分配给虚拟机,记录初始偏移量;将所述初始偏移量记录在虚拟机的数据结构中,在切换到虚拟机域时,由hmcode调用特权指令将初始偏移量写入硬件控制寄存器,作为虚拟机内存寻址参考。

根据本发明提供的一种基于处理器的虚拟机构建系统,包括以下模块:用户空间启动模块:在用户空间虚拟机管理程序中,输入配置命令,创建并启动虚拟机;内核模块接口调用模块:令用户空间虚拟机管理程序中的用户接口接收并解析配置命令,访问内核模块接口;设备文件创建模块:在物理机文件系统中创建设备文件作为用户空间虚拟机管理程序访问物理机内核的内核模块接口;虚拟机实例构建模块:令物理机内核的虚拟化管理程序响应用户空间虚拟机管理程序访问,初始化虚拟机实例的数据结构,填充虚拟cpu状态数据,保存物理机的当前cpu运行状态,访问hmcode特定调用切换至虚拟机运行状态。

与现有技术相比,本发明具有如下的有益效果:

1、实现基于国产申威处理器平台的轻量级虚拟机构建,实现大多数主流平台下虚拟机具有的功能,包括虚拟机创建、启动、暂停、停止等,实现关键输入输出设备虚拟化功能,包括虚拟化存储访问、虚拟化显示设备以及虚拟网卡。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的整体结构详细描述示意图;

图2为具体实施例中虚拟机与物理机的cpu性能对比图;

图3为具体实施例中虚拟机与物理机的内存读写效率性能对比图;

图4、图5为具体实施例中虚拟机与物理机的存储读写性能对比图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明基于国产申威处理器平台实现轻量级虚拟化的解决方案,所述解决方案命名为swvm解决方案,swvm解决方案部署于物理机操作系统各个层级的不同功能模块之间的通信与协作完成虚拟功能。所述模块主要包括硬件级特权功能库hmcode,内核虚拟机管理监视模块,用户空间虚拟机管理程序以及客户虚拟机定制内核。其中,用户空间虚拟机管理程序作为用户界面接收虚拟机控制指令,并与内核模块保持通信来实现相应功能,同时实现虚拟设备模拟,与内核模块合作完成设备虚拟化,并向用户提供虚拟机交互显示界面。内核虚拟机管理监视模块部署于物理机操作系统内核,实现虚拟机实例创建,虚拟cpu管理调度,虚拟机内存管理,虚拟中断处理,虚拟机运行过程中虚拟机/物理机域切换实现等虚拟化管理控制功能。硬件级特权功能库hmcode包含底层硬件相关的必须在特权模式下执行的功能指令,其为内核模块提供了切换特权域,控制虚拟机运行的功能接口,并为虚拟机操作系统内核提供了操作内存管理与中断处理的相应功能接口。最后客户虚拟机定制内核通过调用由hmcode实现的超级调用的形式,以半虚拟化方式模拟虚拟硬件资源管理,提升虚拟机运行性能。

根据本发明提供的一种基于处理器的虚拟机构建方法,包括以下步骤:用户空间启动步骤:在用户空间虚拟机管理程序中,输入配置命令,创建并启动虚拟机;内核模块接口调用步骤:用户空间虚拟机管理程序中的用户接口接收并解析配置命令,访问内核模块接口;设备文件创建步骤:在物理机文件系统中创建设备文件作为用户空间虚拟机管理程序访问物理机内核的内核模块接口;虚拟机实例构建步骤:物理机内核的虚拟化管理程序响应用户空间虚拟机管理程序访问,初始化虚拟机实例的数据结构,填充虚拟cpu状态数据,保存物理机的当前cpu运行状态,访问hmcode特定调用切换至虚拟机运行状态。

具体地,所述配置命令是虚拟机控制指令,用户空间虚拟机管理程序提供用户界面,用户界面接收虚拟机控制指令,发送给用户接口,实现与内核模块接口的通信。

具体地,所述用户空间虚拟机管理程序中包括设备虚拟化模型,所述设备虚拟化模型实现虚拟设备模拟,与物理机内核合作完成设备虚拟化,提供虚拟机交互显示界面。

具体地,所述用户空间虚拟机管理程序中包括虚拟机监控器,所述虚拟机监控器实现虚拟机实例创建、虚拟cpu管理调度、虚拟机内存管理、虚拟中断处理、虚拟机域与物理机域切换。

具体地,所述hmcode特定调用是硬件级特权功能库hmcode中在特权模式下执行的功能指令,所述功能指令控制虚拟机运行的功能结构,提供操作内存管理、中断处理的功能接口。

具体地,所述基于处理器的虚拟机构建方法还包括超级调用步骤;超级调用步骤:客户虚拟机定制内核启动超级调用,以半虚拟化方式模拟虚拟硬件资源管理。

具体地,所述虚拟机域与物理机域切换通过特权模式下运行特殊指令,由程序计数器寄存器冗余位保持特权模式状态,由特殊指令切换。

具体地,所述虚拟cpu管理调度通过将虚拟cpu包装为特殊内核线程,由内核线程调度机制进行调度;由虚拟中断的转发与响应控制虚拟cpu的切换、退出,通过hmcode接口的超级调用保证虚拟机内核与物理机内核中虚拟化管理之间的通信。

具体地,所述初始化虚拟机实例通过物理机内存虚拟化管理以预分配形式预留连续物理内存区域,将所述物理内存区域对应的物理区间分配给虚拟机,记录初始偏移量;将所述初始偏移量记录在虚拟机的数据结构中,在切换到虚拟机域时,由hmcode调用特权指令将初始偏移量写入硬件控制寄存器,作为虚拟机内存寻址参考。

根据本发明提供的一种基于处理器的虚拟机构建系统,包括以下模块:用户空间启动模块:在用户空间虚拟机管理程序中,输入配置命令,创建并启动虚拟机;内核模块接口调用模块:令用户空间虚拟机管理程序中的用户接口接收并解析配置命令,访问内核模块接口;设备文件创建模块:在物理机文件系统中创建设备文件作为用户空间虚拟机管理程序访问物理机内核的内核模块接口;虚拟机实例构建模块:令物理机内核的虚拟化管理程序响应用户空间虚拟机管理程序访问,初始化虚拟机实例的数据结构,填充虚拟cpu状态数据,保存物理机的当前cpu运行状态,访问hmcode特定调用切换至虚拟机运行状态。

本发明提供的基于国产申威处理器的虚拟机构建系统,可以通过基于国产申威处理器的虚拟机构建方法的步骤流程实现。本领域技术人员可以将基于国产申威处理器的虚拟机构建方法理解为所述基于国产申威处理器的虚拟机构建系统的优选例。

如图1所示,在用户空间虚拟机管理程序中,用户输入命令,以特定配置创建并启动虚拟机;用户空间程序(用户空间虚拟化工具)接收并解析命令,根据相应配置访问内核模块接口调用相应功能;内核虚拟机管理监视模块通过配置自定义虚假设备驱动形式,在物理机文件系统中创建设备文件作为用户空间访问内核接口,用户空间程序通过访问对应文件调用内核功能;内核虚拟化管理模块响应用户空间程序访问,初始化虚拟机实例数据结构,填充虚拟cpu状态数据,保存当前cpu运行状态,并通过访问hmcode特定调用切换至虚拟机运行状态;国产申威处理器平台指令集设计包含特殊指令运行特权模式设计。由程序计数器寄存器冗余位保存特权模式状态,并由特殊指令切换。涉及硬件控制特权指令仅允许在特权模式下运行,以此实现不同虚拟机域与物理机域之间的资源隔离与集中控制。hmcode调用特权指令并将cpu运行状态进行切换,实现虚拟机的启动与运行;虚拟cpu在内核中被包装为特殊内核线程,由内核线程调度机制进行调度。同时,通过虚拟中断的转发与响应控制其切换与退出,并通过hmcode提供接口实现超级调用保证虚拟机内核与物理机内核中虚拟化管理模块之间通信,保证其正确运行。由此,便基本实现了cpu的虚拟化,并保证了虚拟机的基础正确运行流程。

上述超级调用实现客户虚拟机内核主动调到宿主机的机制,包括关机、重启、halt、触发clockevent、核间中断(ipi)、msi中断、刷新虚拟机rtc时钟等。通过hmcode特权调用接口,从虚拟机的现场退出,向物理机传递一个信息,由物理机处理相应超级调用。此机制通过改动内核源码实现了半虚拟化,对比截获特权指令的全虚拟化更高效。此机制同样利用hmcode,通过在hmcode里加一个特殊的调用,在这个调用过程里完成现场切换:一部分保留工作在hmcode中完成,另一部分通用寄存器的保留可以在切换完成后由宿主机内核来完成。

本发明中内存虚拟化由以下方式实现:在虚拟机实例初始化过程中,物理机内核虚拟化管理模块将以预分配形式为虚拟机预留连续物理内存区域,将对应物理地址区间分配给对应虚拟机,并记录初始偏移值;虚拟机启动过程中,对应物理地址初始偏移将被记录进入虚拟机控制数据结构传递给虚拟机域,并在虚拟机切换过程中由hmcode调用特权指令将相关值写入对应硬件控制寄存器作为虚拟机内存寻址参考;虚拟机运行过程之中,其内部虚地址转换寻址将根据对应内存区域初始偏移计算实际物理地址;虚拟机运行时处理页表填充、切换、内存映射修改等内存操作过程之中,不涉及退出至物理机由内核虚拟化管理模块控制调整等操作,而是通过访问hmcode特权调用在虚拟域内部完成。由此,本虚拟化解决方案极大减少可能由于虚拟机内存操作产生的在虚拟机域与物理机域之间的频繁切换,大大降低了内存虚拟化的额外开销,实现了高性能的轻量级内存虚拟化。

本发明中输入输出设备虚拟化由以下方式实现:客户虚拟机访问相应资源的请求以超级调用的形式经过场景切换由物理宿主机内核虚拟化管理模块接收处理,转发相应请求;物理设备产生中断统一由物理机内核接收处理,与客户虚拟机请求有关的则转换为虚拟中断推送至虚拟机。由于上述虚拟机内存分配机制,预分配内存区间头部设为共享内存。内核虚拟化管理模块通过预定义规则置位在虚拟机内触发虚拟中断,同时以数据填充对应内存区域通信传输数据,以此实现虚拟机对虚拟设备中断的响应;显示交互设备通信实现亦如此例。客户虚拟机内核实现定制化vfb虚拟帧缓存设备作为虚拟机显示设备,并将显示数据存于固定物理地址,在宿主物理机中,以此固定地址读取显示数据并输出,同时转发键盘鼠标中断通信,转化为虚拟中断推送至虚拟机内部,由其相应驱动模块中中断处理程序进行处理并产生效应。

以下基于具体实施例进行进一步的阐述。

具体实施例中,系统硬件的型号是:

(1)平台:申威处理器平台16核服务器

(2)cpu:申威sw6a处理器1.60ghz16核

(3)内存ram:32gb

(4)存储:机械硬盘容量2tb

软件系统的设置为:

(1)主机平台:ubuntu16.04.1lts

(2)内核:linux4.4.15

(3)客户机操作系统:ubuntu14.04lts

(4)客户虚拟机vcpu数量:4

(5)客户虚拟机内存:4gb

(6)客户虚拟机存储容量20gb

在此处,使用在虚拟机与物理宿主机环境下分别使用sysbench性能测试工具进行性能对比测试并记录数据。通过记录对应场景下特定资源密集型工作任务运行时数据分析虚拟机性能损失对比,包括cpu运算速度,内存读写效率以及存储设备访问性能。

本发明设计所实现的虚拟化方案中虚拟机性能下降占比在可接受范围之内。由图2数据可知,cpu任务运行时间在最小值,平均值以及95%情况下均大致相同,分别由12.3至12.35,12.32至12.43,12.34至12.43,仅最大情况下由12.83至56.29,即在绝大多数情况下性能无明显下降。

由图3数据可知,内存访问测试在虚拟机以及物理机场景下任务总时间分别是3.2s与3.15s,且平均吞吐量分别为1277.2mb/s与1299.71mb/s,性能下降仍然在可接受范围之中。

关于虚拟机存储读写性能,由随机读写测试获得的对比数据如图4、图5所显示操作用时在最小值,平均值以及95%情况下分别由0.01至0.01,0.072至0.094,0.03至0.096,最大情况下则由57.2变为45.6,显然在大多数情况下有一定性能损失,而平均操作吞吐量则由物理机情况下538次操作每秒下降至255次操作每秒,整体上有一定程度性能下降。

本发明基于国产申威处理器指令集架构,利用开源linux内核操作系统项目为基础构建并实现宿主操作系统托管式轻量级虚拟机管理监视平台系统,此系统通过运行于用户空间的模拟程序,加载至内核的虚拟化管理模块,作为硬件功能访问接口的特权代码库以及位于客户虚拟机中的半虚拟化修改内核之间的通信合作,实现基于国产申威处理器的轻量级虚拟机的高性能创建、运行、控制与访问;基于申威处理器指令集架构,以程序寄存器中冗余位存储处理器特权模式,并限制不同特权模式下资源访问的方式以及指令运行的权限,以此实现不同虚拟机域与物理机域之间的资源隔离,同时通过运行于最高权限级下的特权代码库作为中转,实现虚拟化状态的切换以及通过超调用实现的半虚拟化资源访问;基于linux内核线程调度机制,通过将虚拟化cpu核包装为特殊线程,借用内核线程调度器功能实现虚拟cpu的调度与切换。同时,通过为每一个虚拟cpu维护独立的状态数据结构,并在需要切换宿主机/虚拟机域的过程中调用特权代码库切换指令执行特权模式,并执行特权指令切换虚拟机/物理机状态并恢复相应状态数据,以此实现虚拟cpu的运行;基于特权代码库接口,实现在客户虚拟机与宿主机虚拟化管理程序之间的超调用直接通信机制,并通过修改客户虚拟机内核,利用超调用机制实现半虚拟化式高效信息传递,以此实现客户虚拟机高效中断转发处理与虚拟化设备通信;在虚拟机初始化过程中,通过连续地址空间范围分配方式简化虚拟机地址空间翻译过程,并基于特权代码库接口,在虚拟机场景切换过程中传递偏移数据。在虚拟机执行过程中,由经过修改的内核根据偏移数据操作客户机虚拟地址翻译,并通过软件方式手动填充页表,避免在内存虚拟化实现过程中频繁进行场景切换,实现高效的轻量级内存虚拟化方案;通过基于超调用与虚拟机共享数据空间实现虚拟机与宿主机管理模块之间的设备通信,以此实现i/o设备的虚拟化功能调用。通过对设备中断的翻译与转发,统一由宿主机虚拟化管理程序处理所有中断,并转化为虚中断反馈至客户虚拟机,以此实现虚拟机对物理设备的调用与控制。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1