本技术公开了一种基于ARM VHE的微内核Hypervisor的虚拟机暂停处理方法,部署基于ARM VHE的微内核Hypervisor,包括Hypervisor微内核模块、Host OS服务线程和虚拟机用户态管理线程,其中Hypervisor微内核模块中的内核虚拟化扩展模块中的CPU虚拟化模块包含运行在EL0/EL1模式的vCPU运行线程和运行在EL0模式的vCPU处理线程,当Hypervisor监测到vCPU运行线程暂停时,根据暂停触发原因采用对应的处理操作:如果当前暂停原因属于中断触发或者是属于在Hypervisor微内核下处理的异常触发,则由内核虚拟化扩展模块在EL2直接进行对应虚拟机暂停处理操作,如果是其他情况,则调度vCPU处理线程在EL0进行虚拟机暂停处理操作;操作完成之后,vCPU运行线程恢复运行。本发明优化了Hypervisor对虚拟机的中断和异常的处理,提高了虚拟机暂停处理性能。
背景技术
微内核(Micro kernel)是提供操作系统核心功能的内核的精简版本,与宏内核有显著不同,微内核仅提供最基本的功能,如任务调度、进程间通信和内存管理,而设备驱动、网络和文件系统等服务则在用户空间实现。应用程序通过IPC(通常是消息传递)与内核服务模块进行通信。这种设计减少了内核代码量,实现了服务的低耦合和地址空间隔离,从而提高了系统的稳定性、安全性和可移植性。
虚拟化技术的核心在于对底层硬件资源进行抽象和集中管理,形成资源池,这些资源随后可以被多个独立的执行环境共享使用,这项技术使得在同一硬件平台上可以并行运行多个这样的环境。为了确保这些环境之间的互不干扰与安全隔离,虚拟化技术依赖于一个关键的管理组件,即虚拟机管理器(Hypervisor),负责协调和管理这些资源的分配和使用。
虚拟化技术主要包含全虚拟化和半虚拟化。全虚拟化技术区别于其他虚拟化技术最大的特点就是,客户机可以完全不做修改地运行在虚拟化平台上;半虚拟化,同样使用Hypervisor与底层硬件进行通信,但不同于全虚拟化,半虚拟化需要根据功能需求修改客户机的内核源码,包括替换原客户操作系统的一些特权操作,这样原本一些需要直接通过CPU执行的保护任务,可以在修改后的内核,通过类似于系统调用Syscall的虚拟机调用Hypercall直接执行,而不需要引起陷阱,Hypervisor进行模拟,这样就有效提高了虚拟机的效率,所以在实时性需求较高的场景下,半虚拟化具有更加显著的优势。
虚拟化的实现方式主要分为Type-1型的虚拟机管理器(Hypervisor)和Type-2型的虚拟机管理器(Hypervisor),Type-1型的Hypervisor直接运行在宿主硬件上,控制硬件并管理客户操作系统,提供更高级别的隔离(Xen);Type-2Hypervisor作为宿主操作系统上的一个应用程序运行,与直接在硬件上运行的Type-1 Hypervisor不同,Type-2Hypervisor在宿主操作系统之上提供虚拟化服务,调用宿主操作系统提供的调度、内存管理和硬件支持等常见的操作系统功能实现虚拟化。
微内核的Hypervisor架构一般包括两种模式:跨层模式和ARM VHE(虚拟化扩展)模式。跨层模式主要是将管理程序拆分成Lowvisor、Midvisor和Highvisor三个分层组件进行实现。Lowvisor是唯一运行在Hypervisor(EL2)的功能组件,主要的功能主要是直接与硬件通信;Midvisor与Highvisor分别运行在Host OS的内核态(EL1)与用户态(EL0)来提供对虚拟机的管理服务。ARM VHE模式是令Hypervisor的内核整体在EL2层级运行,而虚拟机以线程的方式在EL1和EL0层级运行。
虚拟机暂停是指由于虚拟机异常或者当前cpu核的中断触发,此时虚拟机暂停,Hypervisor进行异常或者中断处理,Hypervisor处理完成之后,虚拟机恢复运行这个流程。对于虚拟机暂停处理,跨层模式的设计没有充分利用ARMv8所支持的虚拟化主机扩展(Virtualization Host Extensions),分层设计会造成由频繁的异常状态跃迁所带来额外的时间开销。而ARM VHE模式由于是把Hypervisor的内核整体运行在EL2,EL1仅运行虚拟机的内核,EL0运行虚拟机和Hypervisor的线程,在硬件上更易于对虚拟机暂停进行处理。但是目前对于ARM VHE模式的工作重心是根据记录器汇报的即将调度的虚拟机进程优先级,判断是调用通用系统的vCPU线程还是实时系统的vCPU线程以确保实时性,而并未对该架构下虚拟机中断与异常处理的优化进行探究。
就具体的虚拟机暂停处理方法而言,现有的各项异常与中断处理方法存在以下不足:
(1)在专利号为“CN202311606091.9”、专利名称为“Hypervisor虚拟化系统异常处理系统及方法”的专利中所提出的异常处理方法需要额外资源来运行Host VM,并通过事件通道(Event Channel)传输Guest OS的异常信息,增加了内核的复杂性。
(2)在专利号为“CN202010660215.1”、专利名称为“分离式虚拟机及其虚拟机架构、构建方法和优化方法”的专利中所提出的分离式策略未充分利用CPU核心资源。vCPU运行线程挂起后,当前物理核心会处于等待状态,直到另一个核心上的vCPU监控线程完成处理并唤醒。此外,每次VM EXIT都涉及核间通信,增加了CPU开销。
(3)在专利号为“CN202110088713.8”、专利名称为“一种面向ARM架构虚拟化领域的中断虚拟化处理方法及系统”的专利中提出了用户态Hypervisor介入中断注入的设计,这种设计方案对于每次虚拟中断的注入,都会有用户态线程的上下文恢复和异常等级跃迁的额外成本。
(4)对于KVM和ZVM的设计方案,vCPU线程包含两套上下文,一套是运行虚拟机代码的上下文,一套是运行Hypervisor代码的上下文,每次VM ENTRY和VM EXIT都需额外保存和恢复Hypervisor的上下文,这增加了虚拟机暂停处理的复杂性和开销。
实现思路