温州专业制作网站,做效果图网站有哪些,论企业网站职能建设,中山网站推广优化弹性裸金属服务器和神龙虚拟化#xff08;三#xff09;#xff1a;弹性裸金属技术 1.弹性裸金属技术背景1.1 传统 KVM 虚拟化系统导致 CPU 计算特性损失1.2 传统 KVM 虚拟化系统导致资源争抢不可避免1.3 传统 KVM 虚拟化系统导致 I/O 性能瓶颈 2.弹性裸金属技术实现2.1 VPC… 弹性裸金属服务器和神龙虚拟化三弹性裸金属技术 1.弹性裸金属技术背景1.1 传统 KVM 虚拟化系统导致 CPU 计算特性损失1.2 传统 KVM 虚拟化系统导致资源争抢不可避免1.3 传统 KVM 虚拟化系统导致 I/O 性能瓶颈 2.弹性裸金属技术实现2.1 VPC 和 EBS 云盘接入2.2 实现大量弹性网卡ENI和 EBS 云盘设备接入 3.X-Dragon Hypervisor 基于神龙的软硬一体的虚拟化技术3.1 自研虚拟 CPU 调度器 —— VOS3.2 内存优化内存分配器 VMEM 与用户态 QEMU 内存瘦身3.3 虚拟化运行加速3.4 极速启动3.5 物理机 CPU 全供给虚拟机 1.弹性裸金属技术背景
2003 年Xen 在 SOSP 发表 Xen and the Art of Virtualization拉开了 x86 平台虚拟化技术的大幕。2006 年AWS 发布 EC2Elastic Compute Cloud同年发布 S3Simple Storage Service拉开了公共云服务的大幕。EC2 的核心正是基于 Xen 虚拟化技术。虚拟化技术赋予了 EC2 核心产品价值 —— 弹性同时虚拟化技术给网络虚拟化、存储虚拟化和管控系统提供了业务部署点。
第一代虚拟化技术的特征是Xen/KVM 软件 network vSwitch 软件 storage initiator 管控等 All on Xeon。这代技术的痛点和思考如下图所示。 1.1 传统 KVM 虚拟化系统导致 CPU 计算特性损失
众所周知IaaS 公共云技术的核心是 Intel 至强处理器 VT 等 硬件辅助虚拟化技术Hardware-assisted virtualization配合主流虚拟化系统软件KVM / Xen / VMware ESXi 等实现了 IaaS 弹性计算客户则是通过 ECS或者 AWS EC2购买虚拟机VM形式的计算资源。
得益于高度成熟的虚拟化技术VM 形式的计算资源 “几乎” 等价于客户线下的物理服务器资源但是 “几乎” 并不是 “完全”。一个典型的案例就是 Intel 至强处理器的 VT 硬件辅助虚拟化能力会被公共云服务提供商的虚拟化系统 “消费掉”客户无法在公共云 VM 实例中再次部署虚拟化系统致使传统 OpenStack 和 VMware based workload 无法在公共云部署。
客户希望用一套 OpenStack / VMware 统一管理 公共云线上资源 和 专有云线下资源同时在控制面和数据面打通线上线下资源在兼顾专有云数据安全、法律合规的基础上充分利用公共云计算资源的弹性能力但是由于 Intel 至强处理器 VT 硬件辅助虚拟化能力 “被消费”使得此种 混合云技术 很难在公共云实现。云原生安全容器创新依赖 Intel VT 硬件辅助虚拟化能力输出这是传统虚拟化无法解决的问题。
1.2 传统 KVM 虚拟化系统导致资源争抢不可避免
以传统的 KVM 虚拟化系统为例双路 Skylake96 个 HT计算资源的虚拟化典型部署情况是有 8 个 HT 部署网络虚拟化 vSwitch 和存储虚拟化对外售卖 88 个 HT 作为 vCPU 计算资源。我们需要注意到对外售卖的 88HT vCPU 计算资源和 8 HT 网络 / 存储虚拟化是部署在同一组 Skylake CPU 上的那么如下共享资源争抢是不可避免的。
CPU DDR 带宽、LLC 等共享资源的争抢。在机头网络带宽迅速提升的当下DDR 带宽、LLC 等资源争抢现象愈发突出。半虚拟化Para-virtualizedI/O 设备模型等资源争抢引入售卖 CPU 抖动和售卖 I/O 抖动。存储和网络等 I/O 内部层级化 HQoS 难于实施。一般而言层级化 HQoS 是解决资源争抢的有效手段电信级网络设备一般会部署 HQoS 进行资源调度而 HQoS 的典型部署方法需要通过芯片实现。
1.3 传统 KVM 虚拟化系统导致 I/O 性能瓶颈
传统 KVM 虚拟化系统由计算虚拟化QEMU-KVM 网络虚拟化DPDK based vSwitch 存储虚拟化SPDK based I/O initiator 构成。
在 Intel 引入 VT 硬件虚拟化支持后配合 KVM、Xen 等虚拟化系统软件由 CPU 指令处理的数据面和 KVM 等虚拟化系统软件形成了控制面及异常处理路径此种软硬件协同设计既实现了 CPU 和内存虚拟化的数据路径的最小开销又保留了 KVM 控制路径和异常处理路径的高度灵活性。
同处于数据路径的存储虚拟化和网络虚拟化虽然通过 DPDK 和 SPDK 等技术接近了软件优化的技术极限但是仍然无法和芯片的加速性能媲美。特别是在网络吞吐向 100GbE 演进的过程中交换网络的带宽能力和 Intel 至强处理器的处理能力间的差距逐渐拉大在传统 KVM 虚拟化系统下通过 DPDK、SPDK 等纯软件进行 I/O 性能优化的瓶颈日渐凸显。
2.弹性裸金属技术实现
第一代虚拟化技术的业务痛点催生了第二代虚拟化技术的产生弹性裸金属产品也应运而生。那么第二代虚拟化技术具备哪些特征呢
全部 I/O 设备通过 VT-d 设备直通模式进入 VM以此减少 para-virtualization I/O 半虚拟化开销。随着 VT-d 设备直通的引入网络虚拟化和存储虚拟化需要一个新的业务部署点。VT-d 设备直通引入后SR-IOV 等技术却无法达到和传统 QEMU PV 设备一样的灵活性I/O 硬件虚拟化催生 Intel scalable IOV 的业务诉求。随着存储虚拟化和网络虚拟化新的业务部署点的产生这个业务部署点很显然需要针对计算、网络、存储、安全等 IaaS 核心业务部署定制化芯片加速。同时支持传统 VM、弹性裸金属服务器、安全容器等 IaaS 最新业务诉求。
简而言之Hypervisor 的主要组件全部下沉进入一个定制计算节点该定制计算节点完成 I/O 设备虚拟化、网络虚拟化、存储虚拟化和管控部署以及安全特性部署等。
而主机侧针对公共云的需求从计算和内存原来的 QUME KVM 方式经过高度定制和瘦身后降低了主机资源占用并提升计算服务质量演化到了裸金属架构。
第二代虚拟化技术使弹性裸金属的产品落地成为可能。阿里云在 2017 年 10 月举行的杭州云栖大会上正式发布弹性裸金属产品同年 11 月AWS reinvent 发布 EC 2 版本弹性裸金属产品。中美公共云服务提供商可以说在弹性裸金属的产品定义、产品适用场景和技术上殊途同归。弹性裸金属的核心产品技术逻辑通过技术创新使普通物理服务器具备虚拟机的弹性和使用体验。
正是有了这个逻辑我们可以推演出技术创新的突破点通过软硬一体化的技术手段让普通物理服务器能够无缝接入云平台的管控系统、VPC 云网络和 EBS 云盘。
2.1 VPC 和 EBS 云盘接入
我们知道在虚拟化技术中虚拟机是通过 Virtio 实现网络和存储 I/O 设备的同时我们注意到Virtio 这个半虚拟化设备模型实际上是严格按照 “真实” PCIe 设备规范的定义而实现的 I/O 设备。也就是说Virtio 半虚拟化设备完全可以通过芯片实现。
在通过芯片实现 Virtio 的时候考虑到 VPC 和 EBS 云盘实现的复杂度我们采用了新的模式让芯片透传 PCIe TLP 包到可编程处理器然后通过可编程处理器复用 QEMU 已有的成熟的 Virtio 后端代码。此种模式能够最大限度地保持既有的虚拟化架构做到云平台管控系统、VPC 系统、EBS 云盘系统的 “零修改”。
2.2 实现大量弹性网卡ENI和 EBS 云盘设备接入
VT-x/KVM 虚拟化技术具有天然技术优势支持大量网络和存储设备。而弹性裸金属产品的核心出发点就是要兼具虚拟机和传统物理机的优点。虚拟机对大量网络设备和存储设备的支持必须在弹性裸金属产品中予以实现。
在多种规格的网卡和存储 PCIe I/O 设备接入时根据 PCIe 规范有两个方法
1️⃣ 通过多级 PCIe switch 扩展实现大量 PCIe switch downstream port然后每个 PCIe switch downstream port 挂载一个 PCIe I/O 设备2️⃣ 通过 PCIe SR-IOV 技术支持大量 PCIe virtual functionVF设备。
进一步对比虚拟机 I/O 设备我们可以看到设备的热插拔、Guest OS 的零侵入是公共云 IaaS 产品的刚需。只有通过多级 PCIe switch 扩展模式才能通过 PCIe native hotplug 技术标准实现上述和虚拟机一致的设备热插拔和 Guest OS 零侵入。产品需求明确后我们创新性地通过芯片 RTL 实现了全球第一个片上多级 PCIe switch 扩展当前最多能够支持 63 个设备以此实现大数量规格的网络 ENI 和存储 EBS 云盘PCIe I/O 设备接入同时由于支持原生 PCIe 原生热插拔能力保证了 Guest OS 的零侵入以及客户在 Open API 和控制台等方面和虚拟机一致的使用体验。
3.X-Dragon Hypervisor 基于神龙的软硬一体的虚拟化技术
在阿里云神龙硬件平台下虚拟化架构也做了相应的升级使计算虚拟化部分的架构更加清晰简捷让虚拟机能提供接近物理机的性能。如下图所示神龙虚拟化架构的主要特点是
I/O 链路从传统的通过软件实现转变为通过硬件和直通设备实现存储虚拟化、网络虚拟化都在 MOC 卡上实现同时将管控系统、监控程序等都下沉到 MOC 卡上。在提供计算服务的物理机上只运行自己裁剪的 Linux 操作系统和轻量化的虚拟机监控器。 神龙虚拟化架构比起传统的 KVM 虚拟化的关键优化技术点简要描述如下。
3.1 自研虚拟 CPU 调度器 —— VOS
VOSVM-Oriented Scheduler是面向虚拟机的调度器是阿里云在神龙平台上自研的调度器减少了虚拟 CPU 调度开销同时将其他控制面的作业调度给虚拟 CPU 带来的争抢下降一个数量级研发的更加稳定和高效的计算虚拟化产品。如下图所示VOS 调度器实现的是非公平调度与内核中的 CFS 调度器不同让虚拟 CPU 线程具有更高执行优先级保证客户购买的虚拟机的计算性能而控制面的作业调度执行被安排在预先设定的一个较低优先级和预设时间片中投机执行而且控制面的作业是可以被内核态抢占的。 通过 VOS 调度器虚拟 CPU 的调度延迟低到毫秒级通过 ping flood 来测试网络 ping 的延时抖动抖动下降到了百万分之一左右即 ping 一百万个报文只遇到 1 个报文延迟的比例比均值明显偏大抖动比之前的架构下降了两个数量级。在物理机上执行的控制面的作业包括虚拟机生命周期管理、QEMU 控制线程、写日志、监控执行、包括热升级 / 热迁移在内的运维操作在 VOS 的管理下正在运行的虚拟 CPU 的干扰被控制在一个非常低的水平虚拟机的计算稳定性大幅提升。
3.2 内存优化内存分配器 VMEM 与用户态 QEMU 内存瘦身
内存分配器 VMEM 是阿里云研发的用于虚拟机内存分配的分配器可以大幅减少内核维护的内存页表等开销开销从以前的 1.5 % 1.5\% 1.5% 左右下降到 0.1 % 0.1\% 0.1% 左右支持 1GB 的大页进一步减少 EPT 开销实现了通过 vMCE 对硬件错误的内存页进行隔离。
在内存方面我们通过 QEMU 对其进行瘦身将单个虚拟机的 QEMU 进程内存开销降低到 5MB 以内通过全新设计的用户态内存分配器避免了内存碎片同时对不常用的内存资源进行延迟分配。
通过这两种内存优化手段神龙虚拟化的架构比传统 KVM 虚拟化节省了约 10%的内存。
3.3 虚拟化运行加速
通过硬件加速虚拟机中的 HLT 和 MWAIT 指令使其唤醒延迟与物理机几乎一样。同时将定时器进行硬件虚拟化在虚拟机中访问定时器不会再触发 VMEXIT从而提升虚拟机性能。通过这些优化进程调度性能得到了较大提高下图的调度延迟实测数据展示的是在某次测试中调度两百万个进程并统计每次调度的延迟的结果。可以看到延迟有 15 % 15\% 15% 的下降。图中的 g5.4xlarge 实例是之前的 KVM架构的 ECS 虚拟机实例规格g6.4xlarge 是神龙硬件平台下经过优化的 ECS 虚拟机实例规格。 3.4 极速启动
为了让虚拟机加速启动我们对神龙虚拟化架构也做了很多优化。首先是资源的快速分配包括实现多线程的初始化、虚拟机内存页分配时的批处理化。同时对虚拟机依赖的固件进行裁剪、重构、优化使虚拟机实现毫秒级加载。我们还对一些特殊的应用场景应用了内部称为 vmfork 的技术让虚拟机能实现秒级的快速复制。
3.5 物理机 CPU 全供给虚拟机
在传统的 KVM 虚拟化架构下宿主机的 CPU 资源是不可能全部供给虚拟机使用的一般还要预留 CPU 核用于网络虚拟化软件、存储虚拟化软件、管控系统、监控脚本等的计算资源开销。在神龙架构下网络虚拟化和存储虚拟化都通过硬件虚拟化的方式下沉到一张 MOC 卡上同时管控系统和绝大部分监控脚本都下沉到 MOC 卡上运行这样物理机 CPU 资源就可以全部通过虚拟化的方式分配给虚拟机使用。经过评估通过下沉这部分 CPU 开销到 MOC 卡上物理机的 CPU 资源利用率能提高 10 % 10\% 10% 左右。