999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于微日志的持久性事務(wù)內(nèi)存系統(tǒng)

2018-09-21 03:26:14胡慶達(dá)陳游旻陸游游舒繼武楊曉輝
計算機研究與發(fā)展 2018年9期
關(guān)鍵詞:一致性分配優(yōu)化

陳 娟 胡慶達(dá) 陳游旻 陸游游 舒繼武 楊曉輝

1(東南大學(xué)信息科學(xué)與工程學(xué)院 南京 210093) 2 (清華大學(xué)計算機科學(xué)與技術(shù)系 北京 100084) (chenmj09@163.com)

近年來,新型非易失性存儲器(non volatile memory, NVM)吸引了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注.典型的非易失存儲器包括PCM[1-2],STTRAM[3-4],ReRAM[5]和3D XPoint[6],其不僅具有接近傳統(tǒng)內(nèi)存材料隨機訪問存儲器(dynamic random access memory,DRAM)的隨機訪問性能,而且在內(nèi)存層次提供了數(shù)據(jù)持久性的保證.因此,基于NVM的持久性內(nèi)存打破了傳統(tǒng)易失性內(nèi)存和持久性外存之間的界限,為設(shè)計更加高效的存儲系統(tǒng)提供了新的機遇.

雖然持久性內(nèi)存保證了數(shù)據(jù)的持久性,然而,CPU緩存依然是易失性的,并且會打亂數(shù)據(jù)寫回到持久性內(nèi)存的順序,這導(dǎo)致持久性內(nèi)存上的數(shù)據(jù)在系統(tǒng)突然崩潰時可能處于不一致的中間狀態(tài).為解決此問題和充分發(fā)揮出持久性內(nèi)存良好的性能優(yōu)勢,研究者們提出了持久性事務(wù)內(nèi)存系統(tǒng).這些系統(tǒng)通過日志機制保證事務(wù)的原子性和一致性.其中,Mnemosyne[7]和NVML[8]分別是基于redo log和undo log日志機制的代表性事務(wù)內(nèi)存系統(tǒng).在更新原數(shù)據(jù)前,系統(tǒng)分別先將新/舊數(shù)據(jù)持久化到日志中,從而在系統(tǒng)崩潰時根據(jù)日志中存在的數(shù)據(jù)副本將其恢復(fù)到一致性的狀態(tài).這些事務(wù)系統(tǒng)不僅為應(yīng)用程序訪問持久性內(nèi)存提供數(shù)據(jù)一致性的保證,而且可以通過用戶態(tài)接口直接訪問持久性內(nèi)存上的數(shù)據(jù),降低持久化操作的軟件延遲.

雖然持久性內(nèi)存具有集成度高、靜態(tài)能耗低和數(shù)據(jù)持久性等優(yōu)勢,但其也存在一定的局限性.首先,持久性內(nèi)存往往具有讀寫不對稱性,寫延遲遠(yuǎn)高于讀延遲.例如PCM的讀延遲與DRAM相似,而寫延遲幾乎是DRAM的10倍[3].此外,持久性內(nèi)存還具有耐久性的問題.例如PCM只能承受住106~108次寫操作[9-10],STT-RAM雖然在理論上具有較高的耐久性,但在實際測試中發(fā)現(xiàn),其最多也只能承受1012次寫操作,無法達(dá)到理論中的期望值[9,11].因此,如何減少對持久性內(nèi)存的寫操作,從而減輕寫操作帶來的延遲和磨損是持久性事務(wù)內(nèi)存系統(tǒng)中亟待解決的重要問題.

然而,本文發(fā)現(xiàn)現(xiàn)有持久性事務(wù)內(nèi)存系統(tǒng)的日志機制帶來了過多的寫操作,主要有2個方面原因:

1) 現(xiàn)有系統(tǒng)沒有區(qū)分事務(wù)中不同類型的寫操作,即無論是對內(nèi)存中已有數(shù)據(jù)的更新操作還是向事務(wù)中新分配區(qū)域添加數(shù)據(jù)的寫操作(本文稱之為分配操作),現(xiàn)有系統(tǒng)都利用相同的日志機制保證數(shù)據(jù)的一致性.然而日志操作不僅加快持久性內(nèi)存設(shè)備的磨損速度,而且還需要使用CLFLUSH等指令對緩存中的數(shù)據(jù)進(jìn)行強制刷新,增加事務(wù)的延遲[12],造成系統(tǒng)性能的下降.

本文發(fā)現(xiàn)redo log和undo log這2種日志機制都只是用于保證被更新的舊數(shù)據(jù)在系統(tǒng)崩潰時存在一個可恢復(fù)的數(shù)據(jù)副本.對于第1次寫入的新數(shù)據(jù),不需要依賴日志機制來保證數(shù)據(jù)的一致性,因此這部分日志開銷可以被消除.

2) 現(xiàn)有系統(tǒng)使用相同的數(shù)據(jù)類型(通常是64 b整型)將更新操作的地址和數(shù)據(jù)等字段完整地持久化到日志中,即使這些字段存儲的數(shù)據(jù)通常可以用更小的內(nèi)存空間存儲.這會產(chǎn)生大量的日志寫操作,嚴(yán)重加快持久性內(nèi)存設(shè)備的磨損速度.

本文發(fā)現(xiàn)日志操作中大部分?jǐn)?shù)據(jù)可以通過壓縮算法減少寫入的日志數(shù)據(jù)總量.這種優(yōu)化策略不僅可以保留原有數(shù)據(jù)的副本,而且能夠減小對持久性內(nèi)存的寫磨損.此外,因為除了系統(tǒng)崩潰后的恢復(fù)過程,系統(tǒng)不會再次訪問已經(jīng)寫入的日志數(shù)據(jù),所以壓縮操作對事務(wù)性能的影響可處在一個可控的范圍之內(nèi).

針對上述2個方面的問題,本文分別提出分配操作感知的日志優(yōu)化策略(allocation-aware log optimization, AALO)和基于壓縮算法的日志優(yōu)化策略(compression-based log optimization, CBLO).AALO動態(tài)識別出事務(wù)中不同類型的寫操作,并分別使用不同的日志機制保證所有寫操作的一致性,避免分配操作產(chǎn)生的日志開銷;CBLO在將新數(shù)據(jù)寫入日志時,利用zigzag壓縮算法[13]對日志數(shù)據(jù)進(jìn)行壓縮,進(jìn)一步減少日志操作的寫開銷.

本文結(jié)合上述2種優(yōu)化策略,設(shè)計并實現(xiàn)基于微日志的持久性事務(wù)內(nèi)存(a tiny-log based persistent transactional memory, TLPTM)系統(tǒng).測試結(jié)果表明:相比于Mnemosyne,TLPTM系統(tǒng)具有更高的耐久度,其將日志的數(shù)據(jù)總量降低70%~81%,從而更好地提升持久性內(nèi)存系統(tǒng)的耐久性.

1 相關(guān)工作

為保證系統(tǒng)發(fā)生故障后能夠恢復(fù)到一致性的狀態(tài),現(xiàn)有的持久性事務(wù)內(nèi)存系統(tǒng)通常采用基于redo log或者undo log的日志機制.例如Mnemosyne[7]和BPPM[14-15]是基于redo log的持久性事務(wù)內(nèi)存系統(tǒng),而NV-heap[16],NVML[8]和DCT[17]是基于undo log的持久性事務(wù)內(nèi)存系統(tǒng).Wan等人在文獻(xiàn)[18]中對undo log和redo log兩種日志機制在持久性事務(wù)內(nèi)存系統(tǒng)中的使用作了深入研究.這2種日志機制的主要區(qū)別在于:在將新數(shù)據(jù)寫入持久性內(nèi)存中的數(shù)據(jù)區(qū)之前,redo log先將新數(shù)據(jù)持久化到日志中,而undo log先將內(nèi)存中的原數(shù)據(jù)持久化到日志中.當(dāng)系統(tǒng)突然崩潰時,對于那些已經(jīng)成功提交但未寫入到數(shù)據(jù)區(qū)的事務(wù),基于redo log的事務(wù)系統(tǒng)使用日志區(qū)中的數(shù)據(jù)重做已經(jīng)提交的事務(wù),而基于undo log的事務(wù)系統(tǒng)使用日志區(qū)中的數(shù)據(jù)執(zhí)行回滾操作.無論是redo log還是undo log,兩者都是為了在系統(tǒng)突然崩潰時,事務(wù)系統(tǒng)可以找到一個正確的數(shù)據(jù)版本,將數(shù)據(jù)恢復(fù)到一致性的狀態(tài).本節(jié)具體介紹近年來具有代表性的持久性事務(wù)內(nèi)存系統(tǒng).

NVML[8]是Intel公司開發(fā)的基于undo log的持久性事務(wù)內(nèi)存系統(tǒng).對于事務(wù)中每一個寫操作,NVML將對應(yīng)的舊數(shù)據(jù)持久化到日志中,然后再去修改原數(shù)據(jù).然而,持久性內(nèi)存會將編程上的錯誤(例如內(nèi)存泄露或者訪問野指針等)永久性地保存下來,即使在系統(tǒng)重啟后依然可能導(dǎo)致系統(tǒng)崩潰.Coburn等人設(shè)計了NV-heaps[16],提出了一套靈活健壯的編程模型,以幫助程序員減少編程過程中可能引入的錯誤.

在基于undo log的事務(wù)系統(tǒng)中,每一次寫操作需要先將舊數(shù)據(jù)持久化到日志中,然后才能修改原數(shù)據(jù)區(qū),這將導(dǎo)致頻繁的CLFLUSH操作,帶來過高的持久化延遲.Kolli等人設(shè)計了DCT[17],該設(shè)計通過硬件的方式減少持久化操作之間的順序依賴關(guān)系,從而充分發(fā)揮存儲系統(tǒng)的并發(fā)處理能力,減少持久化延遲對系統(tǒng)性能的影響.但是,DCT系統(tǒng)不可避免地引入了額外的硬件開銷.

基于redo log的事務(wù)系統(tǒng)在事務(wù)提交時才將數(shù)據(jù)持久化到日志中,從而有效地減少了事務(wù)的持久化操作,并且不需要額外的硬件開銷.Mnemosyne[7]是基于TinySTM[19]系統(tǒng)開發(fā)的基于redo log的持久性事務(wù)內(nèi)存系統(tǒng),其主要事務(wù)流程如圖1所示.Mnemosyne在事務(wù)執(zhí)行過程中將所有更新數(shù)據(jù)緩存在易失性的寫集合中.當(dāng)事務(wù)提交時,系統(tǒng)首先將寫集合中所有數(shù)據(jù)持久化到日志中,然后再將這些數(shù)據(jù)持久化到原數(shù)據(jù)區(qū).

Fig.1 The transaction mechanism process of Mnemosyne圖1 Mnemosyne的事務(wù)機制

Lu等人提出了BPPM[14-15],BPPM在完成日志操作后不需要將數(shù)據(jù)立即持久化到原數(shù)據(jù)區(qū),只有當(dāng)日志空間不足時才將數(shù)據(jù)持久化到原地址,從而有效地降低了事務(wù)的延遲.此外,BPPM還設(shè)計了模糊持久化技術(shù),該技術(shù)能夠區(qū)分出日志區(qū)中尚未提交的數(shù)據(jù),從而避免了在CPU緩存中維護(hù)多個數(shù)據(jù)副本的額外開銷.

Sun等人提出DP2[20],DP2技術(shù)區(qū)分出日志寫入和數(shù)據(jù)寫入,在日志寫入時通過持久性屏障和減少日志的保存時間來降低寫操作的延遲,DP2在一定程度上降低了事務(wù)的開銷,并且提高了持久性內(nèi)存設(shè)備的使用壽命.

雖然上述工作在一定程度上提高了事務(wù)的性能,但是它們所使用的日志機制不可避免地引入了引言中所提到的2個問題而帶來了額外的寫開銷.

2 TLPTM架構(gòu)設(shè)計

本文提出一種基于微日志的持久性事務(wù)內(nèi)存系統(tǒng).圖2描述TLPTM的架構(gòu)圖.本文使用支持DAX[8]功能的文件系統(tǒng)PMFS[21],通過內(nèi)存映射文件的方式將持久性內(nèi)存以用戶態(tài)的形式暴露給TLPTM,從而降低傳統(tǒng)持久化路徑的軟件棧開銷.上層應(yīng)用通過TLPTM的事務(wù)接口訪問和更新持久性內(nèi)存上的數(shù)據(jù).

Fig.2 Architecture of TLPTM圖2 TLPTM架構(gòu)圖

由于TLPTM是通過內(nèi)存映射文件的方式從非易失主存中獲取一塊內(nèi)存區(qū)間,然后在用戶態(tài)保護(hù)程序在這塊內(nèi)存空間上的數(shù)據(jù)一致性,因此TLPTM只保證程序級別的一致性.而內(nèi)存映射文件所涉及到的文件的一致性由文件系統(tǒng)保證,例如PMFS,HiNFS[22]、支持DAX功能的EXT4文件系統(tǒng)等.

TLPTM主要包含3個模塊:

1) 日志模塊.第1節(jié)提到,因為undo log導(dǎo)致了頻繁的持久化操作,所以日志模塊采用了基于redo log的日志機制,在事務(wù)執(zhí)行過程中先將新數(shù)據(jù)維持在易失性的寫集合中,只有在事務(wù)提交時會觸發(fā)持久化操作.此外,TLPTM利用CLFLUSH等軟件指令保證持久化操作的順序性.

2) 并發(fā)控制模塊.在事務(wù)執(zhí)行過程中,任何2個事務(wù)可能同時更新同一個數(shù)據(jù),TLPTM利用并發(fā)控制模塊解決事務(wù)間的沖突.通過日志模塊和并發(fā)控制模塊,TLPTM保證了事務(wù)的ACID特性.

3) 內(nèi)存管理模塊.TLPTM通過文件系統(tǒng)的mmap接口,將持久性內(nèi)存區(qū)域映射到進(jìn)程某個固定的虛擬地址,然后利用內(nèi)存管理模塊管理映射出的內(nèi)存區(qū)域,保證內(nèi)存分配/釋放操作的持久性和一致性.

為了解決引言中提到的2個問題,TLPTM在日志模塊中設(shè)計了分配操作感知的日志優(yōu)化策略AALO和基于壓縮算法的日志優(yōu)化策略CBLO.AALO在事務(wù)運行過程中區(qū)分出內(nèi)存更新操作和分配操作.對于分配操作,繞開了日志操作,直接將新數(shù)據(jù)寫到新分配到的地址上,減少了分配操作的日志開銷.CBLO在將日志數(shù)據(jù)寫入到持久性內(nèi)存前,先利用壓縮算法對日志數(shù)據(jù)進(jìn)行壓縮,減少寫入日志的數(shù)據(jù)大小,從而減少對持久性內(nèi)存設(shè)備的寫磨損.

3 關(guān)鍵技術(shù)

本節(jié)首先介紹2個關(guān)鍵日志優(yōu)化策略AALO和CBLO,然后介紹基于上述優(yōu)化策略的TLPTM系統(tǒng)的事務(wù)機制.

3.1 分配操作感知的日志優(yōu)化策略AALO

事務(wù)的寫操作主要包含2個類型:對持久性內(nèi)存中已有數(shù)據(jù)的更新操作;向事務(wù)中新分配區(qū)域添加數(shù)據(jù)的分配操作.在現(xiàn)有的持久性事務(wù)內(nèi)存系統(tǒng)中,無論是更新操作還是分配操作產(chǎn)生的新數(shù)據(jù),都采用的是相同的日志機制,即將新/舊數(shù)據(jù)先寫入到日志中,再寫入到原數(shù)據(jù)區(qū).

對于更新操作,系統(tǒng)需要利用日志機制保證其崩潰時存在可恢復(fù)的數(shù)據(jù)副本.然而對于分配操作,系統(tǒng)只需要將新數(shù)據(jù)直接寫入到新分配的數(shù)據(jù)地址,并不需要提前寫日志的操作,因為這部分?jǐn)?shù)據(jù)之前在系統(tǒng)中并不存在,即使系統(tǒng)在事務(wù)提交前突然崩潰,也不會影響其一致性狀態(tài).

因此,TLPTM設(shè)計了分配操作感知的日志優(yōu)化策略AALO.在事務(wù)執(zhí)行過程中,AALO區(qū)分出分配操作和更新操作.當(dāng)應(yīng)用在事務(wù)中新分配某塊持久性內(nèi)存區(qū)域時,TLPTM記錄下新分配的數(shù)據(jù)區(qū)域地址.當(dāng)事務(wù)中有寫操作發(fā)生時,TLPTM根據(jù)事務(wù)中新分配的數(shù)據(jù)區(qū)域地址,判斷出每個寫操作是否落在新分配的數(shù)據(jù)區(qū)域中,如果是,則說明當(dāng)前操作是分配操作,否則就判定其為更新操作.

然后,TLPTM根據(jù)寫操作類型的不同,使用不同的日志機制來保證事務(wù)的一致性;當(dāng)事務(wù)中的寫操作是對內(nèi)存中已有數(shù)據(jù)作修改時,TLPTM使用redo log保證數(shù)據(jù)的一致性.而當(dāng)事務(wù)中的寫操作是向該事務(wù)新分配的區(qū)域添加數(shù)據(jù)時,TLPTM直接在事務(wù)提交時將數(shù)據(jù)持久化到新分配的數(shù)據(jù)區(qū).因此,TLPTM消除了分配操作帶來的日志開銷.

3.2 基于壓縮算法的日志優(yōu)化策略CBLO

本文觀察到日志數(shù)據(jù)往往具有如下特點:對于每個寫操作,日志中記錄的信息主要包含3個字段,即該操作更新的內(nèi)存地址addr、新數(shù)據(jù)value以及掩碼mask,它們都是8 B的整型數(shù)據(jù).現(xiàn)有系統(tǒng)將這8 B的數(shù)據(jù)完整地持久化到日志中,即使這些字段存儲的數(shù)據(jù)通??梢杂酶〉臄?shù)據(jù)類型表示.因此,TLPTM設(shè)計了基于壓縮算法的日志優(yōu)化策略CBLO,該策略將日志數(shù)據(jù)進(jìn)行壓縮以減少寫入的日志數(shù)據(jù)總量,在保證原有數(shù)據(jù)副本的同時減少對持久性內(nèi)存的寫操作.CBLO采用zigzag壓縮算法[13],使用該壓縮算法的原因主要有2個:①日志中記錄的數(shù)據(jù)類型都是64 b的整型數(shù)據(jù),而zigzag算法十分適合整型數(shù)據(jù)的壓縮;②因為日志數(shù)據(jù)中addr和mask等字段在大多數(shù)情況下數(shù)值大小比較固定且數(shù)值較小,而zigzag算法對于小整數(shù)的壓縮效果尤其明顯.

zigzag算法的基本思想是:將有符號的數(shù)字映射為無符號的數(shù)字,其以一種在正整數(shù)與負(fù)整數(shù)之間來回交錯的方式進(jìn)行,絕對值小的數(shù)字經(jīng)zigzag壓縮編碼后,無論正負(fù)都可以只使用較少的字節(jié)數(shù)來表示.

在具體實現(xiàn)中,當(dāng)系統(tǒng)執(zhí)行寫日志操作時,TLPTM利用zigzag算法對所有需要持久化到日志中的數(shù)據(jù)進(jìn)行重新編碼,將其表示成比特位信息中具有更多前導(dǎo)0的另一個整數(shù).當(dāng)存儲該數(shù)據(jù)的內(nèi)存空間有若干個字節(jié)的比特位信息都為0時,zigzag算法會盡可能將這些字節(jié)丟棄,用更小的內(nèi)存空間存儲剩余的字節(jié)信息,最后持久化到內(nèi)存中的日志區(qū).由此就達(dá)到了將日志數(shù)據(jù)進(jìn)行壓縮的目的.日志數(shù)據(jù)經(jīng)壓縮后,有效地減少了日志操作的數(shù)據(jù)總量,從而提高了持久性內(nèi)存設(shè)備的耐久性.

值得注意的是,由于本設(shè)計在日志寫入的過程中引入了壓縮算法,這不可避免地引入了一定的延遲.因為在對數(shù)據(jù)進(jìn)行壓縮的過程中,使用的是一個循環(huán)結(jié)構(gòu),該循環(huán)結(jié)構(gòu)的作用就是將數(shù)據(jù)的比特位信息中存在1的字節(jié)提取出來,當(dāng)數(shù)據(jù)經(jīng)zigzag進(jìn)行編碼后的比特位信息中具有較多的1時,該循環(huán)的運行時間就會越長,因此相應(yīng)地會增加程序的運行時間.但由于日志數(shù)據(jù)一般只有在系統(tǒng)突然崩潰后需要做故障恢復(fù)的情況下才會被訪問,壓縮后的數(shù)據(jù)通常不需要反復(fù)的解壓縮/壓縮過程,所以壓縮算法所帶來的延遲處在一個可控的范圍之內(nèi).此外,持久性內(nèi)存具有讀寫不對稱性,壓縮算法能夠有效降低寫入數(shù)據(jù)的總量,這在一定程度上也降低了事務(wù)的平均延遲.這部分的影響會在第4節(jié)實驗部分給出進(jìn)一步的驗證.

3.3 事務(wù)機制

3.3.1 事務(wù)接口

TLPTM利用GCC事務(wù)編譯器[23]向傳統(tǒng)C/C++代碼加入了事務(wù)語義,通過關(guān)鍵字__tm_atomic和一組花括號定義事務(wù)的范圍,保證這段代碼的ACID特性.事務(wù)范圍內(nèi)的內(nèi)存訪問操作會被GCC事務(wù)編譯器捕獲,TLPTM利用TinySTM替換了事務(wù)中的內(nèi)存訪問操作.在事務(wù)執(zhí)行過程中,TLPTM將所有更新操作記錄在一個易失性的寫集合中.當(dāng)事務(wù)提交時,通過redo log日志機制,將寫集合中的寫操作備份到日志中,并調(diào)用持久化模塊保證日志操作的持久性.最后,TLPTM將新數(shù)據(jù)持久化到原數(shù)據(jù)區(qū).此外,TLPTM利用TinySTM的鎖機制保證了事務(wù)的并發(fā)控制,從而實現(xiàn)了并發(fā)控制模塊,這部分的細(xì)節(jié)介紹可參考之前的研究工作[19].

3.3.2 日志模塊

當(dāng)事務(wù)提交時,TLPTM利用軟件指令對日志操作和原數(shù)據(jù)寫回操作進(jìn)行持久化.因為日志數(shù)據(jù)只有在系統(tǒng)崩潰時才會被訪問,所以TLPTM利用MOVNT指令繞開了CPU緩存,將日志數(shù)據(jù)直接持久化到持久性內(nèi)存上,避免了對CPU緩存的干擾.此外,TLPTM利用MFENCE指令,確保在執(zhí)行原數(shù)據(jù)修改前將所有日志操作進(jìn)行持久化.對于原數(shù)據(jù)寫回操作,TLPTM利用CLFLUSH指令保證所有寫操作的持久性.此外,日志模塊設(shè)計了2種優(yōu)化策略AALO和CBLO,解決了引言中提到的現(xiàn)有系統(tǒng)存在的2個問題.

3.3.3 內(nèi)存管理模塊

內(nèi)存管理模塊是基于易失性內(nèi)存分配器Hoard[24]實現(xiàn)的.Hoard最初是針對多線程場景設(shè)計的,其按照超級塊的粒度(例如16KB)對傳統(tǒng)內(nèi)存進(jìn)行切割.為了減少多線程間的沖突,Hoard同時維護(hù)了全局的超級塊池和線程局部的超級塊池,線程只有在局部超級塊池的空間耗盡時,才會向全局超級塊池申請新的超級塊,從而減少了多線程間的鎖沖突.對于每個超級塊,Hoard將其分成固定大小的內(nèi)存塊,滿足給定區(qū)間大小的分配操作.

然而,Hoard是基于傳統(tǒng)內(nèi)存設(shè)計的,無法保證分配操作的持久性和一致性.為了解決這個問題,TLPTM在持久性內(nèi)存的固定區(qū)域預(yù)留了每個超級塊的位圖(bitmap).位圖中每個比特位都表示了對應(yīng)超級塊中某個內(nèi)存塊的分配狀態(tài).此外,TLPTM利用事務(wù)接口,保證分配/釋放操作中位圖修改操作的持久性和一致性.

3.3.4 TLPTM的事務(wù)機制流程

圖3表示了基于AALO和CBLO的TLPTM系統(tǒng)的事務(wù)機制流程圖.TLPTM與基于redo log的傳統(tǒng)系統(tǒng)相比,主要有2點區(qū)別:1)TLPTM增加了一個寫操作判斷,即判斷寫操作是否是分配操作;2)TLPTM在執(zhí)行日志持久化操作前利用zigzag算法對其進(jìn)行了壓縮.

Fig.3 The transaction mechanism process of TLPTM圖3 TLPTM的事務(wù)機制

3.3.5 系統(tǒng)恢復(fù)

當(dāng)系統(tǒng)突然崩潰時,TLPTM需要將系統(tǒng)恢復(fù)到崩潰前的一致性狀態(tài).首先,TLPTM通過文件系統(tǒng)的mmap接口,將持久性內(nèi)存區(qū)域映射到某個固定的虛擬地址.其次,根據(jù)超級塊中的位圖信息重建內(nèi)存管理模塊的數(shù)據(jù)結(jié)構(gòu).最后,根據(jù)日志數(shù)據(jù)中的信息,重做已經(jīng)提交的事務(wù),丟棄未完成的事務(wù),由此完成整個系統(tǒng)的恢復(fù)過程.

4 實驗測試與分析

為了分析評價TLPTM的性能和耐久性,本節(jié)的實驗將從3個方面對TLPTM進(jìn)行測試與評價:

1) 對比測試分配操作感知的日志優(yōu)化策略AALO的性能和耐久性;

2) 對比測試基于壓縮算法的日志優(yōu)化策略CBLO的耐久性;

3) 對比測試Mnemosyne和TLPTM的性能和耐久性.

4.1 測試環(huán)境

本文所有實驗均基于同一臺Linux服務(wù)器,內(nèi)核版本為4.4.16,處理器型號為Intel?Xeon?CPU E5-2680 v3,共包含4個物理核心.此外,服務(wù)器還配置了32 GB的內(nèi)存和1 TB的硬盤.實驗配置環(huán)境如表1所示:

Table 1 Experiment Configuration表1 實驗環(huán)境配置

本文使用Mnemosyne[7]中的Hash表作為實驗的測試程序,并將每個事務(wù)中產(chǎn)生的日志數(shù)據(jù)的平均字節(jié)數(shù)和事務(wù)平均延遲作為系統(tǒng)在可靠性和性能的評價標(biāo)準(zhǔn).實驗中使用3種不同的負(fù)載來評估TLPTM的性能和耐久性.其中,Workloada被設(shè)置為在Hash表中全部執(zhí)行分配操作,Workloadb的場景是在Hash表中執(zhí)行分配操作和更新操作的比例均為50%,Workloadc被設(shè)置為在Hash表中全部執(zhí)行更新操作.表2中列出了這3種負(fù)載的特點.

Table 2 Workload Features表2 負(fù)載的特點

雖然持久性內(nèi)存相關(guān)技術(shù)發(fā)展十分迅速,但是目前大多數(shù)研究還只是集中在設(shè)備級別,對系統(tǒng)級別的研究仍面臨著缺少真實的NVM設(shè)備的境況.因此,大多數(shù)研究不具備在真實NVM存儲環(huán)境下驗證上層軟件技術(shù)有效性的條件,而構(gòu)建NVM模擬器或模擬平臺是解決上述問題的有效途徑[11].本文使用與Mnemosyne[7]類似的持久性內(nèi)存模擬方法,即將普通內(nèi)存劃分為常規(guī)的易失性內(nèi)存和模擬的非易失內(nèi)存.默認(rèn)情況下,本實驗使用CPU提供的RDTSC指令將模擬延遲設(shè)置為500 ns.因為Mnemosyne和TLPTM都是基于TinySTM[19]和redo log實現(xiàn)的持久性事務(wù)內(nèi)存系統(tǒng),本文主要以Mnemosyne作為比較系統(tǒng),從而保證了系統(tǒng)對比的公平性.

4.2 分配操作感知的日志優(yōu)化策略的測試

本節(jié)實驗將使用了AALO的系統(tǒng)與Mnemosyne進(jìn)行對比,驗證了分配操作感知的日志優(yōu)化策略對持久性事務(wù)內(nèi)存系統(tǒng)的可靠性和性能方面的影響.

4.2.1 耐久性測試

日志寫入量的測試結(jié)果如圖4所示,除負(fù)載c外,AALO將每個事務(wù)日志操作產(chǎn)生的平均字節(jié)修改數(shù)降低了54%~64%.負(fù)載a理論上更契合于本文提出的分配操作感知的優(yōu)化策略,因為負(fù)載a連續(xù)地向Hash表中插入新的鍵值對,這會導(dǎo)致頻繁地調(diào)用內(nèi)存分配函數(shù),由于是向內(nèi)存中添加新數(shù)據(jù),該操作不需要通過日志操作來保證一致性.但是,隨著插入操作所占比例的增加,每個事務(wù)的日志操作產(chǎn)生的平均字節(jié)修改數(shù)也隨之增加,這是因為內(nèi)存分配信息也會保留在日志中,因而出現(xiàn)圖4中所示的結(jié)果.

Fig.4 Comparison of log size between Mnemosyne and AALO圖4 Mnemosyne和AALO日志寫入量的對比

由于負(fù)載c中每次操作都是更新哈希表中已有的鍵值對,而本文提出的分配操作感知的優(yōu)化策略只對分配操作有效,因此對耐久性的提升并不明顯.

4.2.2 性能測試

在3種工作負(fù)載下,本節(jié)分別測試了AALO對持久性內(nèi)存系統(tǒng)的性能影響,其與Mnemosyne的延遲對比如圖5所示,除負(fù)載c外,AALO將寫入延遲降低了15%~24%.由于負(fù)載a受到頻繁的內(nèi)存分配操作帶來的影響,所以其性能要略差于其他負(fù)載.由于負(fù)載c全部都是更新操作,因此2個系統(tǒng)的性能基本相似.

Fig.5 Comparison of latency between transaction mechanisms圖5 事務(wù)機制的延遲對比

由此可知,分配操作感知的日志優(yōu)化策略不僅減少了每個事務(wù)的寫磨損,而且也降低了日志操作引入的持久化延遲.

4.3 基于壓縮算法的日志優(yōu)化策略的測試

本節(jié)實驗將使用CBLO的系統(tǒng)與Mnemosyne進(jìn)行對比,驗證了基于壓縮算法的日志優(yōu)化策略對持久性事務(wù)內(nèi)存系統(tǒng)可靠性方面的影響.實驗結(jié)果如圖6所示,從圖6中可以看出,使用了CBLO的系統(tǒng)中日志操作的平均字節(jié)修改數(shù)比Mnemosyne減少了61%~70%.磨損大大降低的原因在于,日志操作的所有字段都是64 b的整型數(shù)據(jù).首先,考慮字段addr和mask,當(dāng)?shù)刂穉ddr是9 b數(shù)的整型數(shù)字時,經(jīng)zigzag壓縮編碼后,只需要使用5 B進(jìn)行存儲;而mask在多數(shù)情況下為-1,經(jīng)壓縮編碼后,只占用1 B.而value字段是由應(yīng)用程序決定的,當(dāng)傳入的value較小時也能獲得良好的壓縮率.因此,相比于Mnemosyne,CBLO大大減少了持久性內(nèi)存系統(tǒng)的日志寫入量.

Fig.6 Comparison of log size between Mnemosyne and CBLO圖6 Mnemosyne和CBLO日志寫入量的對比

此外,壓縮算法不可避免地增加了日志操作的延遲,但是因為日志數(shù)據(jù)只有在系統(tǒng)恢復(fù)時才會被訪問到,所以壓縮算法產(chǎn)生的開銷可以接受.本文將在4.4節(jié)中討論基于2種優(yōu)化策略的TLPTM的性能效果.

4.4 TLPTM與Mnemosyne的對比

本節(jié)實驗將基于2種優(yōu)化策略的TLPTM與Mnemosyne進(jìn)行對比,由此判斷TLPTM在性能和可靠性方面的效果.

4.4.1 耐久性測試

本實驗比較了基于AALO與CBLO兩種優(yōu)化的TLPTM系統(tǒng)與Mnemosyne的耐久性.兩者產(chǎn)生的日志寫入量對比如圖7所示.從圖7中看出,在不同的工作負(fù)載中,與Mnemosyne相比,TLPTM在耐久性上都有十分明顯的提升,除負(fù)載c外,TLPTM將日志的寫入總量降低了79%~81%.因為負(fù)載c不包含分配操作,AALO并沒有對其寫磨損產(chǎn)生優(yōu)化效果,所以其耐久性的提升效果略低于其他2種工作負(fù)載,但其憑借CBLO的優(yōu)化依然達(dá)到了70%的耐久性提升.

Fig.7 Comparison of log size between Mnemosyne and TLPTM圖7 Mnemosyne與TLPTM產(chǎn)生日志數(shù)據(jù)的大小對比

Fig.8 Comparison of latency between TLPTM and Mnemosyne transaction mechanisms圖8 TLPTM與Mnemosyne事務(wù)機制的延遲對比

4.4.2 性能測試

本節(jié)實驗測試TLPTM與Mnemosyne的性能對比,結(jié)果如圖8所示,相比于4.2.2節(jié)中的實驗效果,基于2種優(yōu)化的TLPTM系統(tǒng)的性能有所降低,這說明壓縮算法在降低日志操作產(chǎn)生的寫磨損的同時,帶來了一定的性能影響.因為在對數(shù)據(jù)進(jìn)行壓縮的過程中,使用的是一個循環(huán)結(jié)構(gòu),該循環(huán)結(jié)構(gòu)的作用就是將數(shù)據(jù)的比特位信息中存在1的字節(jié)全部提取出來,當(dāng)數(shù)據(jù)經(jīng)zigzag進(jìn)行編碼后的比特位信息中具有較多的1時,該循環(huán)的運行時間就會越長,因此相應(yīng)地會增加程序的運行時間,從而對系統(tǒng)性能造成一定影響.使用TLPTM系統(tǒng)的用戶可以根據(jù)自己的需求,選擇是否使用基于壓縮算法的日志優(yōu)化策略CBLO,從而獲得在性能或者可靠性方面的提升.

5 總 結(jié)

持久性內(nèi)存因為非易失性、靜態(tài)功耗低和集成度高等優(yōu)勢,有望代替DRAM成為新的主存材料.研究人員設(shè)計了輕量級的持久性事務(wù)內(nèi)存系統(tǒng),用于保證持久性內(nèi)存上更新操作的一致性.然而,持久性內(nèi)存同時也存在著使用壽命有限和寫延遲過高的局限性.現(xiàn)有的事務(wù)系統(tǒng)因為日志操作引入額外的寫操作,帶來嚴(yán)重的寫延遲和寫磨損等問題.

為了解決這些問題,本文提出了分配操作感知的日志優(yōu)化策略AALO和基于壓縮算法的日志優(yōu)化策略CBLO.結(jié)合這2種優(yōu)化策略,本文設(shè)計并實現(xiàn)了基于微日志的持久性事務(wù)內(nèi)存系統(tǒng)TLPTM.實驗結(jié)果表明,與現(xiàn)有的事務(wù)系統(tǒng)Mnemosyne相比,本文提出的分配操作感知的優(yōu)化策略將事務(wù)的性能提升了15%~24%,基于上述2種優(yōu)化策略的TLPTM將日志的數(shù)據(jù)總量降低了70%~81%.

猜你喜歡
一致性分配優(yōu)化
關(guān)注減污降碳協(xié)同的一致性和整體性
公民與法治(2022年5期)2022-07-29 00:47:28
超限高層建筑結(jié)構(gòu)設(shè)計與優(yōu)化思考
注重教、學(xué)、評一致性 提高一輪復(fù)習(xí)效率
民用建筑防煙排煙設(shè)計優(yōu)化探討
IOl-master 700和Pentacam測量Kappa角一致性分析
關(guān)于優(yōu)化消防安全告知承諾的一些思考
一道優(yōu)化題的幾何解法
應(yīng)答器THR和TFFR分配及SIL等級探討
遺產(chǎn)的分配
一種分配十分不均的財富
主站蜘蛛池模板: 精品久久国产综合精麻豆| 免费无码AV片在线观看中文| 亚洲国产综合自在线另类| 日本人妻一区二区三区不卡影院 | 欧亚日韩Av| 国产精品久线在线观看| 影音先锋丝袜制服| 超碰91免费人妻| 久久久精品国产亚洲AV日韩| 亚洲制服丝袜第一页| 在线观看精品国产入口| 日本三区视频| 亚洲欧美日韩天堂| 国产H片无码不卡在线视频| 精品夜恋影院亚洲欧洲| 欧美成人看片一区二区三区| 国产最新无码专区在线| 国产精品第一区在线观看| 波多野结衣二区| 狠狠色丁香婷婷综合| 成人一级免费视频| 国产成人AV大片大片在线播放 | 中文字幕av无码不卡免费| 亚洲天堂色色人体| 熟女成人国产精品视频| 2021国产精品自产拍在线| a免费毛片在线播放| 91精品啪在线观看国产91九色| 一本大道无码日韩精品影视| 欧美午夜网| 国产成人福利在线| 欧美午夜一区| 国内精品久久人妻无码大片高| 免费人成网站在线高清| 热re99久久精品国99热| 国产精品浪潮Av| 久久久久久高潮白浆| 国产中文在线亚洲精品官网| 国产一级特黄aa级特黄裸毛片 | 国产96在线 | 亚洲精品高清视频| 亚洲日韩第九十九页| 永久免费AⅤ无码网站在线观看| 97超碰精品成人国产| 日韩国产无码一区| 丁香亚洲综合五月天婷婷| 国产精品黑色丝袜的老师| 国产色婷婷| 亚洲AV永久无码精品古装片| 无码丝袜人妻| 欧美三级日韩三级| 一区二区三区国产精品视频| 国产午夜精品一区二区三| 亚洲人成人伊人成综合网无码| 最新午夜男女福利片视频| 国产亚洲精品自在线| 久久香蕉欧美精品| 精品国产乱码久久久久久一区二区| 久久这里只有精品国产99| 国产精品福利导航| 国产在线日本| 91丝袜美腿高跟国产极品老师| 久久婷婷五月综合97色| 综合久久五月天| 欧美高清视频一区二区三区| 99在线观看国产| 国产麻豆精品在线观看| 国产在线一区二区视频| 亚洲欧美综合在线观看| 狠狠色丁婷婷综合久久| 色屁屁一区二区三区视频国产| 国产精品浪潮Av| 亚洲久悠悠色悠在线播放| 青青热久麻豆精品视频在线观看| 日本少妇又色又爽又高潮| 色网站在线视频| 精品五夜婷香蕉国产线看观看| 亚洲αv毛片| 國產尤物AV尤物在線觀看| 欧美视频在线不卡| 伊人久久久久久久久久| 久草网视频在线|