Amzaon EC2虚拟化技术演进:从 Xen 到 Nitro
- C5实例:性价比显著提升(与 C4 实例相比,C5 实例提供了更高的内存与 vCPU 比率,并且性价比提高了 25%,某些应用程序提高了 50% 以上),更大的实例大小(C5 实例新的更大的实例 c5.18xlarge提供了 72 个 vCPU 和 144 GiB 内存并提供了 25 Gbps 的网络带宽)。
- C5d实例:基于本地 NVMe 的 SSD 磁盘将被物理连接到主机服务器,提供与C5实例的生命周期相耦合的块级存储。c5d.18xlarge 规格的实例支持2块900GB的NVMe SSD作为本地存储。
- C5n实例:这是C5 系列的最新成员,其c5n.18xlarge规格可提供高达 100Gbps 的网络吞吐量。
- R5实例:其最大实例规格支持96 vCPU、768 GiB内存和25 Gbps 网络带宽。
- R5d实例:R5d 实例与 R5 实例规格相同,它还包括高达 3.6 TB 的本地 NVMe 存储。
这些实例类型之所以如此实力超群,我认为主要归功于两点:
- 处理器升级
C5 实例配备 Intel Xeon Platinum 8000 系列 (Skylake-SP) 处理器,它发布于2017/Q3,具有高达 3.4GHz 的稳定全核 Turbo CPU 时钟速度,并使用 Intel Turbo Boost Technology 来允许单个核心睿频高达3.5GHz。C5 实例为新的 Intel 高级矢量扩展 512 (AVX-512) 指令集提供了支持,与上一代 C4 实例相比,矢量和浮点计算性能提高最高可达2倍。
而发布于2015年的C4 实例类型,配备Intel Xeon E5-2666 v3 (Haswell) 处理器。其时钟频率为2.9 GHz,配合Intel® Turbo Boost后最高可达3.5 GHz。
- 采用了AWS Nitro 虚拟化平台
AWS Nitro 将是这篇文章的主角。本文会从它的发展历程、架构、所创造的价值等方面进行分析和介绍,试图总结出AWS上虚拟化基础平台发展的脉络。
AWS EC2虚拟化发展历程
- #1是全模拟技术。这种虚拟化方式能支持未修改的客户机操作系统,但速度会严重下降。典型产品是VMware 在1986年发布的虚拟化产品。AWS 并没有采用这种虚拟化技术,放在表格中只是为了做对比用。
- #2 是基于Xen的半虚拟化技术(Paravirtualization,PV)。PV 要求修改客户机内核和驱动。EC2第一个采用半虚拟化的实例类型是 m1.small。
- #3 到 #6 是基于Xen和CPU硬件的全虚拟化技术(Hardware-assisted virtualization,HVM)。采用Xen HVM 技术的虚拟机运行在具有CPU和内存(VT-x)硬件虚拟化能力的处理器上,并使用半虚拟化驱动程序用于网络和存储设备。HVM 3.0 中尚未实现中断和定时器半虚拟化,但在4.0中已有改善。
- #7 和 #8 则是AWS Nitro技术,这是AWS 研发的一种新虚拟化平台。后面会有详细介绍。
过去几年中,Xen是AWS上虚拟化技术的主体,业已成为业界标准之一,已经非常成熟。那么,为什么AWS要从Xen 向 Nitro 发展呢?这得从Xen 的架构说起。

从上图可以看出,Xen 实现了虚拟机的CPU 和内存虚拟化,但是虚拟机的I/O 访问,包括网络和存储等,都是通过虚拟机中的前端模块和 dom0 中的后端模块通信,然后由dom0 中的后端模块通过设备驱动实现的。这I/O路径太长,这降低了I/O性能,而且dom0还会和业务虚拟机抢占宿主机资源,很难实现管理虚机和业务虚机之间的平衡,以及避免抖动。
2013年,AWS 采用 Xen PV虚拟化技术的cr1.8xlarge 实例的架构如下图所示:

- 图中的硬件(Hardware),是运行虚拟机的物理服务器,采用了当时很强大的标准的10Gbps网卡,以及管理一些本地磁盘的存储HBA卡。Hardware上既运行用户的业务虚拟机,还运行Xen的dom0虚拟机。
- VMM采用Xen项目的PV模式。
- 图中 Amzon Linux 代表Xen dom0,它负责访问硬件,向虚拟机提供I/O 能力。
Nitro起源和发展
- 能做出比纯软件架构更好的hypervisor吗?
- 设备模型本身很复杂,而且它会和业务虚拟机竞争CPU和系统资源,同时技术上它很难避免抖动发生
- hypervisor太重了,能将hypervisor 和它周边的组件解耦吗?
c3.8xlarge的架构与cr1.8xlarge相比,在宿主机上增加了一块新网卡,这块网卡和原有的标准网络通过一个回环线(loopback cable)连接起来。虚机VPC网络功能不再通过Xen 的dom0 实现,而是直接访问宿主机上的这块硬件网卡。C3 是AWS EC2 历史上增长最快的几个实例类型之一,它尤其以控制性能抖动和持续的网络性能著称。这可以看做Nitro思想的发源,那就是将软件功能卸载到专有硬件上。
这个改进的结果是,宿主机上的CPU被Xen占用得少了,能更多地被虚机使用了。
现在的ENA,能用于虚拟机和物理机,它以开源项目形式发布在github上。ENA 是AWS网络虚拟化一关键技术,它使得虚拟机能够绕过内核和用户空间网络处理程序,直接操作网卡硬件,这显著提升了网络效率。
在i3.metal 中,Nitro 发挥了基础性作用。它的安全芯片通过提供硬件保护和固件验证功能为I3实例提供安全保障;它的各种卡,使得I3实例具备基于非易失性存储器标准 (NVMe) SSD 的实例存储,通过ENA支持高达 25Gbps 的聚合网络带宽。
Nitro 架构
Nitro 卡
这些Nitro 卡是硬件,插入到宿主机的PCIe卡槽中,采用SR-IOV 直通(passthrough)技术将这些卡呈现给实例。包括:
- VPC Data Plane(用于VPC访问的Nitro卡):本质上是一块通过PCIe附加到宿主机上的一块定制网卡,支持网络封包和解包、安全组、限速器和路由等功能。实例通过ENA驱动和它通信。同时,该卡还带有一些网络加速功能。以限速器为例,每个Nitro支持的实例,不管它在哪个区域哪个数据中心哪个宿主机上,都会有一致的性能,这对分布式应用非常重要。
- EBS Data Plane(用于EBS卷访问的Nitro卡):本质上是一块通过PCIe附加到宿主机上的一块定制卡。通过该卡,远端存储被以NVMe设备形式展现给实例,实例通过标准NVMe驱动程序访问该卡。它首次被用在C4中。支持卷加密、存储加速;支持I3裸机实例。
- Instance Storage Data Plane(用于实例存储访问的Nitro卡):通过该卡,本地磁盘被以NVMe设备形式展现给实例,实例通过标准NVMe驱动程序访问这些磁盘。支持加密、限速器和本地磁盘监控。
Nitro 安全芯片
Nitro hypervisor
Nitro 带来的丰富价值
更高网络访问性能
(Series 1:cc2.8xlarge,2:c3.8xlarge,3:c4.8xlarge,4:c5.18xlarge,5:c5.18xlarge(采用ENAv2))

更高EBS和本地存储访问性能
更大实例大小和CPU内存比率
更低虚拟化花销
更低Hypervisor抖动
更多实例类型
更低价格、更高性价比
为更多性能优化提供了可能
小结
- AWS re:Invent 2018: Powering Next-Gen EC2 Instances: Deep Dive into the Nitro System (CMP303-R1)
- AWS re:Invent 2017: C5 Instances and the Evolution of Amazon EC2 Virtualization (CMP332)
- AWS re:Invent 2018: Deep Dive on Amazon EC2 Instances & Performance Optimization Best Practices (CMP307)
- AWS re:Invent 2018:Optimizing Network Performance for Amazon EC2 Instances (CMP308-R1)
感谢您的阅读,欢迎关注我的微信公众号:

Amzaon EC2虚拟化技术演进:从 Xen 到 Nitro的更多相关文章
- 虚拟化技术对比:Xen vs KVM
恒天云:http://www.hengtianyun.com/download-show-id-68.html 一.说明 本文主要从功能方面和性能方面对Xen和KVM对比分析,分析出其优缺点指导我们恒 ...
- 虚拟化技术对照:Xen vs KVM
恒天云:http://www.hengtianyun.com/download-show-id-68.html 一.说明 本文主要从功能方面和性能方面对Xen和KVM对照分析,分析出其优缺点指导我们恒 ...
- 泛虚拟化技术(以Xen为例)
一.概述 最主要的特点是:修改Guest OS的内核代码.通过修改内核,使Guest OS明白自己是运行在R-1,不要直接去运行特权指令,如果要运行就去Hypercall(主动VMM陷入). ...
- 主流服务器虚拟化技术简单使用——Xen(一)
Tips:因为博客园网页布局的原因,部分图片显示不清晰,可以放大网页查看清晰图片. 如果系统使用物理机,需要在BIOS里面开启Intel VT-x(或AMD-V),如果是VMware workstat ...
- 主流服务器虚拟化技术简单使用——Xen(二)
管理多台Xen主机可以使用GUI工具virt-manager和xm.xl等命令行工具. Tips:hypervisor一定要选到Xen web管理工具 Xen也有一个简易web管理工具叫xenwebm ...
- 虚拟化技术:Xen与KVM的对比
作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以6个无与伦比的优势领先:更好的可用资源.平台支持.可管理性.实施.动态迁移和性能基准. 可用资源:Xen的问世要比KVM早4年之久(两者分别是 ...
- 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具
1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是 ...
- VPS的虚拟化技术—-XEN,KVM,OPENVZ
市场上的VPS商家主要有 Xen ,KVM 和 OpenVZ 三种开源的虚拟化技术 Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达 100个满特征的操作系统.操作系 ...
- 云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较
1.Xen.KVM.VMware.hyper-v等虚拟化技术的比较,xen和kvm,是开源免费的虚拟化软件. vmware是付费的虚拟化软件. hyper-v比较特别,是微软windows 2008 ...
随机推荐
- Java线程同步:synchronized锁住的是代码还是对象
所以我们在用synchronized关键字的时候,能缩小代码段的范围就尽量缩小,能在代码段上加同步就不要再整个方法上加同步.这叫减小锁的粒度,使代码更大程度的并发.原因是基于以上的思想,锁的代码段太长 ...
- iOS KVC/KVO 线程(GCP)
最近比较忙,把学习知识点的帖子的地址记一下,有时间再好好整理. KVC/KVO1 KVC/KVO2 线程(GCP)
- 解魔方的机器人攻略14 – 安装Lejos(下)
由 动力老男孩 发表于 2009/12/27 17:16:11 第四步:安装Lejos 登陆 Lejos 主页点击 NXT 图片进入 Lejos 下载页面,点击 NXJ 的下载链接: 下载完成后将下载 ...
- ubuntu 安装 regex模块时 fatal error: Python.h: No such file or directory
原因是 python-dev包没有安装 根据Py2还是py3 sudo apt-get install python-dev 或者 sudo apt-get install python3-dev 安 ...
- hdu 1283 最简单的计算机
水题. .. import java.util.Scanner; public class Main { static int m1, m2; static int r1, r2, r3; publi ...
- Git 历险记(三)——创建一个自己的本地仓库
如果我们要把一个项目加入到Git的版本管理中,可以在项目所在的目录用git init命令建立一个空的本地仓库,然后再用git add命令把它们都加入到Git本地仓库的暂存区(stage or inde ...
- 【Hadoop】Hadoop 机架感知配置、原理
Hadoop机架感知 1.背景 Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份, 同机架内其它某一节点上一份,不同机架的某一节点上一份. 这样如果本地 ...
- selenium的PageObject设计模式
PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 2. web测试时,建议 ...
- 【重点突破】—— Echarts图表的介绍和使用
前言:百度Echarts是一个基于Canvas的纯Javascript图表库,提供直观.生动.可交互.可个性化定制的数据可视化图表.官网地址:http://echarts.baidu.com/inde ...
- mysql double 乘法 缺失精度
CREATE TABLE tmp_decimal( id BIGINT auto_increment PRIMARY KEY , amount DOUBLE ); 创建测试表 插入测试数据 INSER ...