国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 比容器更輕更快的虛擬機(jī)

比容器更輕更快的虛擬機(jī)

時間:2023-06-25 22:33:02 | 來源:網(wǎng)站運營

時間:2023-06-25 22:33:02 來源:網(wǎng)站運營

比容器更輕更快的虛擬機(jī):盡管容器技術(shù)在今天越來越被人接受,但是安全性依然是一個繞不開的問題,由于容器采用的是共享內(nèi)核外加 cgroups 和 namespaces 等黑魔法的方式進(jìn)行隔離注定了會有很多路徑的 bug 導(dǎo)致隔離性問題,安全隱患依然存在。而不使用虛擬機(jī)的原因不外乎虛擬機(jī)啟動太慢,額外開銷太高,性能由于多了一層會下降。面對容器和虛擬機(jī)這兩個極端,容器一方想把容器做的隔離性更好,虛擬化方面想把虛擬機(jī)做的更輕,結(jié)果 neclab 的一群人居然做到把虛擬機(jī)的啟動速度做的比 Docker 還快,內(nèi)存開銷比 Docker 還小,這種反常識的事情居然發(fā)生了!他們把工作以 paper 的形式發(fā)表在了 SOSP'17 上,這篇文章會介紹下他們是動用了什么樣的核武器達(dá)到了這樣的效果。

想要加速就要先有個預(yù)期,看一下我們的現(xiàn)狀是什么,極限又能到哪里。作者對比了進(jìn)程啟動時間,容器啟動時間以及一個虛擬機(jī)啟動的時間。其中進(jìn)程啟動時間作為一個理論上的極限需要 3.5 ms,docker 容器啟動時間需要 200ms,而一個 Debian 虛擬機(jī)的啟動時間需要大約 2s,其中創(chuàng)建 vm 需要 0.5 s, 啟動 vm 需要 1.5s。

而和啟動速度相關(guān)最重要的一個因素就是鏡像體積大小,啟動的速度基本上隨著鏡像的體積線性增加。如下圖所示:




vm 通常需要一個完整的操作系統(tǒng),所以體積會比較大,如果想優(yōu)化速度就必須要精簡操作系統(tǒng)了,作者通過兩種方法實現(xiàn)了這種精簡。

第一種也是最極端的一種 Unikernels,這可以算是終極核武了。Unikernels 的定義比較復(fù)雜,簡單來說就是專門為這個應(yīng)用做一個操作系統(tǒng)內(nèi)核,這個內(nèi)核只提供能運行這個服務(wù)的最基本功能,除了能跑這個應(yīng)用別的什么都干不了。應(yīng)用和內(nèi)核也是 link 在一起的,你甚至不好說是給這個應(yīng)用定制了一個內(nèi)核,還是定制了一個內(nèi)核具有一定應(yīng)用功能。這種方法需要為每個特定應(yīng)用定制一個特定內(nèi)核,聽著就是個不可能完成的任務(wù),不過作者還是做了好幾個這樣的 unikernels,甚至還做了個能跑 serverless 功能的 unikernels。

當(dāng)然這種方法太極端了,第二種方法就相對溫和一些,不過依然是洲際導(dǎo)彈重量級別的。既然定制 unikernels 太難了,那就拿一個 Linux 內(nèi)核進(jìn)行精簡化只保留需要的模塊和功能,為每個應(yīng)用編譯一個精簡化的 Linux 內(nèi)核,這樣就不需要做應(yīng)用改造了。為了達(dá)到這個目的作者還專門做了個 Tinyx 工具,可以根據(jù)應(yīng)用 objdump 出來的信息來自動尋找依賴,并且根據(jù)啟發(fā)性的測試不斷地去尋找哪些 linux 模塊可以關(guān)閉,去除掉那些和應(yīng)用無關(guān)的功能和編譯選項。除了縮小鏡像體積,另一個帶來的好處是會降低 vm 啟動占用的內(nèi)存。經(jīng)過精簡的內(nèi)核可以只占用 1.8M 內(nèi)存,要知道 docker 給每個容器開啟的 shim 進(jìn)程也需要占據(jù) 4M 左右的內(nèi)存。

最終的結(jié)果是利用 Tinyx 精簡內(nèi)核后鏡像大小是 9.5M 的啟動時間是 180ms,而 Unikernels 方法鏡像大小是 480K,啟動時間只需要 3ms,這兩種方案都已經(jīng)比 200ms 的 docker 啟動時間還要快了。并且更要命的是他們的內(nèi)存額外開銷比 docker 還要低,從下圖可以看出當(dāng)運行到 3K 容器時宿主機(jī)已經(jīng)無法再創(chuàng)建 docker 容器了,而 Unikernels 可以平穩(wěn)跑到 8K。




上面介紹的是優(yōu)化啟動速度,主要是精簡內(nèi)核的內(nèi)容,paper 中還有將近一半的篇幅是介紹如何優(yōu)化創(chuàng)建 vm 的過程,包括把消息隊列的機(jī)制改為共享內(nèi)存機(jī)制,虛擬機(jī)的預(yù)創(chuàng)建以及很多腳本工具 binary 化等很黑科技的優(yōu)化,對 Xen 進(jìn)行了大刀闊斧的改進(jìn),(畢竟 Xen 也不是用來做這種事情的),有興趣的同學(xué)可以去看下原 paper。




話說回來,盡管作者真的做到了虛擬機(jī)比容器更輕更快,但是這個過程中用到的技術(shù)基本上是屬于『即使我告訴你原理,你也依舊做不出來』的范疇。這其中需要太多內(nèi)核和虛擬化的專業(yè)技術(shù),一般的應(yīng)用開發(fā),甚至一般的底層開發(fā)都接觸不到。而容器和虛擬化兩者的融合,我相信依然是未來的一個必然要走的路線,虛擬機(jī)會越來越輕量化,容器也越來越會像虛擬機(jī)。這篇 paper 的工作也告訴了我們虛擬化還有大量的性能優(yōu)化空間,而且既然虛擬機(jī)都能比容器更輕更快,那么現(xiàn)在的容器在這方面也要努力了。讓我們看一下最終是容器長成了虛擬機(jī),還是虛擬機(jī)變成了容器呢?




更多的細(xì)節(jié),包括 Xen 的優(yōu)化,CPU 性能方面的開銷,具體的 Use Case 測試,都可以從原 paper 中獲得。接下來幾周我應(yīng)該都會在看 SOSP'17 的論文,寫一些心得體會,想繼續(xù)看的就關(guān)注一下唄。




Paper 鏈接:My VM is Lighter (and Safer) than your Container

關(guān)鍵詞:虛擬,容器

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉