程序员人生 网站导航

云计算技术背后的那些天才程序员:KVM之父Avi Kivity

栏目:互联网时间:2014-09-08 17:51:27

提到以色列,自然会使人联想到犹太人和犹太教及其在二十世纪前半叶所遭受的种种苦难,作为这个世界上最古老的民族之一,除了其沉重的历史之外,更使人惊叹的是,这个面积仅有2.2万平方公里的弹丸之地,在短短几十年中转变成为了高科技研发和创新的“全球性大国”。或许,时刻处于强敌环伺的危险境地能够激发人类最原始的创造力,使得以色列在诸多领域出类拔萃,尤其在信息科技领域尤为突出,世界上最大的科技公司不约而同都选择在以色列设立研发中心,而且成果卓著,例如,Intel x86家族中比较重要的两代CPU,Sandy Bridge和Ivy Bridge都是由Intel以色列的研发中心研发的,蓝色巨人IBM也早在上世纪七十年代就在以色列设立了庞大的研发中心,且成果斐然。


但是,值得称道的是科技巨头在以色列的成功并不能掩盖个体的创新力量所散发出的光芒,尤其在云计算领域,当崇尚人格自由,同时又具有坚强性格这两种特质结合在一起所爆发出的创新的力量,使得草根创业公司和个体也敢于在前沿领域与科技巨头一争长短,其中的代表性人物就是Avi Kivity和他所在的以色列初创公司Qumranet,Avi Kivity提出并推动KVM(基于Linux内核的全虚拟化方案),以其精简的架构,清晰的定位很快获得Linux社区多数开发人员的支持得以快速被合并进入主干,从而成为x86全虚拟化技术的一颗新星。

虚拟化技术的由来与所面临的挑战

信息技术领域本不应是一个缺乏远见的领域,但事实正好相反,蓝色巨人IBM发明了PC,但失去了整个桌面,Intel发明并主导x86架构的处理器,提出了摩尔定律,但是失去了整个掌上,而且,即使是处于鼎盛时期的Intel,即使有摩尔定律指路,也没有人能料到,有朝一日x86家族的处理器几乎快要统治整个数据中心,而且x86家族处理器计算能力的提升速度快到可以在原本为桌面环境设计的处理器架构上采用“分时”来为多个虚拟环境提供运算能力的地步。


要知道虚拟化技术并不新,早在1967年,第一代的硬件虚拟化技术就由IBM提出,蓝色巨人在他们的大型机中实现了以CP/CMS为代表的虚拟化技术。但直到2006年,Intel和AMD才分别在各自的处理器中加入了“有限”的硬件虚拟化特性,实际上是给CPU打了一个补丁:),分别称为,Intel VT-x和AMD-V。与大型机所采用的专为虚拟化设计的处理器不同,从PC机起家的以Intel为代表的x86家族的处理器生来就并不是为虚拟化设计的。要在x86家族处理器上完全向后兼容的同时加入硬件虚拟化特性,无疑成为一个挑战,硬件层面实现较为困难,导致软件层面的实现复杂度也随之水涨船高。据估算,Linux内核中,虚拟化部分代码,x86架构部分的代码行是IA64架构的1倍,S390架构的7倍,PPC架构的8倍。即使和ARM架构相比,x86架构的复杂度依然是其4倍,其复杂度之高从中可见一斑。


Talk is cheap, show me the code
硬件层面较为复杂的局面意味着在系统层面需要一个极为精简的设计从而确保x86的硬件虚拟化特性能够在Linux内核层面有较好的可维护性,良好的性能,同时保持一定程度的可扩展性以便为未来新的特性(补丁)的加入留有余地,另外,在那个时候,Xen和Vmware依靠自己独有的技术分别在不同领域如日中天,尤其值得一提的是,Xen在开源领域几乎成为了虚拟化的事实标准,而且开源领域一向奉行Don’t reinvent the wheel这一金科玉律,这一切无疑都为提出新的虚拟化实现增加了巨大的不确定性,但是当时Linux内核中还没有任何虚拟化实现,这一现状又使得提出新的设计成为可能,唯一的问题就是谁能够在足够短的时间内另辟蹊径提出新的方案并且获得多数人的支持,这一点难度之大,恐怕只有深入了解开源社区的人才会感受到,要知道Linux社区恐怕是这个星球上最为“独裁”的组织,没有之一,而且语言“暴力”与人身“攻击”司空见惯(Alan Cox就是无法容忍这一点才选择退出Linux社区),要想在其中被认可并取得一席之地,除了超强的技术实力之外,更要有谦逊的品格,非凡的耐心和绝佳的沟通技巧。

Do one thing and do it well
Avi Kivity提出的方案非常清晰而且巧妙,充分遵循Linux源自Unix的设计思想,把方案的关注点聚焦于Linux内核部分,User space部分交给了稳定可靠的Qemu,采用Qemu作为其用户空间的入口,而且KVM仅仅实现HVM功能。遵循惯例,Linux内核中的KVM模块通过设备文件暴露系统呼叫给User space的Qemu。这一切现在看起来似乎平淡无奇,但是,Avi Kivity方案的背后是要在极短时间内通过代码实现来证实并获得社区认可这一几乎不可能实现的任务,这有赖于Avi Kivity对于计算机体系架构的深入理解,不单单是x86架构的Intel VT-x和AMD-V,还有后续陆续支持的其它架构,并且深入了解Linux内核,精通汇编和C。
以Avi Kivity为主的工程师仅仅花了不到一年时间就让Linux社区接受KVM的设计方案并且通过了代码Review,最终于2006年10月合并进入2.6.20主干,时至今日,人们依然对于KVM合并进入Linux主干的速度之快感到不可思议,从中也产生了一些不同的声音,但是多数人还是倾向于最简单的一种答案,那就是KVM良好的设计和实现是其最终被社区快速接受的主要原因。几年以后,Avi Kivity接受采访,最经常被问到的仍然是这个问题,他的回答也总是轻描淡写,说只不过提前花了半年时间在Linux社区学习如何更好的与社区开发人员协作,但是我们知道,这背后实际是其投入的大量心血和超强实力。
KVM的出现震撼了整个了Linux社区和业界,人们惊异于其出众的性能,更加折服于其精简的设计和良好实现(在SPEC virt2013 Benchmark中基于同样的处理器、内存和存储,KVM单在VM Density指标上以37%的优势超越对手),以至于,在极短的时间内,这个世界上最重要的科技公司纷纷宣称他们将把KVM作为他们x86虚拟化的解决方案,要知道,这极为不同寻常,在这之前以蓝色巨人IBM为代表的科技巨头已经在Xen上投入了大量的财力物力和人力,如果没有决定性的因素,科技巨头的Strategic dicision是不可能轻易改变的,时至今日,IBM在准备推出Power KVM,打算把KVM移植到Power Linux上。就连以Google Glass、无人驾驶汽车和Project Loon著称的跟现代科技格格不入的前沿科技巨头Google也在其Google Compute Engine中采用KVM技术作为x86的虚拟化方案来和Amazon对抗。这一切只能说明KVM凭借其优异的性能和精简架构当仁不让成为了一项无法忽视的虚拟化技术屹立于云计算之巅。

云计算的新征程OSv

在KVM合并进入Linux主干之后不久Avi Kivity很快成为内核KVM子模块的Maintainer,2012年11月21日一封标题为“KVM: Retire as maintainer”的简短邮件出现在Linux社区邮件列表中,在以KVM模块Maintainer身份贡献Linux社区6年零6个月之后,Avi Kivity选择开启了新的征程,发起并担任云计算创业公司Cloudius的CTO,这是一个不同寻常的选择,要知道在这个世界上,在虚拟化和云计算领域恐怕没有多少人能够比Avi Kivity更有发言权,这一次,Avi Kivity敏锐的意识到除了x86家族的处理器架构之外,已经成为云计算基石的Linux同样天生不是为云计算设计的,因此具有极大的性能提升空间,大胆提出并设计了专为云计算设计的操作系统OSv,当然,其依然是建立在Linux基础上,但是其无需Context switch,真正的Zero Copy以及Lock Free等特性使得其Less One second boot相对于众多宣称秒级响应的厂商来说更加具有说服力。尤其重要的是,KVM之父通过OSv项目表达了对以Linux CGroup技术为核心的Containner技术的看法。
Avi Kivity是如此低调,以至于你很难在网上找到太多的关于他的信息,只有寥寥几篇报道和访谈,但是KVM在整个云计算领域中又是如此的炙手可热,虽然今年已经是KVM进入内核的第八个年头,但是KVM依然活跃,我们依然难以估量其在云计算领域的真正价值,而这一切都源自于这个地球上最危险的那个角落中的那名天才程序员Avi Kivity。
注:仅以此文表达对Avi Kivity、Yaniv Kamay、Dor Laor、Uri Lublin还有Anthony Liguori还有其他KVM以及Qemu开发人员的敬意。(责编:周小璐)

原文链接:不朽传奇-云计算技术背后的那些天才程序员:KVM之父Avi Kivity

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐