比容器更轻更快的虚拟机

尽管容器技术在今天越来越被人接受,但是安全性依然是一个绕不开的问题,由于容器采用的是共享内核外加 cgroups 和 namespaces 等黑魔法的方式进行隔离注定了会有很多路径的 bug 导致隔离性问题,安全隐患依然存在。而不使用虚拟机的原因不外乎虚拟机启动太慢,额外开销太高,性能由于多了一层会下降。面对容器和虚拟机这两个极端,容器一方想把容器做的隔离性更好,虚拟化方面想把虚拟机做的更轻。结果, neclab 的一群人居然做到把虚拟机的启动速度做的比 Docker 还快,内存开销比 Docker 还小。这种反常识的事情居然发生了!他们把工作以 paper 的形式发表在了 SOSP‘17 上,这篇文章会介绍下他们是动用了什么样的核武器达到了这样的效果。

想要加速就要先有个预期,看一下我们的现状是什么,极限又能到哪里。作者对比了进程启动时间,容器启动时间以及一个虚拟机启动的时间。其中进程启动时间作为一个理论上的极限需要 3.5 ms,docker 容器启动时间需要 200ms,而一个 Debian 虚拟机的启动时间需要大约 2s,其中创建 vm 需要 0.5 s, 启动 vm 需要 1.5s。

而和启动速度相关最重要的一个因素就是镜像体积大小,启动的速度基本上随着镜像的体积线性增加。如下图所示:

vm 通常需要一个完整的操作系统,所以体积会比较大,如果想优化速度就必须要精简操作系统了,作者通过两种方法实现了这种精简。

第一种也是最极端的一种 Unikernels,这可以算是终极核武了。Unikernels 的定义比较复杂,简单来说就是专门为这个应用做一个操作系统内核,这个内核只提供能运行这个服务的最基本功能,除了能跑这个应用别的什么都干不了。应用和内核也是 link 在一起的,你甚至不好说是给这个应用定制了一个内核,还是定制了具有一定应用功能的内核。这种方法需要为每个特定应用定制一个特定内核,听着就是个不可能完成的任务,不过作者还是做了好几个这样的 unikernels,甚至还做了个能跑 serverless 功能的 unikernels。

当然这种方法太极端了,第二种方法就相对温和一些,不过依然是洲际导弹重量级别的。既然定制 unikernels 太难了,那就拿一个 Linux 内核进行精简化只保留需要的模块和功能,为每个应用编译一个精简化的 Linux 内核,这样就不需要做应用改造了。为了达到这个目的作者还专门做了个 Tinyx 工具,可以根据应用 objdump 出来的信息来自动寻找依赖,并且根据启发性的测试不断地去寻找哪些 linux 模块可以关闭,去除掉那些和应用无关的功能和编译选项。除了缩小镜像体积,另一个带来的好处是会降低 vm 启动占用的内存。经过精简的内核可以只占用 1.8M 内存,要知道 docker 给每个容器开启的 shim 进程也需要占据 4M 左右的内存。

最终的结果是利用 Tinyx 精简内核后镜像大小是 9.5M 的启动时间是 180ms,而 Unikernels 方法镜像大小是 480K,启动时间只需要 3ms,这两种方案都已经比 200ms 的 docker 启动时间还要快了。并且更要命的是他们的内存额外开销比 docker 还要低,从下图可以看出当运行到 3K 容器时宿主机已经无法再创建 docker 容器了,而 Unikernels 可以平稳跑到 8K。

上面介绍的是优化启动速度,主要是精简内核的内容,paper 中还有将近一半的篇幅是介绍如何优化创建 vm 的过程,包括把消息队列的机制改为共享内存机制,虚拟机的预创建以及很多脚本工具 binary 化等很黑科技的优化,对 Xen 进行了大刀阔斧的改进,(毕竟 Xen 也不是用来做这种事情的),有兴趣的同学可以去看下原文链接里的 paper。

话说回来,尽管作者真的做到了虚拟机比容器更轻更快,但是这个过程中用到的技术基本上是属于『即使我告诉你原理,你也依旧做不出来』的范畴。这其中需要太多内核和虚拟化的专业技术,一般的应用开发,甚至一般的底层开发都接触不到。而容器和虚拟化两者的融合,我相信依然是未来的一个必然要走的路线,虚拟机会越来越轻量化,容器也越来越会像虚拟机。这篇 paper 的工作也告诉了我们虚拟化还有大量的性能优化空间,而且既然虚拟机都能比容器更轻更快,那么现在的容器在这方面也要努力了。让我们看一下最终是容器长成了虚拟机,还是虚拟机变成了容器呢?

更多的细节,包括 Xen 的优化,CPU 性能方面的开销,具体的 Use Case 测试,都可以从原文链接的 paper 中获得。接下来几周我应该都会在看 SOSP‘17 的论文,写一些心得体会,想继续看的就关注一下呗。

 
时间: 2024-08-04 05:40:15

比容器更轻更快的虚拟机的相关文章

更轻更快的Vue.js 2.0与其他框架对比(转)

更轻更快的Vue.js 2.0 崭露头角的JavaScript框架Vue.js 2.0版本已经发布,在狂热的JavaScript世界里带来了让人耳目一新的变化. Vue创建者尤雨溪称,Vue 2.0 在性能上有显著的提升,同时保持轻量的文件下载: 渲染层基于一个轻量级的Virtual DOM实现进行了重写,该Virtual DOM实现fork自snabbdom.新的渲染层相比v1带来了巨大的性能提升,也让Vue 2.0成为了最快速的框架之一. 根据1.0到2.0迁移指南,“大约90%的API是相

Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常被解析,莫名其妙地打不开,或者时好时坏. 如果碰上不稳定的本地DNS,还可能经常出现无法解析的情况.除了要避免"坏"的DNS的影响,我们还可以利用DNS做些"好"事,例如管理局域网的DNS.给手机App Store加速.纠正错误的DNS解析记录.保证上网更加安全.去掉网

更轻量的 View Controllers

View controllers 通常是 iOS 项目中最大的文件,因为它们包含了许多不必要的代码.所以 View controllers 中的代码几乎总是复用率最低的.我们将会看到给 view controllers 瘦身的技术,让代码变得可以复用,以及把代码移动到更合适的地方. http://tang3w.com/translate/objective-c/objc.io/2013/10/22/%E6%9B%B4%E8%BD%BB%E9%87%8F%E7%9A%84-view-control

jqMobi 更小更快的移动框架

什么是jqMobi JqMobi   != JqueryMobileJqMobi是针对 移动设备开发的javascript框架,在2013年2月22日被 英特尔(intel)公司收购 改名为appframework jqMobi是由appMobi针对HTML5浏览器和移动设备开发的javascript框架,是个极其快速的查询选择库,支持W3C查询.官方网址:http://www.jqmobi.com/ 版本 jqMobi源码最初在2012年1月份推出,基于MIT/X11许可证,托管在GitHub

不用webservice wcf提供服务,用Rest更轻量

从2005年开始就开始有基于服务的开发方式,到08年时候 微软和sun等公司都已经提供了很多基于服务的开发框架 . 微软 .net 平台的基于服务的框架主要有:.NET Remoting.webservice.重量级的WCF 等框架. 随着互联网技术的发展Asp.net webForm 逐渐被Asp.net MVC 替换. 相信在互联网服务开发方向想Asp.net MVC WEB API 这种轻量级的基于Rest风格的服务框架应该也会逐渐替代WCF.不是WCF框架不好,而且太好了,内置的东西很多

更快更简单更美观——Power-BI V9.0隆重发版

继Power-BIV8.0发布后,经过11个月的精心准备,Power-BI V9.0隆重发布!Power-BI V9.0在原有基础上,在软件操作性.美观性.易用性.效率等方面进行了不断地完善与提升,让BI的开发与应用变得更快更简单更美观! 1. 真正做到5分钟制作一个信息量大.操作简易且美观大方的管理驾驶舱. 不同的管理角色,对管理驾驶舱的需求都是不同的:同一个管理角色,在不同的时期,其对KPI的关注也是不同的.那么,如何能快速制作部署满足上述场景的管理驾驶舱呢?Power-BI在众多细节上进行

[iOS]将DataSource分离并构建更轻量的UIViewController

在objccn.io中看到一篇文章,构建更轻量的View Controllers,在此自己实践一下加深理解. 新疆项目,learn--tableview,类前缀为LT,开始我们的实验. 首先需要在StoryBoard中拖拽一个UITableView,在头文件中申明tableView变量并建立连接: 新建ArrayDataSource类,作为TableView的DataSource.目的是将DataSource从原本的ViewController中分离出来: // // ArrayDataSour

无人机如何才能飞得更高更远?

现在的科技人士喜欢发现蓝海,更喜欢用文字把一些刚出来的行业涂上颜色颜料,真真假假的蓝海面积加起来快赶得上一个印度洋了,比如打车软件是蓝海,可穿戴设备是蓝海,K12在线教育是蓝海,安全手机是蓝海-外国专家的预言会在一定程度上刺激股市,著名的莫博士评测报告常常能影响一款手机的销量,以及华尔街对这家企业的态度:国内专家的观点因发表门槛较低,很难刺激股市,充其量刺激点击排行榜,毕竟,我们的科技媒体离真相比较远,也少人有人潜心做研究,以至于,我们要付出双倍的精力去阅读,一面吸收新的知识,一面还要付出精力,

简悦浏览器:智能插件让阅读更简单更愉悦

简悦浏览器 是一款专为iOS手机用户设计和开发的优化阅读浏览器工具,简悦浏览器通过自主开发的智能转码引擎和ACP插件可以无缝将一个普通的网站深度优化,为手机用户提供赏心悦目的阅读浏览体验.当用户使用简悦浏览器访问知名中文论坛和小说网站时,简悦浏览器会自动发现和提供最佳的转码服务,目前已经支持100+以上网站的深度优化. 简悦浏览器主要由浏览器界面.浏览器内核.智能转码引擎和浏览器插件四部分组成,如下图示. 浏览器内核?-指浏览器的渲染引擎.简悦浏览器内核采用WeKit.WebKit渲染引擎又包含