小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

虛擬機比容器來得更輕盈,還更安全!(附論文)

 萬皇之皇 2017-11-19

我們可以在改善虛擬機的隔離的同時擁有容器的高效嗎?在這篇論文中,幾位作者研究了基于Xen的虛擬機性能的邊界。他們發(fā)現(xiàn)了啟動大量輕量級虛擬機(包括unikernel和最小Linux虛擬機)時出現(xiàn)的瓶頸,并消除了瓶頸。因而獲得的系統(tǒng)名為LightVM,并借助最小的unikernel鏡像,可以在短短4ms內(nèi)啟動虛擬機。相比之下,Linux上的fork/exec則需要大約1ms。在同一個系統(tǒng)上,Docker容器啟動需要大約150ms。


64核機器上LightVM的啟動時間與Docker容器的啟動時間


這些結(jié)果是在LightVM來賓(guest)是unikernel的情況下獲得的。你可能只會在特殊情況下創(chuàng)建unikernel。(本文中一種頗有意思的例子是基于Micropython的unikernel,它可以用來支持serverless函數(shù)的執(zhí)行)。幾位作者還開發(fā)了一個名為TinyX的自動化構(gòu)建系統(tǒng),用于創(chuàng)建旨在運行單個應(yīng)用程序的最小Linux虛擬機鏡像。如果我們比較一下TinyX虛擬機和Docker的啟動時間,性能非常接近于每個內(nèi)核大約250個虛擬機/容器。


unikernel來賓、Tinyx來賓與Docker容器三者的啟動時間


過了這個臨界點,Docker開始比虛擬機略占上風(fēng),因為即使由TinyX創(chuàng)建的閑置的最小Linux發(fā)行版也確實運行一些偶爾的后臺任務(wù)。


虛擬機數(shù)量增加后,Xen擴展起來如何?瓶頸在哪里?


如下圖所示,限制虛擬化可伸縮性和性能的最大一個因素是來賓虛擬機的大小。為了制作該圖,從ramdisk啟動unikernel虛擬機,不同大小的二進制對象注入到未經(jīng)過壓縮的鏡像文件。所以所有影響與鏡像大小有關(guān)。


啟動時間隨虛擬機鏡像的大小呈線性增加


所以,如果我們想要快速啟動,我們知道鏡像大小會很重要。我們之前在The Morning Paper上見過unikernel,它們提供最小的來賓鏡像。在本文中,幾位作者使用Mini-OS創(chuàng)建諸多unikernel,包括實現(xiàn)返回當(dāng)前時間的一項TCP服務(wù)的“daytime”unikernel。大小是480KB(未經(jīng)壓縮),在3.6MB的內(nèi)存中運行。這個unikernel用于測試潛在虛擬機的內(nèi)存消耗的下限。


不過基于Mini-OS制作你自己的unikernel鏡像需要較大的工作量,許多人可能沒準(zhǔn)備好,于是幾位作者還構(gòu)建了Tinyx。


Tinyx是一種自動化構(gòu)建系統(tǒng),可以創(chuàng)建旨在運行單個應(yīng)用程序的最小Linux虛擬機鏡像。實際上,該工具構(gòu)建的虛擬機包含基于Linux的最小發(fā)行版以及經(jīng)過優(yōu)化的Linux內(nèi)核。它在高度專業(yè)化的unikernel(擁有最佳性能,但需要將應(yīng)用程序移植到一款最小操作系統(tǒng))與功能完備的通用操作系統(tǒng)虛擬機(默認情況下支持大量應(yīng)用程序,但是帶來了性能開銷)之間提供了一個中間點。


Tinyx創(chuàng)建的內(nèi)核鏡像大小只有典型Debian內(nèi)核的一半,運行時耗用的內(nèi)存卻少得多(Tinyx僅要1.6MB,Debian需要8MB)。


使用因而獲得的小巧虛擬機鏡像,我們可以在啟動大量虛擬機時探究Xen本身的行為。啟動1000個來賓時,以下是Debian最小安裝、Tinyx和MiniOS(unikernel)的啟動和創(chuàng)建時間,并在同樣硬件上進行了比較:Docker容器和簡單的進程創(chuàng)建。


比較了幾種來賓的域?qū)嵗蛦訒r間。如果是小巧來賓,實例化在啟用新虛擬機時出現(xiàn)的延遲中占了大頭


隨著我們不斷創(chuàng)建虛擬機,創(chuàng)建時間顯著延長(注意對數(shù)尺度):創(chuàng)建第1000個Debian、Tinyx和unikernel來賓分別需要42s、10s和700ms。


虛擬機變小后,創(chuàng)建時間在獲得可用性所需的總時間中占了更大的比重。為了了解所有時間用在那里,研究團隊測量了Xen,得出了這張圖片:


對虛擬機創(chuàng)建的開銷細分后表明,與XenStore的交互和虛擬設(shè)備的創(chuàng)建是兩大開銷。


XenStore交互和設(shè)備創(chuàng)建占了大頭。其中,設(shè)備創(chuàng)建的開銷相當(dāng)穩(wěn)定,但是XenStore開銷呈超線性增加。


LightVM的設(shè)計


我們的目標(biāo)是讓虛擬機啟動時間與進程啟動時間相當(dāng)。Xen不是為這個目標(biāo)而設(shè)計的,正如前面的結(jié)果顯示的那樣,這些問題的根源遠非代碼效率低下那么簡單。比如說,XenStore的一個基本問題是類似文件系統(tǒng)的集中式API,它在虛擬機創(chuàng)建和引導(dǎo)過程中太慢了、無法使用,需要幾十次中斷和越過權(quán)限域(privilegedomain)。


我敢打賭,這種設(shè)計第一次搞出來時,很難想象有人啟動1000個來賓虛擬機。


LightVM重新設(shè)計了Xen控制平面,使用一種名為noxs(意為“noXenStore”)的精簡驅(qū)動程序來取代XenStore,并允許前端驅(qū)動程序和后端驅(qū)動程序之間通過共享內(nèi)存來直接聯(lián)系。


LightVM架構(gòu)顯示了noxs、x1的替代者(chaos)、splittoolstack及配套的守護進程以及負責(zé)迅速為軟件交換機添加虛擬接口的xendevd


LightVM還備有一批預(yù)先準(zhǔn)備好的虛擬機外殼,通過這些外殼,所有虛擬機共有的所有處理都在后臺完成。虛擬機創(chuàng)建命令發(fā)出后,一個符合該虛擬機需求的合適的外殼從這批外殼中取出,只需要完成最后的初始化步驟,比如將內(nèi)核鏡像加載到內(nèi)存和完成設(shè)備的初始化。


標(biāo)準(zhǔn)Xen中的設(shè)備創(chuàng)建最后調(diào)用bash腳本,這是個緩慢的過程。LightVM換成了執(zhí)行預(yù)定義設(shè)置的二進制守護程序,沒有forking或bash腳本。


性能


我們在文章開頭看到了有許多鏡像的LightVM的啟動時間。此外,LightVM可以在30ms內(nèi)保存虛擬機,在20ms內(nèi)恢復(fù)虛擬機。而標(biāo)準(zhǔn)Xen分別需要128ms和550ms。


unikernel的內(nèi)存使用非常接近Docker容器,Tinyx需要更多內(nèi)存,但面對1000個來賓只需要多22GB。這只是當(dāng)前服務(wù)器內(nèi)存容量的一小部分。


虛擬機的CPU使用情況也與容器相當(dāng),只要虛擬機經(jīng)過簡化,只包括必要的功能:


unikernel、Tinyx、Debian虛擬機和Docker的CPU使用情況


使用場合


幾位作者列出了LightVM +輕量級虛擬機大放異彩的四種不同的使用場合。


在所有下列場合下,使用容器將有助于提升性能,但會削弱隔離,而使用功能完備的虛擬機將提供與輕量級虛擬機同樣的隔離,但性能較差。


1. 每個移動用戶的個人防火墻在蜂窩基站或其附近的移動網(wǎng)關(guān)中運行(移動邊緣計算, MEC)。這里使用了ClickOSunikernel鏡像,8000個防火墻可在一臺64核AMD機器上運行,啟動時間為10ms。以這種方式在邊緣運行LightVM的一臺機器可以為蜂窩小區(qū)(cell)中的所有用戶運行個性化防火墻,而不會成為瓶頸。

2. 移動邊緣計算中的即時服務(wù)實例化(類似于JITSU)。

3. CDN處的高密度TLS終結(jié),這需要內(nèi)容提供商的長期秘密密鑰。因此,不同內(nèi)容提供商的代理之間的強隔離頗受歡迎。

4. 創(chuàng)建輕量級計算服務(wù),比如AWS Lambda。就這個使用場合而言,研究人員使用基于Micropython的unikernel來運行用Python編寫的計算。啟動和開始執(zhí)行一個函數(shù)需要大約1.3ms。如果有意給系統(tǒng)施加壓力,發(fā)送測試系統(tǒng)處理能力之外的更多請求,服務(wù)時間呈線性上升,直到大約800個虛擬機才停止線性上升。


一臺過載機器上的輕量級計算函數(shù)服務(wù)時間(Minipython unikernel)


我們介紹的使用場合表明,確實需要輕量級虛擬化,而且在獲得良好隔離的同時,還能獲得與容器同等或更好的性能。


谷歌云平臺博客上最近出現(xiàn)了一篇文章:《揭秘基于容器的安全vs基于虛擬機的安全:明文安全性》(https://cloudplatform./2017/08/demystifying-container-vs-VM-based-security-security-in-plaintext.html)。該文從一家長期以來運行基于容器的基礎(chǔ)設(shè)施的公司出發(fā),闡述了容器安全和隔離方面一個值得關(guān)注的觀點。


點擊放大查看~


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多