眾所周知,內(nèi)存與存儲之間存在巨大的性能鴻溝,兩者的性能幾乎有數(shù)百萬倍的差距。
但在強調(diào)用戶體驗的互聯(lián)網(wǎng)行業(yè),每一秒的延遲可能都會導(dǎo)致用戶流失,為了提升數(shù)據(jù)訪問性能,是否可以將數(shù)據(jù)庫放置到內(nèi)存當(dāng)中?這就是內(nèi)存數(shù)據(jù)庫redis誕生的背景,redis在一定程度上緩解了性能需求,提升了用戶體驗。
但是另外一個問題隨之誕生。
目前主流的服務(wù)器內(nèi)存基本都是dram,縱觀數(shù)十年來的dram發(fā)展情況,再結(jié)合未來發(fā)展趨勢,比如dram的頻率從十年前ddr3的1033mhz,到現(xiàn)在的ddr4的3200mhz以及未來的ddr5,性能確實越來越高。但是容量呢?
dram內(nèi)存的單位容量幾乎沒有太大的起伏,盡管服務(wù)器內(nèi)部使用時的ddr內(nèi)存從主流的16gb過渡到32gb,但單條ddr內(nèi)存的容量始終保持在最大128gb,多少年來,幾乎沒有變化。
當(dāng)然,服務(wù)器隨著處理器的更新?lián)Q代而不停地更新,單顆處理器可支持的內(nèi)存通道數(shù)量從原來的4通道發(fā)展到現(xiàn)在的6通道、8通道,在一定程度上增加了可部署的內(nèi)存容量。但這依然“治標(biāo)不治本”,一則服務(wù)器的物理尺寸是業(yè)內(nèi)標(biāo)準的,很難變動,這意味著物理空間受限,很難設(shè)計更多的內(nèi)存插槽;二則內(nèi)存的單位成本雖然根據(jù)市場波動略有起伏,但總體變化不大,容量越大的內(nèi)存也意味著成倍的成本增加。
這個看似無解的問題,隨著inteloptane中文名:傲騰)系列產(chǎn)品的發(fā)布而出現(xiàn)了曙光。inteloptane用全新的3dxpoint材質(zhì),有類似相變存儲的特性。其主要意義可以用兩點來概括:高性能與非易失性。
intel率先推出了傲騰ssd,與傳統(tǒng)的nandssd相比,其擁有均衡的讀寫性能,而延遲則低一個數(shù)量級,讓市場領(lǐng)略到了傲騰的高性能。但ssd通常使用pcie通道,pcie技術(shù)的性能并不足以完全發(fā)揮出optane的性能優(yōu)勢。因此,intel又推出了optanepresistentmemory(傲騰持久內(nèi)存,簡稱pmem)。
傲騰持久內(nèi)存是一個全新的產(chǎn)品,其填補了內(nèi)存與主存儲之間的性能鴻溝。
傲騰持久內(nèi)存所帶來的現(xiàn)實意義,其延遲在納秒級別,遠遠小于nandssd的微秒級別延遲,可以為應(yīng)用增加一個新的存儲層,極大地提升應(yīng)用響應(yīng)速度
相比于cpu訪問內(nèi)存的延遲,訪問傲騰持久內(nèi)存的延遲肯定要高出很多。但傲騰持久內(nèi)存的意義在于,其容量非常大,比如第一代傲騰持久內(nèi)存pmem100的最小容量為128gb,后又陸續(xù)發(fā)布750gb與1.5tb的產(chǎn)品,單條傲騰持久內(nèi)存的容量遠超傳統(tǒng)dram內(nèi)存。
而且傲騰持久內(nèi)存的意義還在于,具備非易失性存儲特性,這是dram內(nèi)存所沒有的,這意味著即使在掉電的情況下,傲騰持久內(nèi)存依舊擁有保存數(shù)據(jù)的能力。
正因為傲騰持久內(nèi)存同時具有dram的高性能和nandssd的非易失性存儲特性,使得其使用也非常靈活,既可以作為dram內(nèi)存的補充,增大系統(tǒng)內(nèi)存容量(內(nèi)存模式);又可以作為直接數(shù)據(jù)存儲(應(yīng)用直連模式);還可以一部分用作內(nèi)存,一部分用作數(shù)據(jù)持久存儲(混合模式)。
傲騰持久內(nèi)存擁有dram的特性,使得其可以作為傳統(tǒng)dram內(nèi)存的補充,極大地增大應(yīng)用或系統(tǒng)可用的內(nèi)存空間,且無需應(yīng)用任何改動。這天然就是內(nèi)存數(shù)據(jù)庫的最佳載體。比如在saphana解決方案中,就已經(jīng)認證使用了傲騰持久內(nèi)存產(chǎn)品。
而現(xiàn)在,新浪也考慮使用傲騰持久內(nèi)存來承載其redis數(shù)據(jù)庫,為用戶帶來更快、更好的訪問體驗。為了驗證傲騰持久內(nèi)存替代傳統(tǒng)內(nèi)存能否真的能夠滿足線上業(yè)務(wù)的需求,新浪在使用傲騰持久內(nèi)存之前,部署了一套貼近真實應(yīng)用環(huán)境的redis內(nèi)存數(shù)據(jù)庫環(huán)境,使用傲騰持久內(nèi)存作為內(nèi)存(內(nèi)存模式),利用memtier_benchmark工具對redis實例進行壓力測試,評估傲騰持久內(nèi)存在redis數(shù)據(jù)庫環(huán)境下的性能表現(xiàn)。
新浪用于部署redis數(shù)據(jù)庫環(huán)境的硬件平臺。采用近乎相似的硬件,圖左使用傲騰持久內(nèi)存來增大系統(tǒng)內(nèi)存容量,圖右的硬件平臺則采用傳統(tǒng)的dram方案
測試中所使用的memtier_benchmark軟件是redislabs推出的一款命令行工具,它能夠產(chǎn)生各種各樣的流量模式,可以對memcached和redis內(nèi)存數(shù)據(jù)庫實例進行基準性能測試,其測試結(jié)果已經(jīng)成為業(yè)內(nèi)內(nèi)存數(shù)據(jù)庫性能評估的事實標(biāo)準。
在測試場景一中,根據(jù)實際業(yè)務(wù)需求對memtier_benchmark的測試流進行調(diào)節(jié),模擬數(shù)據(jù)塊大小為512kb尺寸的混合讀寫場景,讀寫比例為1:2,分別測試傲騰持久內(nèi)存和dram內(nèi)存的讀寫性能以及平均響應(yīng)延遲。
需要注意的是,在測試中選用了512kb這一尺寸較大的數(shù)據(jù)塊,其原因在于,當(dāng)傲騰持久內(nèi)存添加到服務(wù)器系統(tǒng)中,并使用內(nèi)存模式時,原來的dram內(nèi)存將作為傲騰持久內(nèi)存的緩存,當(dāng)較小的數(shù)據(jù)塊訪問,cpu可能實際訪問的就是dram內(nèi)存,其性能和延遲與使用dram內(nèi)存時幾乎沒有區(qū)別。因此在測試時選用了更大尺寸的測試數(shù)據(jù)塊,以評估傲騰持久內(nèi)存和傳統(tǒng)dram內(nèi)存的性能差異。
上圖即為傲騰持久內(nèi)存(aep)和傳統(tǒng)dram內(nèi)存(ram)的redis性能對比圖,從圖中可以看到,即使是在512kb較大尺寸的數(shù)據(jù)塊混合讀寫時,盡管dram的性能更高,但差距并不明顯。而且隨著壓力測試時間的不斷持續(xù),傲騰持久內(nèi)存與dram內(nèi)存之間的性能差距有變小的趨勢,這說明傲騰持久內(nèi)存完全有能力替代傳統(tǒng)dram內(nèi)存。
傲騰持久內(nèi)存與傳統(tǒng)dram內(nèi)存在redis數(shù)據(jù)庫測試中的平均延遲曲線圖??梢钥吹?,盡管傲騰持久內(nèi)存的延遲略高,但并不明顯,僅有大約5%的差距,這說明傲騰持久內(nèi)存擁有良好的性能穩(wěn)定性,可以作為傳統(tǒng)dram內(nèi)存的補充。
在實際應(yīng)用環(huán)境中,io數(shù)據(jù)塊的尺寸是不同的,通常有多種不同大小的數(shù)據(jù)塊并發(fā)訪問。因此,根據(jù)這一實際情況,在接下來的測試中采用了兩種尺寸的數(shù)據(jù)塊,分別為4kb和512kb,兩種尺寸的數(shù)據(jù)塊同時對redis數(shù)據(jù)塊進行并發(fā)讀寫測試,并按不同混合比例(20%、40%、50%、60%與75%)下的性能進行統(tǒng)計,并對比。
從上圖可以看出,在不同混合比例的大小數(shù)據(jù)塊壓力測試中,盡管傲騰持久內(nèi)存的平均延遲稍高,但幾乎與傳統(tǒng)dram內(nèi)存沒有明顯差異。
同時,測試還對由多個redis內(nèi)存數(shù)據(jù)庫組成的集群進行了壓力測試,結(jié)果如下:
傲騰持久內(nèi)存的性能表現(xiàn)盡管會稍低傳統(tǒng)dram內(nèi)存,但差異并不明顯。這意味著兩者的性能很接近,在應(yīng)用層面并不會造成明顯的差異,進而導(dǎo)致不良的用戶體驗。這也意味著傲騰持久內(nèi)存完全能夠替代傳統(tǒng)dram內(nèi)存。
而相比于容量發(fā)展幾乎穩(wěn)定的dram內(nèi)存而言,傲騰持久內(nèi)存即將推出第二代pmem200系列產(chǎn)品,相比第一代傲騰持久內(nèi)存,其單條性能增加至少25%,同時在新一代intel處理器中,將支持8通道內(nèi)存,這意味著在單臺服務(wù)器中可使用的傲騰持久內(nèi)存數(shù)量進一步增加,據(jù)估計,單機性能將有50%的性能增長。
除了性能之外,傲騰持久內(nèi)存的容量也將進一步增長,其擁有類似nandssd的容量發(fā)展路線。這意味著傲騰持久內(nèi)存不僅容量增長,性能也會隨之增長。替代傳統(tǒng)dram內(nèi)存大有可為。