天天看點

雲計算技術背後的那些天才程式員:KVM之父Avi Kivity

摘要:KVM以其精簡的架構,清晰的定位獲得Linux社群多數開發人員的支援并快速被合并入主幹,進而成為x86全虛拟化技術的一顆新星,其提出者Avi Kivity對于計算機體系架構和Linux核心有深入了解,并且精通彙編和C。

提到以色列,自然會使人聯想到猶太人和猶太教及其在二十世紀前半葉所遭受的種種苦難,作為這個世界上最古老的民族之一,除了其沉重的曆史之外,更使人驚歎的是,這個面積僅有2.2萬平方公裡的彈丸之地,在短短幾十年中轉變成為了高科技研發和創新的“全球性大國”。或許,時刻處于強敵環伺的危險境地能夠激發人類最原始的創造力,使得以色列在諸多領域出類拔萃,尤其在資訊科技領域尤為突出,世界上最大的科技公司不約而同都選擇在以色列設立研發中心,而且成果卓著,例如,Intel x86家族中比較重要的兩代CPU,Sandy Bridge和Ivy Bridge都是由Intel以色列的研發中心研發的,藍色巨人IBM也早在上世紀七十年代就在以色列設立了龐大的研發中心,且成果斐然。

雲計算技術背後的那些天才程式員:KVM之父Avi Kivity

但是,值得稱道的是科技巨頭在以色列的成功并不能掩蓋個體的創新力量所散發出的光芒,尤其在雲計算領域,當崇尚人格自由,同時又具有堅強性格這兩種特質結合在一起所爆發出的創新的力量,使得草根創業公司和個體也敢于在前沿領域與科技巨頭一争長短,其中的代表性人物就是Avi Kivity和他所在的以色列初創公司Qumranet,Avi Kivity提出并推動KVM(基于Linux核心的全虛拟化方案),以其精簡的架構,清晰的定位很快獲得Linux社群多數開發人員的支援得以快速被合并進入主幹,進而成為x86全虛拟化技術的一顆新星。

虛拟化技術的由來與所面臨的挑戰

資訊技術領域本不應是一個缺乏遠見的領域,但事實正好相反,藍色巨人IBM發明了PC,但失去了整個桌面,Intel發明并主導x86架構的處理器,提出了摩爾定律,但是失去了整個掌上,而且,即使是處于鼎盛時期的Intel,即使有摩爾定律指路,也沒有人能料到,有朝一日x86家族的處理器幾乎快要統治整個資料中心,而且x86家族處理器計算能力的提升速度快到可以在原本為桌面環境設計的處理器架構上采用“分時”來為多個虛拟環境提供運算能力的地步。

雲計算技術背後的那些天才程式員:KVM之父Avi Kivity

要知道虛拟化技術并不新,早在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倍,其複雜度之高從中可見一斑。

雲計算技術背後的那些天才程式員:KVM之父Avi Kivity

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開發人員的敬意。

繼續閱讀