走进边缘云:
边缘计算背后的性能需求
火山引擎边缘计算节点
随着人工智能、自动驾驶、云游戏、直播音视频等应用场景的大规模落地,这些应用对数据处理的时效性、安全性提出了更高要求,集中式云计算模式难以完全满足其在网络时延、带宽成本、数据安全等方面的需求,伴随用户对云计算服务能力的多元化需求,边缘计算应运而生。边缘计算基于靠近应用和数据源头的网络边缘位置,就近提供计算、网络、存储、安全、智能等服务,据 IDC 报告显示,到 2024 年底,全球在边缘计算上的支出预计将达到 2320 亿美元。同时,Gartner 报告显示,到 2025 年底,全球 75% 的企业生成数据将会在边缘产生和处理。
边缘计算节点是火山引擎边缘云提供的通用化边缘计算服务,其基于覆盖中国各省份和运营商的边缘节点,在核心底座边缘云原生操作系统之上,提供弹性、可靠、分布式的算力资源和低时延的网络资源,帮助用户将业务快速部署到网络边缘,提升响应速度、降低带宽成本,为用户提供稳定、高效、丰富的一站式算力服务。结合基础设施、通用化计算服务、场景化计算服务、网络服务和对应解决方案,共同构成了边缘场景下的完整分布式云计算解决方案。
边缘计算节点提供如下两种计算形态:
边缘虚拟机: 提供弹性、稳定、高性能、安全的虚拟机实例服务,支持 x86/ARM/GPU 等多样化计算资源
边缘裸金属:基于边缘基础设施,提供高性能、快速交付、便捷运维的裸金属服务器
本文主要围绕边缘虚拟机实例性能优化,深入探讨边缘高性能虚拟机的需求背景、实现原理及背后的核心价值。
边缘场景的性能需求
边缘计算节点目标为客户提供高性价比边缘算力,部分客户场景对单位成本下的业务性能及性能稳定性敏感,以下是两个案例。
直播客户案例
随着移动端直播和直播电商的兴起,直播行业已经成为数字经济的重要组成部分。从技术维度看,直播业务对即时性和互动性要求较高,通过利用边缘低延时算力和网络、低成本带宽,可以显著提升直播业务品质,降低运营成本。其与边缘结合的概要架构如下图所示,主播推流到边缘节点、观众从其就近的边缘节点拉流。在实际直播客户接入过程中,单位算力所能处理的流量带宽直接关联该类客户业务成本, 部分上云客户也对虚拟机和裸金属性能和成本差异敏感,因此如何能够让客户既使用到虚拟机实例的丰富特性,又提供较好的业务性能就是一个重要的议题。
加速客户案例
基于覆盖全球的加速节点和网络基础设施,实现游戏 / 应用加速是边缘计算的另一个重要场景,该类客户对延时和网络抖动敏感,下图是一个使用边缘云全球加速和边缘虚拟机产品实现跨域加速的案例。用户就近接入全球加速网络,通过分布在边缘机房的虚拟机实例部署业务服务,并最终通过公网和跨域专线与目标服务通信。该部分客户对网络抖动有较低容忍度,经过深入分析,中断 / 进程抢占、大量 VM Exit 均会造成客户业务抖动,如何能够尽量降低虚拟化层对业务的干扰就成了保障加速类客服服务质量的关键。
极致优化:高性能虚拟机
如何实现“零”损耗
上述业务需求驱动我们思考如何能够降低虚拟化层对性能的扰动,提高业务场景的虚拟机单位性能。边缘高性能虚拟机项目于是诞生,其详细介绍如下:
整体架构
边缘计算通过虚拟化技术向用户提供云计算基础服务,底层基座依托于 Qemu+KVM 来实现虚拟化(资源,安全等)隔离。Qemu+KVM 的虚拟化方案虽然会尽可能的利用硬件能力来降低虚拟化开销,但是像 CPU 核间中断(IPI),Timer 中断,虚拟设备中断等仍存在大量虚拟化开销,同时虚拟化硬件加速能力(如 Posted Interrupt 等)设计的复杂性也会带来额外硬件开销。我们通过修改 Host Kernel,KVM 模块等方式,为云计算提供了一种新的硬件完全直通,性能损耗极低的高性能虚机方案。
该方案的设计理念是打破虚拟化的“边界”,让 Guest Kernel 像 Host Kernel 一样运行在物理机上。为了让 CPU/Memory/ 设备等硬件的资源需要直接 assign 给 Guest,每个高性能虚拟机的 vCPU 需要独占一个物理 CPU,内存,中断等资源。
边缘高性能虚拟机的设计目标:
VM Exit 数量降至最低,对标裸金属
Guest 镜像无感,无须修改 Guest 镜像
支持热升级,热迁移等云上基础能力
支持和通用 VM 实例混部的能力
其整体架构设计如下:
关键技术
Intel 的 VT-x 技术是在 2005 年首次发布的。VT-x 技术是 Intel 虚拟化技术的一部分,旨在提高虚拟化性能并增强虚拟化软件的功能。Intel VT-x 引入了 Root 模式和 Non-Root 模式:Root 模式是虚拟机监视器(VMM)运行的特权模式,也称为 Hypervisor 模式;Non-Root 模式是客户操作系统或虚拟机运行的模式。借助 VMLAUNCH/VMRESUME 指令,VMM 将控制权转移给虚拟机,当虚拟机在运行过程中需要执行特权指令或访问受保护资源时,会产生 VM Exit 将控制权转移给 VMM,由 VMM 协助模拟处理。
Guest 中断不退出机制
中断虚拟化对虚拟化的影响是非常大的,早期虚拟化的实现中,向 Guest 注入中断前一般要先将 vCPU 从 Non-Root 模式 kick 出来,然后由 VMM 模拟中断控制器,完成中断的注入。尽管后来 CPU 厂商为虚拟化引入了 apicv 等硬件加速技术,减少了 Guest 访问 LAPIC 寄存器引入的虚拟化损耗,但仍需要 VMM 协助完成中断的注入。再后来,Posted-Interrupt 技术以及 VT-d 技术进一步缓解了这个问题,但是在解决中断注入问题的同时,硬件层面也引入了不小的性能开销,我们测试对比发现,相比裸金属物理设备直接产生中断,通过 Posted-Interrupt 方式注入中断的延迟要高出很多。
在高性能虚拟机的设计框架下,除了虚拟设备这些必须要要模拟注入的中断,直通设备,LAPIC Timer 等设备产生的中断能直接投递给 Guest,就像他们在物理环境中直接投递给物理 CPU 一样。通过配置 VMCS 中的 INTR_EXITING 字段,可以控制外部中断发生时 Guest 不退出,以此为基础,我们实现了一个外部中断不会导致 Guest 退出的基础框架,后续所有的中断都将尽可能的直接投递给 Guest,而不是产生 external interrupt VM Exit 后再由 VMM 模拟注入。
但是,真实世界中,物理 CPU 上产生的中断并不是全部都是属于 Guest 的,比如 host kernel IPI 中断,host 设备中断如 NVMe SSD 等。对于设备中断,可以通过修改 host kernel 实现设备中断隔离技术,将所有的设备的中断 affinity 调整隔离到指定的控制面 CPU 上;对于系统中断如 IPI,这类中断必须由本地 CPU 处理,可以通过 send IPI as NMI 技术,将 IPI 中断类型修改为 NMI type,从而强行将 vCPU kick 出来后在 Host kernel 处理这些系统中断。至此,我们为运行高性能虚拟机的物理 CPU 隔离出一个“干净的”vCPU 运行环境。在这个环境下,“几乎”所有的 Host 中断都不会投递到该 CPU 上,一旦收到中断,一定是 Guest 中断,中断会直接投递到 Guest 或者通过 VMM 记录 pending Guest interrupt 并在下次 Guest enter 时注入。
Timer 中断直通技术
虚拟化场景下,Guest Timer 是由 VMM 负责模拟的。以 x86 CPU 虚拟化为例,KVM 为每个 vCPU 模拟一个 LAPIC Timer,LAPIC Timer 虚拟化的开销当前是很大的,以常见的 Intel TSC Deadline Mode 为例,Guest 编程 TSC Deadline MSR 时会产生一次 VM Exit,Timer 到期 fire 时又会因为 external interrupt 产生一次 VM Exit。Intel 在最新一代 CPU 上引入了 apic Timer 硬件加速来降低这些开销,但一是这些新的 CPU 还没有大规模商业化,真正的性能收益未知,二是与 posted-Interrupt 类似,这类硬件加速技术一般会引入一定的硬件性能损耗。
在高性能虚拟机技术方案中,由于 host 控制面 CPU 要处理的工作不繁重,我们强制 host CPU 使用早期的 Broadcast Timer,然后将每个 CPU 的 LAPIC Timer 完全直通给 Guest 使用。对于直通给 Guest 的 LAPIC Timer,通过配置 Guest 修改 TSC Deadline MSR 不退出,再借助前面介绍的 Guest 中断直接投递机制,实现 Guest LAPIC Timer 没有任何 VM Exit。
绕过 Posted-Interrupt 机制的 VFIO 中断直通技术
在传统的虚拟化场景中,对于直通设备的中断注入是基于 Posted-interrupt 机制(Intel)来完成的,Posted-Interrupt 机制会带来额外的硬件开销。借助 VFIO 框架,直通设备产生中断时,首先被 IOMMU 拦截,然后通过查找 IOMMU 中的 IRTE 表项,找到要投递给 Guest 的目的 vCPU 和中断 vector,最终通过 IOMMU 的 Interrupt remapping 或者 Posted-Interrupt 机制完成中断的注入。
高性能虚拟机通过巧妙地修改硬件 IOMMU IRTE 表项,使其直接记录要投递给 Guest 的 destination vCPU 和 vector,从而实现了直通设备的中断直接投递到 Guest 内部的效果。
IPI extreme fastpath
虚拟化场景下,Guest 内部发送 IPI 会写 LAPIC ICR 寄存器,该操作会产生 VM Exit,最终由 VMM 负责模拟,并注入 IPI 中断给目的 vCPU。
出于安全性考虑,高性能虚拟机没有将 ICR 直通给虚机,因此 Guest IPI 仍需要 VMM 协助模拟。在社区 IPI fastpath 的基础上进一步优化,使用汇编重写简化了 VMM 模拟 IPI 的逻辑,并在 VMM 侧写 ICR 产生 IPI 中断直接投递到 Guest,最大限度的降低 write ICR exiting 模拟带来的性能开销。
内核资源动态隔离技术
为了让高性能虚拟机最大限度的独占物理核,我们构建了一套完整的的内核资源隔离技术,达到将 timer 中断,外部设备中断,host 进程等干扰要素隔离的效果。
对于 host timer 中断,内核提供了 NOHZ_full 技术,NOHZ_full 通过减少定时器中断的频率来优化系统性能。但是该技术是静态配置技术,需要在内核 cmdline 中提前配置。高性能虚拟机方案借助 NOHZ_full 基础框架,实现了 dynamic nohz_full 技术,能够实现 vCPU enter Guest 时,动态的进入 nohz_full 状态,并在 vCPU exit Guest 时,动态退出 nohz_full 状态,最大程度减少 host Timer 中断对 Guest 运行时的影响;
类比内核已有的 isolCPUs 中断隔离技术,对于分配给高性能虚拟机的 host CPU 核,创建虚机前,将所有的 host 中断迁移到控制面 CPU 上,并确保新创建的中断也不会迁移到这些 CPU 上;
类比内核已有的 isolCPUs 进程隔离技术,对于分配给高性能虚拟机的 host CPU 核,创建虚机前,将所有 host 进程迁移到控制面 CPU 上,并确保创建虚机后,vCPU 线程不会被随便迁移走。
场景测试
Micro Benchmark(单位 ns,less is better),在 Guest 内执行 IPI Benchmark 等测试工具,测量 IPI 单播延迟,IPI 多播延迟,单次 Timer 中断延迟,单次核心 MSR 寄存器访问延迟,可发现核心中断延迟和 MSR 写入延时大幅降低。
VM Exit 数量统计
通用实例和高性能实例均配置了idle=poll
,通过在 Guest 内 redis-benchmark 等本地压测工具,在 Host 侧统计压测过程中的 VM Exit 数量,可以看到,在这两个测试 Case 下高性能实例减少了超过 99% 的 VM Exit。
云服务器基准场景性能测试对比,性能提升从 6% ~16% 不等。测试工具使用社区成熟的压测工具如 wrk、ab、redis-benchmark、netperf 等进行压测,网络拓扑为一台虚拟机与一台物理机互相压测。
业务赋能:
边缘场景应用性能大幅提升
边缘高性能虚拟机当前已在线上逐步应用,在多个边缘应用场景均有明显收益,以下就实际业务场景举例说明。
CDN 场景
内容分发网络(Content Delivery Network)是一种通过部署在全球各地的服务器网络,将内容(如文本、图像、视频等)快速传输到用户的网络的技术系统。CDN 可以减轻源服务器压力、提高网站性能、加速内容传输速度和改善用户体验,当前已成为现代网络架构中的重要基础服务。通过应用边缘高性能实例,某 CDN 客户在同等压力下的 CPU 使用率较通用实例降低 13.9~23.2%,较裸金属差异 0.2% ~ 2.9%,支撑该客户成功上云。
音视频直播场景
实时音视频(Real - Time Communication)是一种允许用户在网络上进行实时的音频和视频通信的技术。它能够实现低延迟的音视频传输,广泛应用于视频会议、在线教育、直播互动、远程医疗等众多领域。边缘高性能实例为实时音视频业务提供了高效的转发能力,相较于通用实例业务性能提升 24.2%,相较于裸金属实例性能基本持平。
直播场景如文章开篇所述,对于边缘计算节点有性能诉求,通过应用边缘高性能实例,为客户降低 23.7% 以上的 CPU 占用,性能和裸金属持平。
加速场景
针对前述加速场景的性能稳定性诉求,通过使用边缘高性能实例,降低 VM Exit 带来的性能抖动,能为业务带来和裸金属一样的延时稳定性。
总结与展望
目前边缘高性能虚拟机已在边缘计算节点上线应用,基于其低虚拟化损耗设计与实现,大幅降低 VM Exit,提供接近裸金属的业务性能,在 多个边缘场景均有较好业务收益。未来高性能虚拟机将进一步扩展业务接入范围,覆盖 GPU 等异构算力场景,持续为边缘应用提供高性价比、稳定算力支撑。欢迎感兴趣的用户点击阅读原文,接入边缘计算节点、体验低延时算力
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.