传媒网站,集团定制网站建设公司,移动惠生活app下载网址,免费制作手机apptratoVirt作为计算产业中面向云数据中心的企业级虚拟化平台#xff0c;通过一套统一的架构支持虚拟机、容器和Serverless三种场景。它不仅在轻量低噪、软硬协同和Rust语言级安全等方面具备关键技术竞争优势#xff0c;还预留了接口和设计来支持更多特性#xff0c;并向着标准…tratoVirt作为计算产业中面向云数据中心的企业级虚拟化平台通过一套统一的架构支持虚拟机、容器和Serverless三种场景。它不仅在轻量低噪、软硬协同和Rust语言级安全等方面具备关键技术竞争优势还预留了接口和设计来支持更多特性并向着标准虚拟化演进。本文将深入解析StratoVirt中的vCPU拓扑SMP配置与实现。
一、CPU拓扑的基本概念
CPU拓扑用来表示CPU在硬件层面的组合方式它描述CPU的组成关系并为内核的调度器提供服务从而提供更好的性能。在StratoVirt中支持CPU拓扑为后续的CPU热插拔开发打下一个基础。常见的CPU SMP结构是Socket → Die → Cluster → Core → Thread。
Socket处理器插座用于安装CPU。Die处理器在生产过程中从晶圆上切割下来的一个个小方块Die之间的组件通过片内总线互联。Cluster簇大核或者小核的一种组合。Core表示独立的物理CPU。Thread逻辑CPU英特尔超线程技术引入的新概念。
二、vCPU拓扑的获取原理
CPU拓扑的获取原理因x86和ARM架构的不同而有所区别。
在x86架构下操作系统会通过读取CPUID来获取CPU拓扑结构。CPUID指令由CPUID操作码标识是处理器补充指令允许软件发现处理器的细节。程序可以使用CPUID来确定处理器类型。跟CPU拓扑相关的CPUID叶分别是0BH和1FH1FH是0BH的扩展可以用来表示更多的层级。Intel建议先检查1FH是否存在如果1FH存在会优先使用它。
在ARM架构下如果操作系统是依靠Device Tree启动的则会通过Device Tree去获取CPU拓扑。如果是以ACPI的方式启动的话操作系统会通过解析ACPI的PPTT表去获取CPU拓扑结构。PPTT表Processor Properties Topology Table用于描述处理器的拓扑结构还可以描述附加信息例如处理器拓扑中的哪些节点构成物理包。
三、StratoVirt中vCPU模块的设计与实现
StratoVirt的虚拟化解决方案是一套软硬结合的硬件辅助虚拟化解决方案其运作依赖于硬件辅助虚拟化的能力如VT-X或Kunpeng-V。vCPU模块的实现紧密依赖于这套硬件辅助虚拟化的解决方案。
对于物理机的CPU而言硬件辅助虚拟化为CPU增加了一种新的模式Non-Root模式。在该模式下CPU执行的并不是物理机的指令而是虚拟机的指令。这种指令执行方式消除了大部分性能开销非常高效。但是特权指令如I/O指令不能通过这种方式执行还是会强制将CPU退出到普通模式即ROOT模式下交给内核KVM模块和用户态StratoVirt去处理处理完再重新回到Non-Root模式下执行下一条指令。
StratoVirt中的vCPU模块主要围绕着KVM模块中对vCPU的模拟来实现。为了支持KVM模块中对CPU的模拟CPU子系统主要负责处理退出到普通模式的事件以及根据在GuestOS内核开始运行前对vCPU寄存器等虚拟硬件状态的初始化。StratoVirt通过第三方库kvm_ioctls来完成和KVM模块的交互通过匹配vcpu_fd.run()函数的返回值来处理退出到ROOT模式的事件。该函数的返回值是一个名为VcpuExit的枚举定义了退出到ROOT模式的事件类型包括I/O的下发、系统关机事件、系统异常事件等。根据事件的类型vCPU将对不同的事件作出各自的处理。
以上的整个过程都被包含在一个独立的vCPU线程中用户可以通过对vCPU线程进行绑核等方式让虚拟机的vCPU获取物理机CPU近似百分之百的性能。同时对vCPU寄存器虚拟硬件状态信息的初始化则是和StratoVirt的另一个模块BootLoader相互结合。在BootLoader中实现了一种根据Linux启动协议快速引导启动Linux内核镜像的方法。在这套启动流程中BootLoader将主动完成传统BIOS对一些硬件信息的获取将对应的硬件表保存在虚拟机内存中同时将提供一定的寄存器设置信息。这些寄存器设置信息将传输给vCPU模块通过设置vCPU结构中的寄存器值让虚拟机CPU跳过实模式直接进入保护模式运行这样Linux内核就能直接从保护模式的入口开始运行。这种方式让StratoVirt的启动流程变得轻量快速。
vCPU模块还有一大职责就是管理vCPU的生命周期包括new创建、realize使能、run运行、pause暂停、resume恢复、destroy销毁。New和realize的过程就是结构体创建和寄存器初始化的流程run的过程即是实现KVM中vCPU运作和VCPU_EXIT退出事件处理的流程。另外的三种生命周期的实现则涉及到对线程同步的精密控制。
四、总结
StratoVirt通过其高效的vCPU拓扑SMP配置与实现为用户提供了高性能、灵活且安全的虚拟化解决方案。通过深入解析其CPU拓扑的基本概念、获取原理以及vCPU模块的设计与实现可以更好地理解和应用StratoVirt为云数据中心的高效运行提供有力支持。