Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化_Alvis-lby的博客-CSDN博客
Armv8架构虚拟化介绍 - 码农教程 (manongjc.com)
TEE学习(二) ARMv8的虚拟化 - ppddcsz - 博客园 (cnblogs.com)
ARM 虚拟化介绍_Free飝Fly的博客-CSDN博客_arm 虚拟化
Intel 虚拟化技术参考
简介
VT,就是虚拟化技术(Virtualization Technology)的缩写。Intel VT就是指Intel的虚拟化技术。这种技术简单来说就是可以让一个CPU工作起来就像多个CPU并行运行,从而使得在一台电脑内可以同时运行多个操作系统。只有部分Intel 的CPU才支持这种技术。
技术对比
IntelVT虚拟化技术和多任务(Multitasking)、Hyper-Threading超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,你可以拥有多个独立的操作系统同时运行,每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或虚拟主机(虚拟机)上。而Hyper-Threading超线程只是在SMP系统(SymmetricMultiProcessing)中单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
当然了,如果一个CPU同时支持Hyper-Threading和虚拟化技术的话,每一个虚拟CPU在各自的操作系统中都被看成是两个对称多任务处理的CPU。
技术发展
最早出现
虚拟化技术可能让人联想到早期IntelCPU上的“Virtual8086”技术,这种V86模式技术是用来兼容早期的8086/8088处理器而设计的,最早出现386机器上。使用V86模式你可以创建好几个并行虚拟8086计算机来运行多个DOS程序.同样道理,使用VT技术你也可以创建几个完整的虚拟机来运行几个完整的操作系统。
改进原因
可是既然已经有VMware这类可以达到虚拟目的的软件,为什么还要努力来实现硬件CPU内部的虚拟化技术呢?这是因为硬件CPU的虚拟化技术有许多优势。支持虚拟化技术的CPU带有多余的指令集来控制虚拟过程,通过这些指令集,控制软件VMM(VirtualMachineMonitor)会很容易提高性能,相比纯软件的虚拟化实现方式,会在很大程度上提高性能。
IntelVT虚拟化技术的实施需要处理器、芯片组、BIOS、VMM软件的同时支持,这些特定的硬件、软件必须全部到位。性能要视不同的硬件、软件而定。支持Intel虚拟化技术的VMM(Hypervisor)已有开源项目和版本,并在持续优化中,某些厂商也已推出了成熟的商用版本。Intel将硬件辅助虚拟化集成到主要的服务器组件中,帮助IT机构在每台服务器上整合更多的应用和更繁重的工作负载,从而进一步提高灵活性、可靠性并降低总体拥有成本TCO(TotalCostofOwnership)。
核心技术
IntelVT虚拟化技术包括分别针对处理器、芯片组、网络的IntelVT-x、IntelVT-d和IntelVT-c技术:
1. Intel VT-x技术:增强处理器的VT虚拟化技术,包括IntelVTFlexPriority、IntelVTFlexMigration(Intel虚拟化灵活迁移技术)、ExtendedPageTables(IntelVT扩展页表)。
IntelVT-x可以让一个CPU工作起来像多个CPU在并行运行,从而使得在一台物理服务器内可以同时运行多个操作系统。能够降低(甚至消除)多个虚拟机操作系统之间的资源争夺和限制,从硬件上极大地改善虚拟机的安全性和性能,有助于提高基于软件的虚拟化解决方案的灵活性与稳定性。IntelVT-x技术可以消除VMM(VirtualMachineMonitor虚拟机监视器)参与虚拟机“中断”请求的处理与特定指令的执行,这样VMM操作和控制虚拟机时,将更加快速、可靠和安全。
此外,IntelVT-x具备的虚拟机迁移特性还可为IT投资提供有力保护,并进一步提高故障切换、负载均衡、灾难恢复和维护的灵活性。
IntelVTFlexPriority(灵活优先级):当处理器执行任务时,往往会收到其它设备或应用发出的请求或“中断”命令。为了最大程度减少对性能的影响,处理器内的一个寄存器专用来监控任务优先级,只有优先级高于当前运行任务的请求或“中断”才被及时处理。
IntelVTFlexMigration(灵活迁移):虚拟化能够在无需停机的情况下,将运行中的虚拟机在物理服务器之间进行迁移。借助此项技术,管理程序能够在迁移池内的所有服务器中建立一套一致的指令,实现工作负载的无缝迁移。需注意的是,在不同厂商、不同型号的处理器之间迁移,可能由于指令集不同而出现故障或问题。
ExtendedPageTables(扩展页表):为了降低实现内存虚拟化的难度和提升内存虚拟化的性能,ExtendedPageTables直接在硬件上支持虚拟机内存的逻辑地址->虚拟机内存的物理地址->物理服务器内存的物理地址的两次转换。
IntelVT-x已经扩展到了Intel多个产品系列中,包括Pentium、Celeron、Corei3、Corei5、Corei7、Core2Duo、CoreSolo、Core2Extreme、Core2Quad、Xeon、Quark、Atom、Itanium。
2. Intel VT-d技术:支持直接I/O访问的IntelVT虚拟化技术。
如果每台服务器上部署更多的虚拟机,虚拟机数据进出系统的I/O流量就会增加并且更趋复杂。如果没有硬件支持,VMM必须直接参与每项I/O操作,不仅会减缓数据传输速度,还会由于VMM的频繁活动而增大服务器处理器的负载。这就如同在一个繁忙的停车场,每位车主都不得不通过独一的进出口,并且只由独一的门卫放行。这样不仅会耽误车主的时间,也会使门卫工作紧张无法处理其他事务。英特尔芯片组的IntelVT-d技术可以出色地解决上述问题。
IntelVT-d通过VMM将特定I/O设备安全分配给特定虚拟机来实现,从而减少VMM参与管理I/O流量的工作,不但加速了数据传输,而且消除了大部分的性能开销。每个I/O设备在系统内存中都有一个专用区域,只有该I/O设备及分配到该设备的虚拟机才能对该内存区域进行访问。
VMM完成初始分配之后,数据即可直接在虚拟机与为其分配的I/O设备之间进行传输。这样,就加快了I/O的流动,减少VMM活动及服务器处理器的负载。此外,由于特定设备或虚拟机的I/O数据内存区不能被其它硬件或虚拟机访问,系统的安全性与可用性也得到了增强。
3. Intel VT-c技术:支持网络连接的Intel虚拟化技术,包括虚拟机设备队列(VMDq)、虚拟机直接互连(VMDc)。
随着企业在虚拟化环境中部署越来越多的应用,并利用实时迁移来均衡负载或提升可用性,对虚拟化I/O设备的要求也在显著提高。通过将广泛的硬件辅助特性集成到I/O设备(该设备用于保持服务器与数据中心网络、存储基础设施及其它外部设备的连接)中,IntelVT-c可针对虚拟化进一步优化网络。这套技术组合的功能与邮局非常相似:将收到的信件、包裹分门别类,然后投递到各自的目的地。IntelVT-c在专用网络芯片上执行这些功能,大幅提高了交付速度,减少了VMM与服务器处理器的负载。IntelVT-c包括以下两项关键技术(当前所有的英特尔万兆服务器网卡及千兆服务器网卡均支持)。
虚拟机设备队列(VMDq):最大限度提高I/O吞吐率。在传统服务器虚拟化环境中,VMM必须对每个单独的数据包进行分类,并将其发送到相应的虚拟机。这样会占用大量的处理器周期。而借助VMDq,该分类功能可由英特尔服务器网卡内的专用硬件来执行,VMM只需负责将预分类的数据包组发送到相应的虚拟机。这将降低I/O延迟,使处理器获得更多的可用周期来处理业务应用。IntelVT-c可将I/O吞吐量提高一倍以上,使虚拟化应用达到接近物理服务器的吞吐率。
虚拟机直接互连(VMDc):大幅提升虚拟化性能。VMDc支持虚拟机直接访问网络I/O硬件,从而显著提升虚拟机性能。如:通过单个英特尔万兆服务器网卡,可为10个虚拟机中的每个虚拟机分配一个受保护的、1Gb/s的专用链路。这些通信链路直接绕过了VMM交换机,进一步提升了I/O性能并减少服务器处理器的负载。