1. QEMU 和 KVM 自动性能基准测试
QEMU & KVM Automated Performance Benchmarking @ SUSE - Dario Faggioli, SUSE
SUSE正在开发一个框架,用于对虚拟化工作负载进行自动性能基准测试。它是围绕着MMTests(已经在Linux内核社区使用了几年)建立的,它能够同时在一个或多个虚拟机内运行测试和基准。它还在进一步扩展,例如,在容器和由KubeVirt管理的VMI中运行基准测试。很快就能用它来评估下游软件包和产品的性能,而且也能评估上游的KVM和QEMU的性能。而且可以向相关的邮件列表发送报告。在演讲中,描绘了框架本身的一些技术细节,下一步将讨论并试图收集一些反馈,比如哪些有趣的工作负载组合、用例和配置(从性能的角度来看)是有用的;使用哪些指标以及如何有效地测量它们;什么才是真正的性能回归等问题。最终的目标是使这个工具不仅对SUSE有用,而且对KVM/QEMU项目和更广泛的Linux虚拟化社区有用。
2. 探索架构无关的KVM MMU技术
Exploring an Architecture-neutral KVM MMU - David Matlack, Google
TDP MMU是在2020年引入的,以简化和提高x86 KVM MMU的可扩展性。自TDP MMU推出以来,它的性能得到了进一步的调整,并获得了对新功能的支持,如急切分页、延迟分页和无锁写解保护的脏记录。随着公共云提供商开始提供基于KVM的ARM虚拟机,ARM虚拟机面临着与TDP MMU相同的可扩展性挑战。为了解决这个问题,本讲座将探讨如何使 TDP MMU 架构中立并将其移植到 ARM。
3. 将 eBPF 的力量带入 QEMU
Bringing the Power of eBPF to QEMU - Chen Zhang, Intel
eBPF是一项革命性的技术,可以在操作系统的内核中运行沙盒程序。它被用来安全有效地扩展内核的功能,即使在运行时也不需要改变内核的源代码或加载内核模块。KVM已经从中得到了好处,但QEMU却没有。因此,把eBPF的力量带到QEMU是一件很有意义的事情。iovisor/ubpf项目旨在创建一个Apache许可的执行eBPF程序的库,包括eBPF汇编器、反汇编器、解释器和JIT编译器(用于x86-64和Arm64目标),这个项目的基础上可以启用QEMU用户空间eBPF基础设施。在本讲座中,将讨论QEMU中用户空间eBPF的当前发展和未来方向。
-
eBPF的使用背景和现状。
-
用户空间eBPF现状,包括Intel DPDK eBPF/windows eBPF等…
-
QEMU用户空间eBPF基础设施的设计和实现。
-
第一个使用的模块:用户空间eBPF网络过滤器。
-
用户空间eBPF的未来使用案例。
-
介绍用法和演示,包括如何使用clang编译自己的eBPF C程序并加载到QEMU。
4. 基于 Vfio-User 协议的 SPDK 中的 Virtio 设备模拟
Virtio Devices Emulation in SPDK Based on Vfio-User Protocol - Changpeng Liu & Xiaodong Liu, Intel
在2021年的KVM论坛上,存储性能开发工具包(SPDK)展示了如何从一个独立的用户空间进程中模拟完整的NVMe PCIe设备给虚拟机。现在,SPDK正计划支持更多基于vfio-user的PCIe设备。在本次会议中,将介绍基于vfio-user的virtio PCIe抽象层,然后介绍基于通用virtio PCIe抽象层的virtio-blk和virtio-scsi设备模拟。演讲中提供了SPDK vhost-user解决方案和vfio-user virtio-blk/scsi解决方案之间的比较,包括性能、线程建模和实现差异。最后通过展示一些使用案例、性能数据和未来的发展计划来进行总结。
5. 新的 Hyper-V 模拟技术在KVM中的应用
Emulating Hyper-V in 2022 - Vitaly Kuznetsov, Red Hat
在很长一段时间内,KVM能够假装是微软的Hypervisor(Hyper-V),但它从未实现过全套的功能。未来更多的功能在KVM中得到实现,而微软开发的新的Hyper-V版本通常会带来新的PV机制。我们在2022年的情况如何?在Hyper-V模拟中,有什么新的东西,目前缺少什么?KVM和Hyper-V如何在嵌套的情况下进行协作?其中的一些功能能否为其他KVM部署带来便利?
6. NVMe 设备模拟性能优化
NVMe Emulation Performance Optimization - Jinhao Fan, Chinese Academy of Science & Klaus Jensen, Samsung Electronics
QEMU的NVMe模拟使用传统的trap-and-emulate方法来仿真I/O,因此性能会因为频繁的虚拟机退出而受到影响。NVMe和QEMU可以进行一些优化来解决这个问题。首先,NVMe 1.3引入了shadow doorbell buffer支持,以减少昂贵的MMIO写入的数量。第二,QEMU的ioeventfd机制可以进一步减少MMIO的处理开销。第三,可以利用QEMU的iothread来处理单独事件循环中的I/O。最后,轮询doorbell内存而不是等待MMIO事件将把处理延迟降到最低。通过这些优化,QEMU NVMe的仿真性能从30 KIOPS提高到330 KIOPS–提高了11倍 在这次演讲中,演讲者将分享他们将这些技术纳入QEMU NVMe的经验,以及所面临的挑战和教训。
7. QEMU 中的 IOMMUFD 集成
IOMMUFD Integration in QEMU - Yi Liu, Intel & Eric Auger, Red Hat
IOMMUFD 是一个新的用户API,用于控制IOMMU子系统,管理指向用户空间内存的IO页表。它旨在废除vfio中与IOMMU相关的用户API,并成为提供新的IOMMU功能的中心,跨用户空间驱动框架(VFIO,vDPA,等等)。因此,QEMU需要重新设计,以适应新的iommufd uAPI,同时保持与传统的VFIO uAPI的向后兼容性,例如,用适当的抽象来适应以设备为中心的模型(在iommufd)和以组为中心的模型(在传统的VFIO)。本演讲将首先回顾iommufd采用和向后支持QEMU方面的问题,然后展示在两种类型的iommu用户API之间进行的抽象以实现共存。将涵盖对管理层(如libvirt)的影响,并最终处理诸如IOMMU嵌套翻译等新功能。
8. pKVM在 ARM64 上的技术深究
Protected KVM on Arm64: A Technical Deep Dive - Quentin Perret, Google
pKVM(Protected-KVM) 是KVM/arm64的一个扩展,为Arm v8.0以上的CPU提供了一个保密计算解决方案。在这次演讲中,将对pKVM进行技术上的深入研究,描述其架构和实现,并讨论与其他机密计算解决方案(如英特尔TDX、AMD SEV或Arm CC-A)共享核心基础设施(如内存管理)的机会。相关参考 https://lore.kernel.org/kvmarm/20220519134204.5379-1-will@kernel.org/
9. 用pKVM在x86客户平台上支持TEE
Supporting TEE on x86 Client Platforms with pKVM - Jason Chen, Intel
pKVM 的概念是由Will Deacon在ARM平台上首次提出的(https://lwn.net/Articles/836693/),它使KVM能够运行多个隔离的TEE VM,并以强隔离的方式运行不同的TEE APPs。随着虚拟化软件TEE的推广,我们在x86平台上看到了类似的期望,特别是对于客户端平台。x86上的pKVM被设计为实现多个隔离的TEE VM环境,与主机操作系统及其用户VM强隔离,对性能影响小,TCB占用小,主机操作系统复杂度小。在这个演讲中,我们将讨论pKVM 在 x86 上的设计,以满足其要求,并展示如何在特殊定制的主机操作系统中与普通用户虚拟机一起运行TEE虚拟机,并讨论其未来的工作。
10. Hypervisor.Framework - macOS上的虚拟化
Hypervisor.Framework - Virtualization on macOS - Alexander Graf, Amazon Development Center Germany GmbH
MacOS拥有自己的用户空间抽象层来利用现代CPU的虚拟化能力已经超过7年了。本报告介绍了它的设计原则以及它如何在英特尔以及苹果硅CPU上工作。它还详细介绍了QEMU如何在macOS上利用Hypervisor.Framework来实现虚拟机。
11. 针对 KVM 虚拟机 vCPU 挂起的检测
All Bark and no Bite: vCPU Stall Detection for KVM Guests - Sebastian Ene, Google
你的虚拟机性能很差吗?它的vCPU线程是否一直可以运行?你是否想知道它是否在做任何有用的事情?如果是这样,那么这就是para-virtualised vCPU stall检测器的作用了,本讲座将介绍一个para-virtualised vCPU stall检测器设备,其设计类似看门狗,与steal time的配合,以及它在crosvm中的实现和相应的Linux内核驱动。这个设备计划在未来的Android版本中使用,用于检测和报告主机上的虚拟机挂起。
12. libblkio高性能块I/O API介绍
Introducing the libblkio High-performance Block I/O API - Stefan Hajnoczi & Alberto Faria, Red Hat
应用程序越来越多地集成高性能I/O接口,如Linux io_uring、用户空间设备驱动程序和vhost-user设备支持。libblkio为有效地访问块设备提供了一个单一的开源API,并消除了为每个设备编写自定义代码的需要。libblkio被设计成可以在裸机、容器内和虚拟机中运行,它使应用程序可以在这些环境中运行而无需重写代码。支持阻塞、事件驱动和轮询模式,让应用程序可以选择I/O模型,使libblkio很容易集成到现有的应用程序中。新的libblkio QEMU块驱动和fio ioengine允许虚拟机和基准测试工作负载。演讲中讨论了libblkio的API设计、可用的驱动和路线图,以便更多的应用能够从libblkio中受益。
总结
本次KVM论坛多次提到了pKVM(protected-KVM),pKVM最初是Arm64中的机密计算方案,多个演讲讨论了一些技术细节,其中Intel还提出了在X86上进行支持的想法。
另外Kubevirt也提到的比较多,但是都是作为Kvm的一种使用场景提到的,并没有提到具体的技术细节问题。
在演讲中libblkio被认为是下一代提高块设备磁盘的新技术,有几个演讲提到了,这个很值得关注。
KVM在对Windows支持的问题上,也进行了讨论,未来Kvm会借用微软Hyper-v的技术方案进行优化。
最后比较值得关注的是eBPF在Qemu中的作用,Rust对Kvm中的提升,Virtio还在不断发展,新的iommufd技术,以及Kvm发展越来越壮大在RISC-V甚至FPGA、Verilog模拟中的应用。
参考
https://kvmforum2022.sched.com