CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

 2016-09-21 19:04:00.0

我們的包雲崗老師在人生中的早期似乎顯得有點默默無聞,雖然這種「默默無聞」也已經足以讓我等學渣服服帖帖的獻上自己的膝蓋。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

包老師在2003年獲得了南京大學理學學士學位,並進入中科院計算所進行碩士和博士的學習。從公開記錄上看,直到碩士爲止,包老師的學習生涯都顯得有些波瀾不驚。不過從博士開始,十餘年的積累開始集中爆發。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

讀博期間,包老師帶領小組設計了具有獨特優勢的訪存監控系統,爲斯坦福大學、EPFL、清華大學、華爲、韓國Hynix等十幾個機構提供超過2TB的訪存蹤跡數據;提出了基於路劃分的DMA Cache技術,2014年英特爾纔在其高端處理器Xeon芯片中使用了相同的技術路線,要知道包老師可是08年就已經博士畢業了啊;在普林斯頓大學開展博士後研究,發佈多核基準測試集PARSEC 3.0版本,被三大體系結構國際頂級會議上70%以上的論文使用;提出軟件定義服務器新架構PARD (ASPLOS'15)……

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

等會,我知道大家現在可能都是一臉懵逼:訪存是什麼鬼?路劃分是什麼鬼?DMA又是什麼鬼?實際上,這都是包老師的研究項目:計算機體系結構的研究內容,這項學科的目的就是想盡一切辦法用改進硬件結構和軟件結構的手段提高計算機的運行效率。

對計算機有些瞭解的同學可能就納悶了。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

計算機結構不是很簡單嗎?主板上面插個CPU,插個內存,再插個硬盤就能開機了,實在想玩遊戲再買個好點的獨立顯卡,裝個操作系統,跑的不知道多歡實呀,而且現在CPU運算這麼快,哪怕看起來超級複雜的算式刷刷兩下就算出來了,還怕運行效率不高?

然而事實上與大家想象的相反,正是因爲CPU的速度越來越快,已經遠遠超過了計算機其他設備能適應的速度,才導致如果不能在微觀層面給出非常合理的計算架構,會讓計算機的運算能力面臨極大的浪費。

且讓我這位靈魂畫手給大家舉個很簡單的例子,下圖是一個精簡過的計算機結構圖,我們都知道計算機的運行不是靠一個部件單獨完成的,比如說要運行一千段代碼,在現代計算機的結構裏,我們會先把代碼編寫好存到硬盤裏,然後需要運行的時候,先由內存將這段代碼調用至它的存儲空間內,

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

然後再通過總線系統一條一條傳送給CPU運行,CPU完成運行後再將結果輸出給需要這些結果的設備,包括內存、硬盤、顯示器等等。但是這裏就有一個問題了!

電腦內的器件內運行時都有一個固定的週期,叫時鐘週期,這些器件進行的所有操作都是以N個時鐘週期爲單位的,這樣可以讓對操作的規劃和不同器件間的協調變得更容易。不過,大家對CPU的主頻一般都很熟悉了:目前大多數CPU的主頻在2-3GHz這個區間內,然而其他器件的主頻大家關注過嗎,比如內存?


實際上,內存已經是爲了彌補硬盤的存取速度太慢(相對CPU的處理能力而言)而設置的一個用來與CPU配合的「高速」存儲器了,然而現在最流行的DDR3內存的主頻普遍只有1600MHz,甚至是1333MHz,只有CPU的一半左右。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

這意味着什麼呢?我們甚至可以忽略掉內存從硬盤中取出需要運算的命令的時間,就假設內存把這些命令送給CPU需要花費一個內存週期,而CPU運算這些命令需要花費一個CPU週期。這樣一來就是說,在內存把一條指令送給CPU之後CPU只要花半個內存週期多一點點就可以算出結果並且將其送出,而內存卻要等至少整整一個內存週期才能把下一條指令送給CPU。

WTF?那剩下的快半個內存週期的時間CPU幹什麼?儍看着你吭哧吭哧的跑嗎?

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

要知道CPU一旦通電,每微妙的耗電都是實打實的用出去了,但是這種頻率的不對等卻讓CPU必須耗費大量的時間白白等待內存把數據送過來,我們還沒有考慮內存在其存儲器內部尋找指令的時間和數據在總線上傳輸所花的時間等等,CPU的利用率已經被近乎腰斬,低到了只有60%左右,而且你還要考慮到這是在計算機內部相對高速的器件內存上顯現的結果。更不用說在無數服務器組成的計算機羣裏,這種數據的尋找和傳輸需要浪費多少寶貴的時間和能量了。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

而現在就是我們包老師登場的時間了,包老師所研究的科目的目標,包括上面提到的那些奇怪的詞語,都是爲了消除掉這種浪費,讓電腦內的各種器件儘可能的協調,讓每一個部件的應用效率都達到最大化。

說到這裏大家可能隱隱約約可以明白爲什麼有些電腦或者手機紙面數據看起來很漂亮,但用起來的體驗卻如噩夢一般,而有些數據看起來很差的手機和電腦,用起來卻絲般順滑了。(我纔沒有黑Android和Windows → _→ )

不用說,在包括深度學習在內的各種應用對計算量的需求如此之高的今天,這樣的研究無疑可以幫助企業和個人用戶將自己手中設備的每一絲潛力都發揮出來,讓他們得到最好的體驗。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

而需要大量計算能力的另一項領域是雲計算,雲計算是未來的趨勢之一,這點應該沒有任何人有疑問。

而我們的包老師也順應這股浪潮,投身進了雲計算的研究之中,因爲他發現,目前的雲計算存在一個很明顯的瓶頸。

目前雲計算的服務器,基本都還是基於傳統的馮·諾依曼結構搭建起來的計算機(也就是我們每天都能看見的那些)組成的機羣。

在這種結構下,雖然由於多年的經驗,已經積累了許多優化運算效率的方法,但在雲計算中這些方法卻遇到了一個新的挑戰:

雲服務器面對的用戶服務請求量是非常巨大的,但運算量的總量是有限的,無論如何優化都不可能超過這個物理最大值。

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

因此如果我們想在雲服務中讓計算設備的運算效率提高,也就意味着服務器CPU的負擔加重,對每條請求的響應時間會延長。而響應時間是雲服務中至關重要的指標,可能會嚴重影響用戶體驗和最終收入。因此各大數據公司不得不被迫強行讓自己的服務器CPU處於一個比較低的應用率,可謂是有力使不出。

這種浪費達到了什麼程度呢:谷歌作爲一家在大數據處理方面有着頂尖實力的公司,其在線雲服務的平均CPU利用率大概只有30%,而麥肯錫估計整個業界服務器平均利用率大約是6%,Gartner的估計稍樂觀一些,也只有12%

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

Google的雲服務CPU平均利用率,圖片來自包雲崗老師的博客

低的令人髮指啊有沒有!

包老師的團隊在14年就已經開始了這項研究,而經過不懈努力,他們最終實現了一個非常大的突破:借鑑互聯網曾經面對同樣難題的解決方案,在計算機內部也建立了一種類似於網絡包標籤化機制的新技術,可以極大的提高雲計算服務器計算效率的同時,保證足夠快的響應速度。

各位有沒有心動?想不想知道包老師到底是怎麼做到的?10月21日,包雲崗老師將在2016中國計算機大會上報告自己在這項技術上的最新研究成果,我們會贈送價值2300元的非CCF會員票,憑此票可以參加20-22日包括包老師在內的15位嘉賓精彩的特邀報告、30個論壇及50場活動(除晚宴外)。報名請掃描下面的二維碼在公衆號後臺發送「CNCC」報名,我們會每天從報名者中選出一名送出門票~~

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

我們來看看這些大牛都有誰:

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

當然,萬一大家沒有時間親自前往也沒關係~屆時雷鋒網(公衆號:雷鋒網)會對大會內容進行詳細的報道。大家一定不要錯過!

CNCC人物 | 看看中科院計算所的這位「包大神」怎麼給雲計算帶來質的飛躍

文章來源:雷鋒網