NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

AWS 正式把 KVM 投入使用 你需要知道些什么?

  • 2017-11-09
  • 本文字数:2946 字

    阅读完需:约 10 分钟

如之前 InfoQ 中文站所报道, AWS 在 11 月 6 日推出新的实例类型 C5 ,其中采用了新的虚拟化引擎——一款 AWS 自家定制的 KVM。这可能意味着 AWS 从 2006 年启动时就开始使用并持续优化至今的 Xen 技术栈,将逐渐淡出这一体量庞大的云计算平台。

关于 Xen 与 KVM

Xen 最早是剑桥大学的一个研究项目。该项目在 2003 年以开源协议发布后,先后经历了 XenSource 公司、Citrix 公司、Linux 基金会等组织的领导,其技术阵营包含了 Citrix、IBM、Intel、HP、Novel、红帽、Sun、Oracle、Amazon、AMD、Bromium、CA Technologies、Calxeda、Cisco、Google、三星、以及 Verizon 等业界巨头。

KVM(Kernel-based Virtual Machine,直译为“基于内核的虚拟机”),最早是以色列初创企业 Qumranet 发布的开源项目。该项目在 2007 年被合并入 Linux 内核代码——这对 KVM 而言是非常重要的一个节点,该公司则在 2008 年被红帽收购。KVM 技术差不多到 2010 年之后进入成熟阶段,该技术阵营目前包括红帽、SUSE、Linaro(ARM)、IBM、Intel、Google、Oracle 等业界巨头,国内的华为、阿里巴巴、腾讯等也均有参与。

在 AWS 启动的 2006 年,Xen 还是当时最成熟的虚拟化引擎技术(对于 Linux 操作系统而言),而 KVM 项目还没有出现在大家的视野中。因此,AWS 在早期技术选型当中采用了 Xen,成为其弹性计算的底层基础。(此外,2009 年启动的阿里云也因为当时 KVM 还不成熟的原因采用了 Xen,不过两家一直未停止过对 KVM 的关注与投入,阿里云更是在数年前就已经推出了基于 KVM 的主机。另外,2011 年启动的 Google Cloud 从一开始就采用了 KVM 引擎。)

AWS 的用户需要知道什么?

首先,AWS 的用户现在已经可以将自己跑在 C4 实例上的主机切换到 C5,前提是:

  • 现在已经推出 C5 的区域有 US East (Northern Virginia)、US West (Oregon)、EU (Ireland) Regions,目前要用 C5 的话只能在这三个区,其他区还得等等。
  • AMI 镜像的操作系统必须包含 ENA 和 NVMe 的驱动,因为 C5 的网络和存储功能是在硬件层面实施的。AWS 平台上提供的最新版 AMI 镜像,包括 Amazon Linux、Microsoft Windows (Windows Server 2012 R2 以及 Windows Server 2016)、Ubuntu、RHEL、CentOS、SLES、Debian、FreeBSD,现在都支持。同理,如果你制作自己的 AMI,也是一样的要求。

Reddit 网站上已经有用户在分享自己的切换过程,感兴趣的读者可以前往查看或提问。Jeff Barr 也会在那里回复一些问题。

C5 实例可以选择的实例尺寸见下表:

Instance Name vCPUs RAM EBS Bandwidth Network Bandwidth c5.large 2 4 GiB Up to 2.25 Gbps Up to 10 Gbps c5.xlarge 4 8 GiB Up to 2.25 Gbps Up to 10 Gbps c5.2xlarge 8 16 GiB Up to 2.25 Gbps Up to 10 Gbps c5.4xlarge 16 32 GiB 2.25 Gbps Up to 10 Gbps c5.9xlarge 36 72 GiB 4.5 Gbps 10 Gbps c5.18xlarge 72 144 GiB 9 Gbps 25 Gbps 其次,如果你已经用上了 C5,想用它跑一些机器学习的推断(inferencing)任务或者类似的计算任务,可以看一下这个 Intel Math Kernel Library 。C5 的处理器用的是 3.0 GHz Intel Xeon Platinum 8000 系列,这款专为 EC2 做过优化的处理器配合上面那个数学库可能会有很好的性能。

此外,C5 还增加了每个 vCPU 的内存。对于兼容 AVX-512 指令集的代码而言,矢量操作和浮点操作的性能甚至可以翻倍。

切换到 C5 之后,由于运行在新虚拟化引擎上的实例是通过 NVMe 接口从 EBS 卷上启动的,而运行在 Xen 上的实例是从一个模拟 IDE 硬盘上启动、再切换到 Xen 的半虚拟块存储驱动上的,所以虽然操作系统(OS)能够识别自己正运行在哪个虚拟化引擎上,但如果软件本身假设底层的虚拟化引擎是 Xen 并依赖于该假设,则可能会引发一些问题。

但总体来说,AWS 表示只要 OS 层面能够支持 ENA 网络和 NVMe 存储,则大部分软件都能正常工作。AWS 还表示,其他的 EC2 功能并不会受到影响。

如果你是 AWS EC2 API 的重度用户,担心这次虚拟化引擎的变更会对 API 造成什么变化,则不用担心了: AWS 在其 FAQs 页面中表示其对外公开的 API 完全不会因为引入新的虚拟化引擎而有任何改变。

KVM 在 EC2 上的正式启用对 AWS 意味着什么?

作为计算资源服务的提供方,提升性能、降低成本是永恒的话题。

Xen 最初设计时,x86 架构尚未引入虚拟化扩展功能,所以 Xen 为了实现 Linux 系统的虚拟化,就把 Linux 内核给改了——这就相当于在之后的十几年里,Xen 一直维护着一套自己的 Linux 内核版本,所以上游 Linux 内核社区的很多新的好东西,它要费一番功夫才能移植进来,这就造成了很大的维护成本。

而另一方面,因为 KVM 项目是合并在 Linux 内核代码中的,维护起来就非常容易。Linux 内核上游社区的研发势能是非常大的,在这种情况下,KVM 的发展速度迅猛,在稳定性、性能方面的提升很快赶超了 Xen,受到很多技术人与企业的青睐。

EC2 是 AWS 的基石,虚拟化引擎又是 EC2 的基石。由于 AWS 是一套构建多年的、庞大而复杂的系统,很多功能会对 Xen 有所依赖,要让这套系统同时稳定的支持 Xen 与 KVM,是一项非常复杂的工作。所以 C5 的推出,意味着 AWS 这套系统已经脱离了对 Xen 的完全依赖。

对 AWS 而言,基于 KVM 的系统要比基于 Xen 的系统的维护成本更低,这是一方面。

另一方面,可能也与性能有关。按 AWS 首席布道师 Jeff Barr在博客中所说,C5 在性价比方面相比C4 提升了25%,针对有些任务甚至可以达到50%——这是针对用户而言。要知道对于AWS 今天这样的体量,哪怕是1% 的节省都是巨大的;如果有25% 这样比例的性价比提升,则绝对是势在必行,无论花费多大代价也要上。当然这其中的性能提升有多少是来自新的硬件,有多少是来自KVM,这就不一定了。

此外,AWS 首先在“计算密集型实例”(compute-intensive)上正式采用KVM,而不是从通用型、内存密集型等其他类型上开始,可能是因为考虑到计算密集型业务的I/O 操作较少,比较独立,耦合性比较小,因此更容易替换的原因。

这次改变对于业界有什么影响?

从市场占有率的角度来看,就是Xen 的最后一个大体量的用户对Xen 说,以后我不再需要你了。

如果说以前还有业界传言说AWS 在Xen 上投入太过巨大、依赖太重,所以AWS 将一直支持Xen 的话,那么现在这个传言已经宣告终结。毕竟,如果连AWS 都以实际行动表示切换到KVM 的收益大于成本了,那么那些体量更小的Xen 用户还能对Xen 有什么更多的期待呢?

所以对于未来的市场而言,这次改变也许象征着Xen 的使命已经结束了。对于过去的市场而言,Xen 的使命就是让那些仍然跑在Xen 上的业务们能够继续平稳运行。不过这里面还有一个变数就是 Unikernel ,那就是另一个话题了。

从上游社区的角度,影响可能不大,因为 Amazon 一直不是个活跃的开源社区参与者。即使作为最大的 Xen 用户那么多年,Amazon 对 Xen 上游社区的代码贡献数量却是屈指可数。所以对于 KVM 项目,可能我们未来也不大会看到很多来自 Amazon 的代码贡献。

从技术发展的角度,这是个大趋势下技术更新换代的必然——也许从 KVM 被合并到 Linux 内核代码的那时起就已经种下了种子吧。

总结

关于 AWS 此次拥抱 KVM 的 C5 发布,目前公开的信息就总结到此。11 月 27 日到 12 月 1 日期间的 AWS re:Invent 2017,InfoQ 中文站记者会在前线报道,敬请期待!

感谢吴峰光对本文的贡献。

2017-11-09 18:013611

评论

发布
暂无评论
发现更多内容

一块显存为 12GB 的 GPU 卡能够在CST 时域求解器仿真的最大网格数是多少?

思茂信息

cst cst使用教程 cst操作 cst电磁仿真 cst仿真软件

kafka集群是如何选择leader,你知道吗?

JAVA旭阳

kafka

Spring Boot实现第一次启动时自动初始化数据库

做梦都在改BUG

Java spring Spring Boot

使用 Node.js、Socket.IO 和 GPT-4 构建 AI 聊天机器人

devpoint

node.js websocket GPT-4

MatrixOne 助力开启分布式计算格局新征程

MatrixOrigin

分布式数据库 HTAP MatrixOrigin MatrixOne 矩阵起源

阿里架构组分布式架构技术使用心得:全在这一份文档里面了

Java你猿哥

架构 分布式 ssm 分布式架构 安全架构

一次错误的解码处理导致Netty堆外内存泄漏问题的分析

Java你猿哥

Java Netty ssm RSS 逻辑

Health Kit文档大变样,一起尝鲜!

HMS Core

HMS Core

从7天到1天,Kyligence 和亚马逊云科技助力欣和提高数据应用价值

Kyligence

数字化转型 指标平台

创建矢量图形:Patternodes 3 免激活版

真大的脸盆

Mac Mac 软件 矢量图形创作 创建矢量图形

硬核!阿里2023版Spring全家桶进阶笔记流出,堪称Java跳槽神器

Java你猿哥

spring Spring Boot spring security Spring全家桶 Spring Cloud Aliababa

解锁人机交互新技术 华为开发者联创日·全栈AI黑客松大赛等你来

说山水

5月书讯 | 《这就是ChatGPT》来了!

图灵教育

数学 书单 GPT

5月书讯 | 《这就是ChatGPT》来了!

图灵社区

数学 书单 书单推荐 GPT

500行代码手写docker-实现硬件资源限制cgroups

蓝胖子的编程梦

容器 k8s ,docker Cgroups #k8s

如何避免写重复代码:善用抽象和组合

阿里技术

Java 代码实战

GitHub上开源24小时获星96K的,从零到实战Java架构师成长手册

Java你猿哥

架构 架构师 高可用架构 高性能架构 高可扩展

前端开发如何更好的避免样式冲突?级联层(CSS@layer)

vivo互联网技术

CSS 级联 @layer

刚入职的后端开发问我SpringBoot如何跨域配置?我表示

Java你猿哥

Java Spring Boot ssm 跨域

Solaris Network:BSC上首个链上合成资产解决方案

鳄鱼视界

深度理解:Redis Hash(散列表)实现原理

Java你猿哥

redis 开源 ssm hash 散列表

如何科学地利用MTTR优化软件交付流程?

SEAL安全

DevOps MTTR 企业号 5 月 PK 榜

Kafka集群是如何选择leader,你知道吗?

做梦都在改BUG

Java kafka 集群

阿里大神级Elasticsearch学习笔记,还学不会就埋了

做梦都在改BUG

Java elasticsearch 分布式搜索引擎 ES

引领下一代云计算技术的变革:无服务器架构

xfgg

云计算 severless

2023数博会丨软通智慧发布“一屏统揽”TongView 数字政府慧治平台解决方案

说山水

Flutter三棵树系列之BuildOwner | 京东云技术团队

京东科技开发者

flutter 移动开发 源码解读 企业号 5 月 PK 榜 BuildOwner

4 种 MySQL 同步 ES 方案,yyds!

Java你猿哥

Java MySQL sql elasticsearch Binlog

GitHub发布即百万!字节内网超实用 java性能优化手册,star超十万

Java你猿哥

Java ssm jvm调优 Java性能优化

如何将千亿文件放进一个文件系统,EuroSys'23 CFS 论文背后的故事

百度Geek说

数据库 云计算 百度 企业号 5 月 PK 榜

大语言模型技术原理

NineData

AIGC ChatGPT AI大语言模型 大语言模型 技术原理

AWS正式把KVM投入使用 你需要知道些什么?_亚马逊云科技_sai_InfoQ精选文章