孟璞輝 高 豐
1中國(guó)聯(lián)通云數(shù)據(jù)有限公司100084北京
2英特爾中國(guó)100013北京
在云場(chǎng)景下,由于虛擬機(jī)的內(nèi)存占用機(jī)制,其內(nèi)存資源一旦分配,就會(huì)被虛擬機(jī)操作系統(tǒng)持續(xù)占用,即使該虛擬機(jī)大量?jī)?nèi)存資源空閑,被占用的宿主機(jī)內(nèi)存資源也無法被其他虛擬機(jī)利用,造成資源池內(nèi)存資源不足。
針對(duì)以上實(shí)際生產(chǎn)中的問題,傳統(tǒng)的解決方法一般不外乎兩種,一種是簡(jiǎn)單粗暴地增加服務(wù)器的內(nèi)存配比,通過加大內(nèi)存的方式解決內(nèi)存不足的問題。第二種方法是通過swap的方式,將部分內(nèi)存保存在硬盤上,緩解內(nèi)存不足的壓力。
其中方法一自然是簡(jiǎn)單有效,并且沒有任何風(fēng)險(xiǎn)隱患。然而目前市面上DIM內(nèi)存普遍價(jià)格為$10/GB,高昂的成本對(duì)于陷入紅海的云計(jì)算從業(yè)者們更感到雪上加霜,難以接受。
而通過swap的方式解決內(nèi)存問題則很不可靠。由于linux本身的內(nèi)存優(yōu)化機(jī)制,還有硬盤本身的性能所限,當(dāng)應(yīng)用直接訪問swap內(nèi)的資源時(shí),往往會(huì)對(duì)應(yīng)用造成極大的不利影響。
最新的Linux kernel都支持內(nèi)存超分[1-3](Memory Overcommit),KVM還可以對(duì)相同類型的虛機(jī)利用KSM(Kernel Same-page Merging)合并完全一致的內(nèi)存頁(yè)表。但當(dāng)部署密度較大時(shí),隨著活躍的內(nèi)存頁(yè)表增加,仍然容易出現(xiàn)swap,從而引起應(yīng)用程序被強(qiáng)制中斷或者運(yùn)行異常。
在云場(chǎng)景中,虛機(jī)內(nèi)部應(yīng)用訪問到swap資源,造成應(yīng)用崩潰,進(jìn)而影響到虛機(jī)的穩(wěn)定性。當(dāng)希望重新創(chuàng)建一個(gè)新的虛機(jī)接替原有的虛機(jī)時(shí),本地內(nèi)存資源仍然在被占用,而新虛機(jī)被迫在swap上創(chuàng)建內(nèi)存,造成新虛機(jī)創(chuàng)建失敗。這種負(fù)面的連鎖效應(yīng)對(duì)于整個(gè)云計(jì)算系統(tǒng)而言是災(zāi)難性的。
Optane[4-5]系列產(chǎn)品作為intel新推出的SSD產(chǎn)品線,采用了創(chuàng)新性的3D Xpoint存儲(chǔ)介質(zhì),從基礎(chǔ)材料上改變了傳統(tǒng)NAND SSD的存儲(chǔ)特性。其擁有更高的隨機(jī)寫性能,更低的訪問延時(shí)和高達(dá)30 DWPD(Drive Write Per Day)的耐用性。
Intel Memory Drive Technology(IMDT)[6]是一種全新的擴(kuò)展內(nèi)存技術(shù),利用Optane產(chǎn)品的優(yōu)良特性以及高效的內(nèi)存預(yù)取算法,可以將Optane系列SSD產(chǎn)品作為現(xiàn)有DRAM內(nèi)存的擴(kuò)充,從而為用戶提供一種經(jīng)濟(jì)的大內(nèi)存解決方案。而且這種內(nèi)存擴(kuò)展技術(shù),對(duì)OS和應(yīng)用/虛機(jī)而言是透明的,也就是不用修改OS內(nèi)核、軟件接口等。對(duì)于支持的平臺(tái),用戶的軟件堆棧將可以平滑遷移,提高解決方案上線的效率。
本項(xiàng)目就是針對(duì)其IMDT功能在云場(chǎng)景下的應(yīng)用做出的驗(yàn)證性測(cè)試工作。本次實(shí)驗(yàn)中的Optane系列SSD產(chǎn)品通過PCIE 3.0接口與服務(wù)器相連,以擴(kuò)展內(nèi)存的形式為云服務(wù)器提供內(nèi)存資源。
在本次測(cè)試工作中,我們嘗試通過采用Optane來擴(kuò)展內(nèi)存,解決內(nèi)存不足問題。
首先在實(shí)驗(yàn)室搭建了聯(lián)通沃云生產(chǎn)環(huán)境一致的測(cè)試環(huán)境,宿主機(jī)采用的是Dell R730服務(wù)器,其處理器為Intel的至強(qiáng)E5-2650 v4,雙路12核,總計(jì)48線程。內(nèi)存采用的是128GB DDR 4內(nèi)存。硬盤為SATA SSD。BIOS啟動(dòng)配置修改UEFI:on。宿主機(jī)的操作系統(tǒng)為Centos7.1。虛擬機(jī)的操作系統(tǒng)是紅帽7.3,QEMU為1.5.3版本。IMDT版本為8_2_1455_29。Optane型號(hào)為Intel_SSD_DC_P4800X 375GB。
在對(duì)照?qǐng)鼍爸校覀冊(cè)跊]有Optane的情況下,模擬正常的云業(yè)務(wù)。根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景,測(cè)試采用占比較多的通用計(jì)算型虛擬機(jī),其規(guī)格為4核16GB。
由于128GB內(nèi)存的限制,我們依照順序在宿主機(jī)上啟動(dòng)了7臺(tái)虛擬機(jī),在全部虛擬機(jī)啟動(dòng),并且占用了全部?jī)?nèi)存資源的時(shí)候,內(nèi)存分配達(dá)到112GB,處理器占用28線程。此時(shí)內(nèi)存分配已接近資源極限,在VM啟動(dòng)時(shí)利用linux自帶工具free可觀察到這一現(xiàn)象。
每臺(tái)虛擬機(jī)內(nèi)部通過stream[7-8]內(nèi)存測(cè)試軟件,通過CPU對(duì)數(shù)據(jù)塊執(zhí)行add(加法)、copy(復(fù)制)、scale(乘法)及triadd(前三種操作合一)操作,得到內(nèi)存的IO帶寬和延遲數(shù)據(jù)。通過設(shè)定參數(shù),虛機(jī)的活躍內(nèi)存為8GB,占比為50%,總活躍內(nèi)存為56GB。
在測(cè)試過程中,7臺(tái)虛機(jī)并不是同時(shí)啟動(dòng),而是根據(jù)時(shí)序,逐臺(tái)啟動(dòng)。這樣我們可以獲得宿主機(jī)在不同負(fù)載的情況下,內(nèi)部虛擬機(jī)的內(nèi)存性能曲線。
每個(gè)時(shí)序啟動(dòng)一臺(tái)vm,每個(gè)時(shí)序內(nèi),啟動(dòng)的每臺(tái)vm執(zhí)行3次stream內(nèi)存測(cè)試。
帶寬:?jiǎn)蝪m時(shí)平均帶寬最大,可達(dá)到33GB/s(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步下降,7臺(tái)虛機(jī)啟動(dòng)時(shí),單vm平均帶寬19GB/s(triad操作),全部7臺(tái)vm總帶寬達(dá)到133GB/s(triad操作),如圖1所示。
圖1 對(duì)照?qǐng)鼍皢翁摍C(jī)內(nèi)存帶寬圖
時(shí)延:?jiǎn)蝪m時(shí)時(shí)延最低,為2.88ns(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步增長(zhǎng),7臺(tái)虛機(jī)啟動(dòng)時(shí),單vm平均時(shí)延5.586ns(triad操作),全部7臺(tái)vm最大時(shí)延9.41ns(triad操作)。
結(jié)果顯示,當(dāng)宿主機(jī)只有少量虛機(jī)活躍的情況下,每臺(tái)虛機(jī)可以獲得最優(yōu)的內(nèi)存性能。其單臺(tái)虛機(jī)的內(nèi)存帶寬達(dá)到33GB/s(triadd操作),延遲為2.88ns(triadd操作)。而隨活躍虛機(jī)的增加,宿主機(jī)上全部虛機(jī)的整體內(nèi)存帶寬仍在不斷增加,但是對(duì)于單臺(tái)虛機(jī)來說,其內(nèi)存帶寬已經(jīng)受到影響而逐漸降低,而延遲也隨之升高。在7臺(tái)虛機(jī)全部啟動(dòng),并活躍工作的時(shí)候,宿主機(jī)整體內(nèi)存帶寬為133GB/s(triadd操作),單虛機(jī)平均帶寬為19GB/s(triadd操作),單虛機(jī)平均時(shí)延為5.586ns(triadd操作),最大時(shí)延為9.41ns(triadd操作)。此時(shí),宿主機(jī)上活躍內(nèi)存總量為56GB,分配值為112GB。
可以看到,即使是全部采用真實(shí)DRAM內(nèi)存,宿主機(jī)的總內(nèi)存帶寬是存在一個(gè)比較明顯且容易觸及的極限。在全部虛機(jī)負(fù)載都較大的時(shí)候,各虛機(jī)共享宿主機(jī)的內(nèi)存帶寬,存在資源搶占,并且對(duì)于單個(gè)虛擬機(jī),單個(gè)虛擬機(jī)內(nèi)應(yīng)用,內(nèi)存性能存在較大的波動(dòng)性(延遲從6.64ns到9.41ns)。
在標(biāo)準(zhǔn)測(cè)試場(chǎng)景中,我們?cè)黾恿薕ptane作為擴(kuò)展內(nèi)存,模擬云業(yè)務(wù)。虛擬機(jī)的規(guī)格上,測(cè)試依然采用占比較多的通用計(jì)算型虛擬機(jī),規(guī)格為4核16GB。
在通過Optane擴(kuò)展內(nèi)存時(shí),我們按照其1:2的推薦比例使用。由于之前宿主機(jī)上是128GB的DIM內(nèi)存,通過Optane獲得了額外217GB實(shí)際可用的內(nèi)存資源,此時(shí)在宿主機(jī)上已經(jīng)可以看到內(nèi)存資源擴(kuò)展到了342GB。我們依照順序在宿主機(jī)上啟動(dòng)了11臺(tái)虛擬機(jī),在虛擬機(jī)全部啟動(dòng),并且占用了全部?jī)?nèi)存資源的時(shí)候,內(nèi)存分配達(dá)到176GB,處理器占用44線程。此時(shí)處理器已接近資源極限。
每臺(tái)虛擬機(jī)內(nèi)部仍然通過stream內(nèi)存測(cè)試軟件,通過CPU對(duì)數(shù)據(jù)塊執(zhí)行add、copy、scale及triadd操作,得到內(nèi)存帶寬和延遲數(shù)據(jù)。通過設(shè)定參數(shù),虛機(jī)的活躍內(nèi)存為8GB,占比為50%,活躍內(nèi)存達(dá)到88GB。由于stream軟件的特性,在測(cè)試過程中,不論實(shí)際的活躍內(nèi)存大小是多少,stream應(yīng)用都會(huì)完全占用處理器線程的計(jì)算資源。因此在場(chǎng)景2中,虛擬機(jī)數(shù)量被處理能力限制在了11臺(tái)的規(guī)模(44/48線程)。
相較于對(duì)照?qǐng)鼍埃ㄟ^采用Optane擴(kuò)展內(nèi)存,使得我們可以在同樣的宿主機(jī)上多啟動(dòng)了4虛擬機(jī),增幅60%。在實(shí)際生產(chǎn)中,考慮到應(yīng)用往往不會(huì)完全占用計(jì)算資源,所以在實(shí)際生產(chǎn)中還有更大提升潛力。
在測(cè)試過程中,11臺(tái)虛機(jī)根據(jù)時(shí)序逐臺(tái)啟動(dòng),以便獲得宿主機(jī)在不同負(fù)載的情況下內(nèi)部虛擬機(jī)的內(nèi)存性能曲線,并方便與對(duì)照?qǐng)鼍白鰧?duì)比。
每個(gè)時(shí)序啟動(dòng)一臺(tái)vm,每個(gè)時(shí)序內(nèi),啟動(dòng)的每臺(tái)vm執(zhí)行10次stream內(nèi)存測(cè)試。
帶寬:?jiǎn)蝪m時(shí)平均帶寬最大,可達(dá)到33GB/s(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步下降,11臺(tái)虛機(jī)啟動(dòng)時(shí),單vm平均帶寬13GB/s(triad操作),全部11臺(tái)vm總帶寬達(dá)到147GB/s(triad操作),如圖2所示。
圖2 標(biāo)準(zhǔn)測(cè)試單虛機(jī)內(nèi)存帶寬圖
時(shí)延:?jiǎn)蝪m時(shí)時(shí)延最低,為2.94ns(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步增長(zhǎng),11臺(tái)虛機(jī)啟動(dòng)時(shí),單vm平均時(shí)延8.539ns(triad操作),全部7臺(tái)vm最大時(shí)延16.26ns(triad操作),如圖3所示。
結(jié)果顯示出與對(duì)照?qǐng)鼍邦愃频内厔?shì),即當(dāng)宿主機(jī)只有少量虛機(jī)活躍的情況下,每臺(tái)虛機(jī)可以獲得最優(yōu)的內(nèi)存性能,而隨啟動(dòng)的虛機(jī)增加,總體性能逼近宿主機(jī)極限,所有虛機(jī)則共享宿主機(jī)資源。
圖3 標(biāo)準(zhǔn)測(cè)試單虛機(jī)最大內(nèi)存時(shí)延圖
標(biāo)準(zhǔn)測(cè)試場(chǎng)景中,其單臺(tái)虛機(jī)的內(nèi)存帶寬最大帶寬達(dá)到33GB/s(triadd操作),最低延遲為2.94ns(triadd操作),出現(xiàn)在第一時(shí)序內(nèi),此時(shí)只有1臺(tái)虛擬機(jī)啟動(dòng)工作,負(fù)載最低。該結(jié)果可以認(rèn)為等同于場(chǎng)景1的結(jié)果,其偏差完全在正常波動(dòng)之內(nèi)。這說明,Optane在內(nèi)存調(diào)用的優(yōu)化,使得系統(tǒng)可以優(yōu)先使用真實(shí)DRAM內(nèi)存,保證應(yīng)用在真實(shí)DRAM內(nèi)存充足的時(shí)候不會(huì)受到任何影響。
隨活躍虛機(jī)的增加,整體趨勢(shì)與場(chǎng)景1基本一致,即使分配內(nèi)存值超過真實(shí)DRAM大小,測(cè)試結(jié)果仍然沒有出現(xiàn)內(nèi)存帶寬的劇烈波動(dòng)。在11臺(tái)虛機(jī)全部啟動(dòng),并活躍工作的時(shí)候,宿主機(jī)整體內(nèi)存帶寬為147GB/s(triadd操作),單虛機(jī)平均帶寬為13GB/s(triadd操作),單虛機(jī)平均時(shí)延為8.539ns(triadd操作),最大時(shí)延為16.26ns(triadd操作)。此時(shí),宿主機(jī)上活躍內(nèi)存總量為88GB,分配值為176GB。此時(shí)雖然宿主機(jī)上分配給虛機(jī)的總內(nèi)存大小已經(jīng)超過了128GB,但活躍內(nèi)存仍然小于真實(shí)DRAM大小,這反映出Optane針對(duì)內(nèi)存的活躍度對(duì)內(nèi)存資源進(jìn)行了有效資源分類,并通過算法優(yōu)化了內(nèi)存地址的映射算法,保證應(yīng)用性能。
在大負(fù)載測(cè)試場(chǎng)景中,我們?cè)跇?biāo)準(zhǔn)測(cè)試場(chǎng)景的基礎(chǔ)上,增加了虛機(jī)內(nèi)應(yīng)用的負(fù)載,將活躍內(nèi)存率推高至80%。測(cè)試依然采用占比較多的通用計(jì)算型虛擬機(jī),規(guī)格為4核16GB。大負(fù)載測(cè)試場(chǎng)景作為標(biāo)準(zhǔn)測(cè)試場(chǎng)景的擴(kuò)展實(shí)驗(yàn),虛機(jī)數(shù)量依然為11臺(tái),并且采取同時(shí)啟動(dòng)的方式,直接將應(yīng)用負(fù)載推到預(yù)定值。此時(shí)宿主機(jī)上通過Optane獲得了額外217GB實(shí)際可用的內(nèi)存資源,宿主機(jī)上可以看到內(nèi)存資源擴(kuò)展到了342GB。同時(shí)處理器負(fù)載為44/48線程,內(nèi)存為176G分配,143GB活躍內(nèi)存。虛擬機(jī)中為4/4線程滿負(fù)載,內(nèi)存為13GB/16GB(活躍/總計(jì))。此時(shí)活躍內(nèi)存數(shù)也超過了真實(shí)DRAM內(nèi)存的大小。一次性啟動(dòng)全部11臺(tái)vm,執(zhí)行2次stream內(nèi)存測(cè)試。
帶寬:11臺(tái)虛機(jī)在活躍內(nèi)存達(dá)到80%時(shí),單vm平均帶寬15GB/s(triad操作),全部11臺(tái)vm總帶寬達(dá)到168GB/s(triad操作),如圖4所示。
時(shí)延:11臺(tái)虛機(jī)在活躍內(nèi)存達(dá)到80%時(shí),單vm平均時(shí)延達(dá)到12.63ns(triad操作),全部11臺(tái)vm最大時(shí)延為24.66ns(triad操作),如圖5所示。
測(cè)試結(jié)果看到,其延遲有較大增長(zhǎng),平均時(shí)延達(dá)到12.63ns,最大時(shí)延達(dá)到24.66ns。較之前標(biāo)準(zhǔn)測(cè)試場(chǎng)景有較大增長(zhǎng)。
最大24.66ns的結(jié)果,相較于測(cè)試中最優(yōu)的2.88ns而言,劣化了接近10倍。雖然仍需結(jié)合具體應(yīng)用,但是考慮到普遍的應(yīng)用系統(tǒng)場(chǎng)景,其中網(wǎng)絡(luò)、計(jì)算等其他因素造成的延遲,我們認(rèn)為在內(nèi)存上的100ns以內(nèi)的延遲,仍屬于可以接受的范圍。
在大內(nèi)存虛機(jī)測(cè)試場(chǎng)景中,我們?nèi)匀徊捎肙ptane擴(kuò)展內(nèi)存,實(shí)現(xiàn)342GB的內(nèi)存容量,但是更改了虛擬機(jī)的規(guī)格??紤]到目前出現(xiàn)了大量高內(nèi)存型虛機(jī)需求(計(jì)算內(nèi)存比1:8),測(cè)試依然采用新的大內(nèi)存型虛擬機(jī),規(guī)格為2核16GB。
每臺(tái)虛擬機(jī)內(nèi)部仍然通過stream內(nèi)存測(cè)試軟件,通過CPU對(duì)數(shù)據(jù)塊執(zhí)行add、copy、scale及triadd操作,得到內(nèi)存帶寬和延遲數(shù)據(jù)。通過設(shè)定參數(shù),虛機(jī)的活躍內(nèi)存仍為8GB,占比保持為50%。
在虛機(jī)數(shù)量上,我們選擇了18臺(tái)作為本場(chǎng)景中虛擬機(jī)數(shù)量。此時(shí)宿主機(jī)上處理器分配資源達(dá)到32線程,分配內(nèi)存值為288GB,活躍內(nèi)存值為144GB。
在測(cè)試過程中,18臺(tái)虛機(jī)根據(jù)時(shí)序,逐臺(tái)啟動(dòng)。以便獲得宿主機(jī)在不同負(fù)載的情況下,內(nèi)部虛擬機(jī)的內(nèi)存性能曲線,方便與對(duì)照?qǐng)鼍?、?biāo)準(zhǔn)測(cè)試場(chǎng)景做對(duì)比。
每個(gè)時(shí)序啟動(dòng)一臺(tái)vm,每個(gè)時(shí)序內(nèi),啟動(dòng)的每臺(tái)vm執(zhí)行1次stream內(nèi)存測(cè)試。
圖4 大負(fù)載場(chǎng)景單虛機(jī)內(nèi)存帶寬圖
帶寬:?jiǎn)蝪m時(shí)帶寬最大,可達(dá)到17GB/s(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步下降,18臺(tái)虛機(jī)啟動(dòng)時(shí),單vm平均帶寬9GB/s(triad操作),全部18臺(tái)vm總帶寬達(dá)到169GB/s(triad操作)。如圖6所示。
時(shí)延:?jiǎn)蝪m時(shí)時(shí)延最低,為5.72ns(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步增長(zhǎng),18臺(tái)虛機(jī)啟動(dòng)時(shí),單vm平均時(shí)延11.52ns(triad操作),全部18臺(tái)vm最大時(shí)延22.57ns(triad操作),如圖7所示。
圖5 大負(fù)載場(chǎng)景下單虛機(jī)內(nèi)存時(shí)延圖
測(cè)試結(jié)果顯示單虛擬機(jī)時(shí)帶寬最大,可達(dá)到17GB/s(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步下降,18臺(tái)虛機(jī)啟動(dòng)時(shí),單虛擬機(jī)平均帶寬9GB/s(triad操作),全部18臺(tái)虛擬機(jī)總帶寬達(dá)到169GB/s(triad操作)。在時(shí)延方面,單虛擬機(jī)時(shí)時(shí)延最低,為5.72ns(triad操作),隨啟動(dòng)虛機(jī)數(shù)量增長(zhǎng)逐步增長(zhǎng),18臺(tái)虛機(jī)啟動(dòng)時(shí),單虛擬機(jī)平均時(shí)延11.52ns(triad操作),全部18臺(tái)虛擬機(jī)最大時(shí)延22.57ns(triad操作)。
同大負(fù)載測(cè)試場(chǎng)景相比,活躍內(nèi)存值相當(dāng),分配內(nèi)存則接近擴(kuò)充后的總內(nèi)存極限,為全部場(chǎng)景中,對(duì)于宿主機(jī)壓力最大的一種場(chǎng)景。通過Optane擴(kuò)展內(nèi)存,實(shí)現(xiàn)了18臺(tái)大內(nèi)存型虛機(jī)在50%活躍內(nèi)存的場(chǎng)景下正常工作。其時(shí)延、帶寬性能也與大負(fù)載測(cè)試場(chǎng)景類似,這一結(jié)果無疑是令人鼓舞的。
圖6 大內(nèi)存場(chǎng)景單虛機(jī)內(nèi)存帶寬圖
圖7 大內(nèi)存場(chǎng)景單虛機(jī)內(nèi)存時(shí)延圖
在該場(chǎng)景中,首先移除Optane ,配置swap擴(kuò)展內(nèi)存。然后啟動(dòng)7臺(tái)vm,將宿主機(jī)上的內(nèi)存占用至112GB。之后嘗試啟動(dòng)vm8,使內(nèi)存占用達(dá)到128GB的極限,嘗試驗(yàn)證在使用swap的場(chǎng)景下,vm的IO狀況和應(yīng)用的健康情況。虛機(jī)的規(guī)格上采用了標(biāo)準(zhǔn)的4核16GB的配置。虛機(jī)內(nèi)同樣執(zhí)行stream測(cè)試腳本。
帶寬:前7臺(tái)虛機(jī)啟動(dòng)的時(shí)候,總帶寬達(dá)到138GB/s,單臺(tái)虛擬機(jī)帶寬達(dá)到19GB/s。vm8啟動(dòng)的時(shí)候,各虛擬機(jī)狀態(tài)出現(xiàn)不穩(wěn)定,無法得出正常數(shù)據(jù)。如圖8所示。
時(shí)延:7臺(tái)虛機(jī)啟動(dòng)的時(shí)候,平均延遲6.125ns。vm8啟動(dòng)的時(shí)候,各虛擬機(jī)狀態(tài)出現(xiàn)不穩(wěn)定,無法得到穩(wěn)定數(shù)據(jù),記錄最大延遲達(dá)到18.51ns,如圖9所示。
前7臺(tái)vm穩(wěn)定工作后,啟動(dòng)vm8后,全部虛機(jī)都出現(xiàn)不穩(wěn)定狀態(tài)。圖10顯示出虛機(jī)健康狀況隨測(cè)試變化情況。其中綠色代表虛機(jī)工作正常,淺綠色代表虛機(jī)進(jìn)入不穩(wěn)定狀態(tài),紅色代表虛機(jī)內(nèi)stream應(yīng)用崩潰??梢娫趘m8在時(shí)序1啟動(dòng)并執(zhí)行內(nèi)存測(cè)試腳本后,僅有3臺(tái)虛機(jī)仍正常工作,vm2程序崩潰,其余4臺(tái)vm進(jìn)入不穩(wěn)定狀態(tài)。之后更多虛機(jī)內(nèi)應(yīng)用崩潰,最終只有vm1仍保持正常。
實(shí)驗(yàn)顯示,在采用swap方式擴(kuò)展內(nèi)存的時(shí)候,在內(nèi)存活躍度達(dá)到50%的時(shí)候,就會(huì)造成應(yīng)用因內(nèi)存不足而崩潰。
Swap方式對(duì)照?qǐng)鼍暗臏y(cè)試結(jié)果,再次證明了在云計(jì)算業(yè)務(wù)下,如果只利用普通的memory commit技術(shù),配合swap方式擴(kuò)展內(nèi)存的實(shí)際風(fēng)險(xiǎn)。在負(fù)載壓力增加時(shí),將造成整體系統(tǒng)高度不穩(wěn)定,甚至虛機(jī)崩潰,不推薦在生產(chǎn)環(huán)境中商用。
CPU訪問內(nèi)存的總帶寬受限于CPU本身QPI總線和內(nèi)存總線帶寬的影響。NUMA架構(gòu)下,內(nèi)存分別直連各自的CPU核心。當(dāng)CPU訪問臨近的內(nèi)存數(shù)據(jù)時(shí),可以獲得較低的時(shí)延,而對(duì)于雙路服務(wù)器而言,仍有50%的幾率會(huì)訪問到另一顆CPU所連接的內(nèi)存,此時(shí)CPU對(duì)于內(nèi)存的訪問就需要經(jīng)過CPU之間的UPI總線(Purley之前服務(wù)器為QPI總線),從而造成內(nèi)存訪問時(shí)延加大。而對(duì)于四路服務(wù)器,這一高時(shí)延訪問的可能性增加至75%。因此,當(dāng)啟動(dòng)運(yùn)行的虛擬機(jī)數(shù)量足夠多的時(shí)候,全部虛擬機(jī)的內(nèi)存訪問總帶寬會(huì)逼近宿主機(jī)的物理極限,在各個(gè)測(cè)試場(chǎng)景下都可以看到這一現(xiàn)象。
圖8 Swap場(chǎng)景下單虛機(jī)內(nèi)存帶寬圖
圖9 Swap 場(chǎng)景單虛機(jī)內(nèi)存時(shí)延圖
圖10 Swap場(chǎng)景虛機(jī)健康圖
對(duì)于宿主機(jī)來說,虛擬機(jī)的內(nèi)存訪問都要受到宿主機(jī)內(nèi)存控制器的統(tǒng)一調(diào)度,而各個(gè)虛擬機(jī)對(duì)于宿主機(jī)而言是等價(jià)的,所以會(huì)出現(xiàn)不同的虛擬機(jī)所享有的內(nèi)存訪問帶寬、時(shí)延上的差異,即各個(gè)虛機(jī)之間存在內(nèi)存訪問資源搶占的問題。這一點(diǎn)在測(cè)試中也體現(xiàn)得很明顯。
IMDT在于其通過大量的測(cè)試數(shù)據(jù)結(jié)合機(jī)器學(xué)習(xí)算法,可以有效篩選真正的“熱數(shù)據(jù)”,并將熱數(shù)據(jù)保存至工作CPU/core直連的內(nèi)存中。通過數(shù)據(jù)“冷熱”分類,可以更高效地將數(shù)據(jù)分別存儲(chǔ)到DRAM和Optane內(nèi)。
IMDT同時(shí)協(xié)調(diào)CPU指令,將CPU對(duì)內(nèi)存的同步操作部分優(yōu)化至異步,減小內(nèi)存讀取時(shí)延對(duì)于CPU操作的影響。
最后IMDT通過自身的預(yù)取機(jī)制增加CPU訪問內(nèi)存的命中率,進(jìn)一步減少數(shù)據(jù)訪問時(shí)延。
IMDT的這些特性結(jié)合Optane P4800X自身在低IO隊(duì)列下的高IO性能,使得我們可以用Optane SSD擴(kuò)展DRAM器件,實(shí)現(xiàn)類似的內(nèi)存IO性能。在使用IMDT的場(chǎng)景下,內(nèi)存訪問時(shí)延存在一定的增長(zhǎng),其增長(zhǎng)在應(yīng)用系統(tǒng)可接受的范圍內(nèi),完全符合預(yù)期。
通過上述分析,可以看出并不是所有應(yīng)用程序和應(yīng)用場(chǎng)景都適合IMDT。IMDT適用于高并發(fā),存在熱點(diǎn)數(shù)據(jù)的場(chǎng)景。由于可以充分發(fā)揮系統(tǒng)預(yù)取的功能,IMDT的使用效果非常明顯。同時(shí),在部署中還建議DRAM和Optane容量比不超過1:8,從而避免過少DRAM造成存儲(chǔ)熱點(diǎn)數(shù)據(jù)不足的潛在問題。本文中的KVM虛擬化場(chǎng)景,不但滿足了更大內(nèi)存容量需求,也能保障吞吐和時(shí)延在合理的范圍內(nèi)。
本次測(cè)試項(xiàng)目中,我們成功地使用Optane為云服務(wù)場(chǎng)景中的宿主機(jī)擴(kuò)展了內(nèi)存,并且通過該服務(wù)器正常生成指定數(shù)量的虛擬機(jī),提供可行的云服務(wù)。通過在云服務(wù)場(chǎng)景內(nèi)引入Optane,并使用其內(nèi)存擴(kuò)展功能,解決了我們之前遇到的宿主機(jī)內(nèi)存不足的問題。并且相較于其他解決方案,體現(xiàn)出IO性能、可用性、價(jià)格上的優(yōu)勢(shì)。表1總結(jié)了本次測(cè)試的環(huán)境及主要結(jié)果。
表1 測(cè)試場(chǎng)景及主要結(jié)果
通過本次測(cè)試工作,用數(shù)據(jù)驗(yàn)證了Optane在11/18臺(tái)活躍虛擬機(jī)場(chǎng)景下的內(nèi)存性能特征,而這一虛機(jī)數(shù)量并非IMDT技術(shù)的極限。根據(jù)實(shí)際應(yīng)用的內(nèi)存性能需求,并通過優(yōu)化處理器及內(nèi)存比例后,虛擬化比例完全可以進(jìn)一步上升。
Swap測(cè)試場(chǎng)景的結(jié)果證明了該方式在云環(huán)境下的缺陷,而相較于真正的DRAM內(nèi)存,Optane的價(jià)格也有優(yōu)勢(shì)。目前市場(chǎng)上Optane系列內(nèi)存的價(jià)格在$4/GB,是DRAM內(nèi)存價(jià)格(179$/16GB[9])的36%。在使用Optane擴(kuò)展內(nèi)存的時(shí)候,建議按照不超過1:2的比例配置,即1GB的DIM內(nèi)存,輔以2GB的Optane。目前Optane系列產(chǎn)品規(guī)格為375G,即我們可以通過配置192GB的DIM內(nèi)存,加上1塊375GB的Optane卡,達(dá)到512GB內(nèi)存的需求,其價(jià)格為傳統(tǒng)的64%,單臺(tái)服務(wù)器節(jié)約$2060。
新技術(shù)的涌現(xiàn),總能為應(yīng)用找到新的模式、場(chǎng)景和機(jī)遇。在本次測(cè)試和研究的開展過程中,英特爾又發(fā)布了最新一代的至強(qiáng)可擴(kuò)展處理器,能使單臺(tái)物理服務(wù)器更容易支持,整合更多數(shù)量的虛擬機(jī)(據(jù)英特爾的測(cè)試,它支持的虛擬機(jī)數(shù)量可比上一代產(chǎn)品提升20%),而且還可借助VMD(Volume Management Device)和VROC(Virtual RAID on Chip)技術(shù),更為靈活地部署、更加便利地管理Optane,并有望更充分地釋放其3D XPoint技術(shù)的性能潛力,而這或許也意味著虛擬機(jī)的內(nèi)存擴(kuò)展,將會(huì)迎來更大的彈性和更高的極限。
基于這樣的考慮,我們準(zhǔn)備在接下來的工作中,在配備至強(qiáng)可擴(kuò)展處理器的服務(wù)器平臺(tái)上,通過Optane做更多的應(yīng)用層的驗(yàn)證,如驗(yàn)證在沃云平臺(tái)虛擬化環(huán)境中,Optane作為Swap盤的性能特性研究、以及作為內(nèi)存數(shù)據(jù)庫(kù)應(yīng)用的性能特性研究等。希望這些嘗試,能將新的科技迅速轉(zhuǎn)化為新的應(yīng)用和收獲。
[1]Redhat.Virtualization getting started guide[EB/OL].[2018-01-16].https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index
[2]Redhat.Virtualization deployment and administration guide[EB/OL].[2018-01-16].https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/index
[3]Redhat.Virtualization tuning and optimization guide[EB/OL].[2018-01-16].https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/index
[4]Intel.Intel? Optane? SSD DC P4800X Series Products[EB/OL].[2018-01-16].https://www.intel.com/content/www/us/en/products/memory-storage/solid-statedrives/data-center-ssds/optane-dc-p4800x-series.html
[5]Intel.Experience Transformative Technology[EB/OL].[2018-01-16].https://www.intel.com/content/www/us/en/architecture-and-technology/intel-optane-technology.html
[6]Inetl.Intel? Memory Drive Technology -- Enabling more affordable or bigger memory solutions for data centers[EB/OL].[2018-01-16].https://www.intel.com/content/www/us/en/software/intel-memory-drivetechnology.html
[7]LMbench-Tools for Performance Analysis[EB/OL].[2018-01-16].http://www.bitmover.com/lmbench/
[8]John D McCalpin.STREAM: Sustainable Memory Bandwidth in High Performance Computers[EB/OL].[2018-01-16].http://www.cs.virginia.edu/stream/
[9]成本測(cè)算參考價(jià)格[EB/OL].[2018-01-16].http://memory.it168.com/a2017/0321/3105/000003105503.shtml及https://memory.net/memory-prices/