其他
NITRO系统——AWS EC2虚拟化加速平台
云计算场景,为了充分利用硬件的资源和性能,需要虚拟化技术,可以说虚拟化是云的基础功能。计算机主要包括CPU+Mem+I/O,因此虚拟化性能优化也主要就是这三者。 最开始的虚拟化都是软件模拟虚拟化,性能很差。后来Intel VT-x和AMD-V技术解决了CPU和内存的完全硬件虚拟化,提升了整个虚拟化系统的性能。这个时候,虚拟化技术解决了CPU和Memory的性能优化,只剩下I/O依然是软件虚拟化或类虚拟化。 接着,PCIe SR-IOV技术以及Intel VT-d的Pass Though等CPU的技术协助,共同实现了I/O的完全硬件虚拟化。 I/O完全硬件虚拟化,引起了复杂的连锁反应:以前在Hypervisor侧的Backend Workload(用于支撑云计算的IaaS基础功能,如虚拟网络OVS、分布式存储Client等),此刻没法进行处理,势必要跟着I/O接口一起,offload到硬件中(I/O接口可以看做是qemu的接口emulator offload到硬件接口)。 未来,软硬件融合的虚拟化技术会持续演进迭代,最终进化到大家现在听到的DPU/IPU等概念的基础设施硬件加速平台。
AWS EC2虚拟化:Nitro介绍
软件虚拟化:
虽然这可以支持未经修改的Guest操作系统,但许多操作是模拟的并且速度很慢。
应用程序的运行速度可能会慢2到10倍,甚至更糟。
类虚拟化(Para-Virtualization):
Hypervisor提供高效的hypercall,Guest操作系统使用驱动程序和内核修改来调用这些Hypercall。
它使用软件以及Hypervisor和Guest之间的协调来提高性能。
我希望有 10% 到 50% 的可衡量开销(取决于 PV 类型和工作负载)。
硬件虚拟化:
硬件支持虚拟化,接近裸机速度。
我预计会有 0.1% 到 1.5% 的开销。
1. 完全模拟
2. Xen PV 3.0
3. Xen HVM 3.0
4. Xen HVM 4.0.1
混淆的第一个来源是AMI类型。
AWS EC2对 PV 和 HVM 使用不同的映像类型和启动过程,如Linux AMI 虚拟化类型页面所述。
然后人们开始将正在运行的实例称为 PV 或 HVM,但它比这更复杂,因为 HVM 可以启动然后运行paravirt 驱动程序 (PV),也可以在 HVM 驱动程序 (PVHVM) 上运行 paravirt。
我们在 EC2 上使用的大多数(或全部)“HVM”实例都是带有 PVHVM 驱动程序的HVM。
混淆的第二个来源是性能。
早期的“HVM”版本没有使用那么多的paravirt,甚至可能比“PV”慢,导致许多人推荐“PV”而不是“HVM”。
这个建议很快就过时了。
这有点令人困惑,我在 2014 年写了一篇关于这个的文章:
Xen Modes。
5. Xen AWS 2013
6. Xen AWS 2017
7. AWS Nitro 2017
8. AWS 裸金属机 2017
9. 总结
欢迎关注软硬件融合公众号: