英特爾® 傲騰? 持久內(nèi)存是Intel在2019年發(fā)布的一款革命性的產(chǎn)品,英特爾® 傲騰? 持久內(nèi)存是一種全新的內(nèi)存類型,其架構(gòu)設(shè)計(jì)旨在從數(shù)據(jù)中心中汲取更多價(jià)值,重構(gòu)數(shù)據(jù)中心內(nèi)存/存儲(chǔ)層次結(jié)構(gòu)。不同于傳統(tǒng)的DRAM,英特爾® 傲騰? 持久內(nèi)存集大容量、經(jīng)濟(jì)性和持久性于一身,能夠支持?jǐn)?shù)據(jù)中心多個(gè)應(yīng)用場景。浪潮基于英特爾® 傲騰? 持久內(nèi)存做了大量的應(yīng)用場景解決方案,覆蓋大數(shù)據(jù)分析、數(shù)據(jù)庫、云與虛擬化、分布式存儲(chǔ)等應(yīng)用場景。為了幫助用戶通過更加靈活的架構(gòu)來實(shí)現(xiàn)創(chuàng)新型的應(yīng)用,助力企業(yè)實(shí)現(xiàn)性能突破,浪潮發(fā)布了基于英特爾® 傲騰? 持久內(nèi)存技術(shù)的Memcached應(yīng)用方案。
Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric為首開發(fā)的一款軟件。它是一個(gè)內(nèi)存key/value存儲(chǔ),用于存儲(chǔ)來自數(shù)據(jù)庫調(diào)用、API調(diào)用或頁面渲染的任意小數(shù)據(jù)塊(字符串,對象)。Memcached簡單但功能強(qiáng)大。 其簡單的設(shè)計(jì)可促進(jìn)快速部署,易于開發(fā),并解決了大型數(shù)據(jù)緩存面臨的許多問題。 它的API適用于大多數(shù)流行語言。現(xiàn)在已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴(kuò)展性的重要因素。為了幫助企業(yè)化解因?yàn)閿?shù)據(jù)快速增長所出現(xiàn)的 Memcached性能和容量瓶頸,浪潮進(jìn)行了基于英特爾® 傲騰技術(shù)的 Memcached性能優(yōu)化實(shí)踐,通過將英特爾® 傲騰?持久內(nèi)存作為Memcached緩存,相比于傳統(tǒng)的 DRAM 內(nèi)存方案,在保證了高性能的前提下,大幅增大了數(shù)據(jù)容量,實(shí)現(xiàn)了更高的成本效益。
Memcached是一種依靠DRAM來滿足其性能保證的key/value高速緩存服務(wù)。雖然被廣泛應(yīng)用,但是性能很大程度上受限于DRAM容量。 對于TB級數(shù)據(jù)集,數(shù)據(jù)不能全部被DRAM緩存而產(chǎn)生數(shù)據(jù)驅(qū)逐,從而引起高I/O延遲,導(dǎo)致性能下降,同時(shí)由于緩存有限,Memcached會(huì)出現(xiàn)性能不穩(wěn)定的情況。
由于Memcached應(yīng)對的是超大規(guī)模數(shù)據(jù)集的存儲(chǔ)需求,因此數(shù)據(jù)吞吐性能的重要性不言而喻。要提升 Memcached數(shù)據(jù)吞吐性能,可以從優(yōu)化內(nèi)存規(guī)劃、參數(shù)調(diào)優(yōu)等多個(gè)方面進(jìn)行。但是,要想在控制總體擁有成本(TCO)的前提下,對Memcached集群內(nèi)存進(jìn)行最優(yōu)規(guī)劃并不是一件容易的事情。首先,Memcached集群需要的內(nèi)存容量是海量且不斷擴(kuò)展的,而每一個(gè)存儲(chǔ)節(jié)點(diǎn)的內(nèi)存插槽數(shù)量、支持內(nèi)存容量等條件卻極大限制了其擴(kuò)展性,在內(nèi)存容量增長到一定程度后就會(huì)出現(xiàn)瓶頸。如果要進(jìn)一步對于內(nèi)存容量進(jìn)行擴(kuò)展,企業(yè)在傳統(tǒng)上一般會(huì)采取兩種方法,第一種是使用大容量的單條內(nèi)存,第二種方法是擴(kuò)展 Memcached存儲(chǔ)節(jié)點(diǎn)。
但是,這兩種方法都不具備良好的成本效益。對于前者來說,雖然很多 Memcached存儲(chǔ)節(jié)點(diǎn)支持的單條內(nèi)存容量理論上限是128GB,但是這種大容量的內(nèi)存普遍處于驗(yàn)證階段,可獲得性不足,而且價(jià)格的提升遠(yuǎn)高于其容量的提升,會(huì)帶來很高的成本壓力;對于后者來說,擴(kuò)展 Memcached節(jié)點(diǎn)固然能夠提升內(nèi)存池的容量,但是這些存儲(chǔ)節(jié)點(diǎn)的采購、空間占用、運(yùn)維、供電無疑也會(huì)顯著抬升成本。
因此,如何打破現(xiàn)有存儲(chǔ)架構(gòu)的限制,尋找一種創(chuàng)新的線上 Memcached集群內(nèi)存擴(kuò)容方法,在顯著提升 Memcached性能的同時(shí)有效控制成本,也就顯得至關(guān)重要。
利用英特爾® 傲騰? 持久內(nèi)存技術(shù)優(yōu)化內(nèi)存結(jié)構(gòu)
為了解決此問題,浪潮工程師團(tuán)隊(duì)對于 Memcached內(nèi)存結(jié)構(gòu)進(jìn)行了分析。為了減輕內(nèi)存資源的壓力,持久性內(nèi)存(PM)被稱為存儲(chǔ)類內(nèi)存(SCM)在業(yè)界出現(xiàn),非易失性存儲(chǔ)器模塊和持久性存儲(chǔ)器有望成為數(shù)據(jù)中心計(jì)算的下一個(gè)重要事物。 憑借高存儲(chǔ)密度和類似DRAM的性能,全新的算法和系統(tǒng)架構(gòu)是可能的。 這對于Memcached非常重要。它不僅可以為 Memcached提供大容量緩存,擺脫單節(jié)點(diǎn)內(nèi)存大小的限制,同時(shí)還能有效降低成本。
要將存儲(chǔ)介質(zhì)從內(nèi)存更換為高性能固態(tài)盤,一個(gè)重要的條件就是固態(tài)盤在IOPS、時(shí)延方面與內(nèi)存不能有太大的差距。在方案驗(yàn)證的過程中浪潮發(fā)現(xiàn),英特爾® 傲騰? 持久內(nèi)存位于內(nèi)存和存儲(chǔ)介質(zhì)之間(如圖1),能夠填補(bǔ)兩者間的性能和時(shí)延差距,對存儲(chǔ)層次模型進(jìn)行重新劃分和定義。因此,浪潮決定使用英特爾® 傲騰? 持久內(nèi)存作為 Memcached的緩存,并進(jìn)行性能、成本等方面的驗(yàn)證。
圖1
英特爾® 傲騰? 持久內(nèi)存是一種全新的內(nèi)存類型,不同于傳統(tǒng)的DRAM,其集大容量、經(jīng)濟(jì)性和持久性于一身,讀寫帶寬比NVME設(shè)備高數(shù)倍,并大幅降低延時(shí)問題。由于寫入方式不同,英特爾® 傲騰? 持久內(nèi)存也比Flash NAND更耐用,并通過高達(dá)512GB的單模塊容量,實(shí)現(xiàn)了遠(yuǎn)超傳統(tǒng) DRAM 的系統(tǒng)內(nèi)存容量。其從根本上改變了數(shù)據(jù)中心的彈性,將內(nèi)存數(shù)據(jù)庫重啟時(shí)間從以前的幾天、幾小時(shí)縮短到現(xiàn)在的幾分鐘甚至幾秒鐘,并提供經(jīng)濟(jì)實(shí)惠的內(nèi)存空間,將系統(tǒng)內(nèi)存容量擴(kuò)展到前所未有的水平。
英特爾® 傲騰? 持久內(nèi)存擁有兩種特殊的運(yùn)行模式——App Direct 模式和內(nèi)存模式。具體來看,采用App Direct 模式,經(jīng)過專門調(diào)試的應(yīng)用程序可以從產(chǎn)品固有的持久性中充分獲取價(jià)值,同時(shí)獲得更大的容量;在內(nèi)存模式下,在受支持的操作系統(tǒng)或虛擬環(huán)境中運(yùn)行的應(yīng)用程序可將該產(chǎn)品用于易失性存儲(chǔ),在無需重寫軟件的情況下,有效利用高達(dá)512GB的內(nèi)存模塊帶來的附加系統(tǒng)容量,在大型內(nèi)存池中獲得新的洞察。
在實(shí)際的方案部署中,浪潮使用了英特爾® 至強(qiáng)® 第二代可擴(kuò)展處理器與英特爾® 傲騰? 持久內(nèi)存組成強(qiáng)強(qiáng)組合,代替Memcached中DRAM緩存(如圖2),改善 Memcached集群內(nèi)存規(guī)劃,以支撐數(shù)據(jù)庫、內(nèi)存分析和內(nèi)容分發(fā)網(wǎng)絡(luò)等關(guān)鍵數(shù)據(jù)工作負(fù)載,加速動(dòng)態(tài)Web應(yīng)用程序等。
圖2
方案驗(yàn)證:英特爾® 傲騰? 持久內(nèi)存性能優(yōu)勢顯著
為了測試英特爾® 傲騰? 持久內(nèi)存作為Memcached緩存的性能,浪潮決定分別測試基于英特爾® 傲騰? 持久內(nèi)存/ DRAM 內(nèi)存兩種配置下的性能對比。
在實(shí)際測試中,浪潮將英特爾® 傲騰? 持久內(nèi)存設(shè)置為 App Direct運(yùn)行模式,并依據(jù)以下硬件配置來搭建了測試方案(如表1)。在至關(guān)重要的存儲(chǔ)方面,英特爾® 傲騰? 持久內(nèi)存方案中每個(gè)數(shù)據(jù)節(jié)點(diǎn)使用192(12*16GB)的DRAM,并使用1.5TB(12*128GB)的英特爾® 傲騰? 持久內(nèi)存作為Memcached的緩存設(shè)備;DRAM方案中使用768GB(24*32GB)內(nèi)存作為Memcached的緩存設(shè)備。
表1
本次實(shí)驗(yàn)進(jìn)行了多種讀寫比例測試,從測試結(jié)果可以看出(吞吐量結(jié)果如圖3、平均延時(shí)結(jié)果如圖4),英特爾® 傲騰? 持久內(nèi)存方案可以容納遠(yuǎn)超于DRAM方案的數(shù)據(jù)容量,同時(shí)性能表現(xiàn)相當(dāng)出色。在吞吐量方面兩種方案性能相當(dāng),個(gè)別場景英特爾® 傲騰? 持久內(nèi)存方案甚至優(yōu)于DRAM方案。在平均延時(shí)方面,兩種方案都能保持在1ms之內(nèi),而且英特爾® 傲騰? 持久內(nèi)存方案延時(shí)明顯優(yōu)于DRAM方案。
圖3
圖4
效果:大幅改善Memcached性能與成本表現(xiàn)
從測試結(jié)果可以看出,通過將Memcached的緩存由傳統(tǒng)的 DRAM 內(nèi)存替換為英特爾® 傲騰? 持久內(nèi)存,可以在保證DRAM方案性能,甚至優(yōu)于DRAM方案性能的情況下,成倍提升數(shù)據(jù)容量。之所以會(huì)有如此顯著的提升效果,很大程度上是因?yàn)橛⑻貭?reg; 傲騰? 持久內(nèi)存支持的總?cè)萘窟h(yuǎn)高于DRAM內(nèi)存,能夠緩存Memcached所有的工作集,而沒有緩存驅(qū)逐。尤為重要的是,英特爾® 傲騰? 持久內(nèi)存方案比DRAM方案數(shù)據(jù)容量可以增加接近1倍,換言之,如果企業(yè)在需要保證性能的情況下想增大數(shù)據(jù)容量,那么使用英特爾® 傲騰? 持久內(nèi)存將帶來極大的成本節(jié)約,降低TCO。