• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    耐久性感知的持久性內(nèi)存異地更新

    2022-03-09 05:41:56蔡長興杜亞娟周泰宇
    計算機(jī)研究與發(fā)展 2022年3期
    關(guān)鍵詞:持久性日志內(nèi)存

    蔡長興 杜亞娟 周泰宇

    (武漢理工大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 武漢 430073)

    隨著大數(shù)據(jù)時代的到來和人工智能技術(shù)的發(fā)展,海量數(shù)據(jù)存儲和處理需求推動著計算機(jī)體系結(jié)構(gòu)的進(jìn)一步發(fā)展[1].大數(shù)據(jù)包含大量的、多種類的數(shù)據(jù),這些數(shù)據(jù)的價值密度更低,但對處理時效和精確性的要求更高[2].為了滿足這一需求,研究者們提出了持久性內(nèi)存系統(tǒng)(persistent memory, PM)[3-4]等新型存儲架構(gòu),如Intel公司最新推出的Optane[5]等,為傳統(tǒng)DRAM內(nèi)存構(gòu)建的計算機(jī)體系帶來巨大的變革.由于其非易失性、字節(jié)尋址、直接存取等優(yōu)良的特性[3,6-8],持久性內(nèi)存具有較高的研究價值和廣闊的應(yīng)用前景.然而,持久性內(nèi)存系統(tǒng)故障發(fā)生后,部分?jǐn)?shù)據(jù)持久保存在內(nèi)存中,使數(shù)據(jù)恢復(fù)時產(chǎn)生不一致問題,從而導(dǎo)致嚴(yán)重錯誤.因此,故障一致性(crash consistency)問題是持久性內(nèi)存系統(tǒng)需要解決的重要問題之一[9].

    現(xiàn)有工作對持久性內(nèi)存系統(tǒng)故障一致性保證機(jī)制開展了深入的研究,提出了日志、異地更新等技術(shù)[10-13].通過記錄日志或多版本寫的方式,使數(shù)據(jù)崩潰后仍可以恢復(fù)到一致性狀態(tài).然而,從時間和空間維度詳細(xì)分析異地更新等現(xiàn)有技術(shù),發(fā)現(xiàn)由于這些技術(shù)均引入了額外的寫操作,導(dǎo)致總線延遲高、寫放大等問題,對持久性內(nèi)存系統(tǒng)的性能和壽命產(chǎn)生了一定的影響,從而導(dǎo)致了耐久性問題,因此亟需得到改進(jìn).

    為緩解上述問題,本文提出了耐久性感知的持久性內(nèi)存異地更新機(jī)制(endurance aware out-of-place update for persistent memory, EAOOP).基于對持久性內(nèi)存系統(tǒng)硬件的改動,引入緩沖區(qū)提供耐久性感知的內(nèi)存管理,為異地更新提供地址映射,并充分利用帶寬寫回數(shù)據(jù).為了提升持久性內(nèi)存的耐久性,故障一致性保證機(jī)制必須盡量減少對持久性內(nèi)存的寫入,本文運(yùn)用異地更新技術(shù),將劃分為原始數(shù)據(jù)區(qū)域和更新數(shù)據(jù)區(qū)域的持久性內(nèi)存交替使用,既保證了系統(tǒng)的故障一致性,又避免了冗余的數(shù)據(jù)合并操作,實(shí)現(xiàn)了對持久性內(nèi)存的耐久性感知.同時,設(shè)計了輕量級垃圾回收,并與總線執(zhí)行解耦,極大減少額外寫放大和帶寬占用,從而降低了故障一致性保證對持久性內(nèi)存壽命和性能的影響.此外,本文還為該機(jī)制設(shè)計了系統(tǒng)恢復(fù)的方法,并詳細(xì)描述了讀寫訪問請求的工作流程.最后,通過模擬實(shí)驗(yàn)驗(yàn)證了EAOOP機(jī)制的有效性.基于微基準(zhǔn)程序測試集和真實(shí)應(yīng)用程序測試集,在模擬器McSimA+上實(shí)現(xiàn)并測試EAOOP機(jī)制.

    本文工作的主要貢獻(xiàn)有3個方面:

    1) 分析了持久性內(nèi)存故障一致性保證機(jī)制的性能優(yōu)化問題.

    2) 設(shè)計了耐久性感知的持久性內(nèi)存異地更新機(jī)制,包括耐久性感知的持久性內(nèi)存管理和輕量級垃圾回收.

    3) 實(shí)現(xiàn)并評估本文提出的機(jī)制,EAOOP的事務(wù)處理吞吐量提升了1.6倍,總線延遲和寫數(shù)量分別減少了27.3%和32.4%.

    1 背景與研究動機(jī)

    存儲系統(tǒng)是馮·諾依曼計算機(jī)體系結(jié)構(gòu)中的重要組成部分.在傳統(tǒng)存儲架構(gòu)下,以動態(tài)隨機(jī)存取存儲器(dynamic random access memory, DRAM)為代表的傳統(tǒng)計算機(jī)內(nèi)存,因容量有限、能耗較高、與外存讀寫時延較長等問題[3],造成了輸入和輸出瓶頸[10],影響了大數(shù)據(jù)處理的效率和能耗,使得傳統(tǒng)的存儲系統(tǒng)已不能滿足現(xiàn)有需求.

    以Hadoop和MongodDB等系統(tǒng)為代表的現(xiàn)有工作[14-16],嘗試從軟件或軟硬件結(jié)合層面改進(jìn)傳統(tǒng)計算機(jī)存儲架構(gòu),但其仍然是基于傳統(tǒng)的易失性內(nèi)存,性能瓶頸依然不可避免.近年來,以自旋矩傳輸隨機(jī)存取存儲器(shared transistor technology random access memory, STT-RAM)[17]、電阻式隨機(jī)存取存儲器(resistive random access memory, ReRAM)[18]、相變化存儲器(phase change memory, PCM)[19]和3D-XPoint[20]等非易失性存儲介質(zhì)(non-volatile memory, NVM)為代表的持久性內(nèi)存的誕生和發(fā)展,以其擁有的非易失性、可字節(jié)尋址、隨機(jī)讀寫速度快、能耗低、可擴(kuò)展性強(qiáng)等特性,為傳統(tǒng)的計算機(jī)存儲架構(gòu)帶來了機(jī)遇和挑戰(zhàn).2019年Intel公司推出了持久性內(nèi)存Optane DC Persistent Memory,更是加速了學(xué)術(shù)界和工業(yè)界對這一領(lǐng)域的關(guān)注.

    持久性內(nèi)存兼具傳統(tǒng)內(nèi)存和外存設(shè)備的優(yōu)點(diǎn),既可以用作外存,也可以用作內(nèi)存.因?yàn)槠淇梢员淮鎯图虞d指令直接訪問[7,21-22],所以避免了開銷較大的文件系統(tǒng)塊頁轉(zhuǎn)換等操作.采用持久性內(nèi)存單獨(dú)做主存,持久性內(nèi)存和DRAM的混合主存以及DRAM作為持久性內(nèi)存的緩存,成為持久性內(nèi)存系統(tǒng)這一新型存儲架構(gòu)設(shè)計的主要思路[23],如圖1所示:

    Fig. 1 Three common structures of persistent memory system圖1 持久性內(nèi)存系統(tǒng)的3種常見結(jié)構(gòu)

    然而,故障一致性問題一直是持久性內(nèi)存系統(tǒng)發(fā)展的障礙.

    1.1 故障一致性問題

    故障一致性指的是當(dāng)系統(tǒng)發(fā)生故障后,內(nèi)存中數(shù)據(jù)能恢復(fù)到故障發(fā)生前、最近的一個與系統(tǒng)其他位置數(shù)據(jù)都一致的狀態(tài).傳統(tǒng)的計算機(jī)存儲架構(gòu)因?yàn)橐资詢?nèi)存的存在,當(dāng)系統(tǒng)發(fā)生故障時,內(nèi)存中的數(shù)據(jù)即刻丟失.系統(tǒng)恢復(fù)后,內(nèi)存中沒有數(shù)據(jù),因此不需要考慮故障一致性的問題.由于持久性內(nèi)存的非易失性,在系統(tǒng)斷電或崩潰等情況發(fā)生后,數(shù)據(jù)不會丟失.然而,留存的數(shù)據(jù)可能存在部分更新或懸空指針等問題[24-25],從而引發(fā)系統(tǒng)產(chǎn)生嚴(yán)重的異常或錯誤.

    圖2展示了持久性內(nèi)存系統(tǒng)故障一致性問題原理.假設(shè)數(shù)據(jù)從緩存中被寫入到內(nèi)存時,由一個指針來引用,如圖2(a)所示;將指針寫入內(nèi)存,如圖2(b)所示;在寫入數(shù)據(jù)之前,系統(tǒng)發(fā)生了故障,如圖2(c)所示;此時只有指針留在了內(nèi)存中,這個指針被稱為懸空指針,此時系統(tǒng)中的數(shù)據(jù)處于不一致狀態(tài),在接下來的運(yùn)行中懸空指針可能會引起系統(tǒng)異?;蝈e誤,如圖2(d)所示.

    Fig. 2 Principle of crash consistency problem in persistent memory system圖2 持久性內(nèi)存系統(tǒng)故障一致性問題原理

    常見的持久性內(nèi)存系統(tǒng)故障一致性保證的方法在軟件層面有日志(logging)、寫時復(fù)制(copy-on-write)和日志結(jié)構(gòu)(log-structured)技術(shù):1)日志技術(shù)主要有重寫日志(redo log)和撤銷日志(undo log),事務(wù)會在數(shù)據(jù)被提交(commit)前,將數(shù)據(jù)的原始版本寫入撤銷日志,或?qū)?shù)據(jù)的更新版本寫入重寫日志,也可能同時保存2種日志;2)寫時復(fù)制技術(shù)的數(shù)據(jù)不在原始版本上更新,而是在新復(fù)制的版本上更新,更新后再刪除原始版本;3)日志結(jié)構(gòu)技術(shù)將更新后的數(shù)據(jù)以日志結(jié)構(gòu)附加到日志結(jié)構(gòu)中,寫入持久性內(nèi)存,并建立映射索引以便后續(xù)請求訪問.在硬件層面常見的有檢查點(diǎn)(checkpointing)和異地更新(out-of-place update)技術(shù):1)檢查點(diǎn)技術(shù)是程序執(zhí)行過程中的一個快照,保存了某一節(jié)點(diǎn)系統(tǒng)中各個位置的數(shù)據(jù)版本,系統(tǒng)崩潰后,通過比對檢查點(diǎn)中的數(shù)據(jù)可以快速將系統(tǒng)恢復(fù)到一致性狀態(tài);2)異地更新技術(shù)是將數(shù)據(jù)更新至持久性內(nèi)存的指定區(qū)域,它與寫時復(fù)制不同的是這種寫入是由硬件支持的.

    由于持久性內(nèi)存自身讀寫不對稱、寫耐久性差等特性,上述經(jīng)典方法在開銷和性能之間還未取得較好的平衡.于是,研究者們基于經(jīng)典方法開展了深入的研究,提出了如Mnemosyne[26],Kiln[25],ThyNVM[27],HOOP[10]等工作,但還存在一定的不足.因此,充分利用持久性內(nèi)存特性,改進(jìn)現(xiàn)有的故障一致性保證機(jī)制,對于優(yōu)化持久性內(nèi)存系統(tǒng)的性能、引領(lǐng)下一代計算機(jī)存儲架構(gòu)革新具有重要意義[26].

    1.2 故障一致性保證優(yōu)化

    為了保證持久性內(nèi)存系統(tǒng)的故障一致性,研究者們在多個方面提出了解決方案,這些機(jī)制雖然保證了故障一致性,但也不可避免地為持久性內(nèi)存帶來了開銷,產(chǎn)生了性能上的下降,成為持久性內(nèi)存系統(tǒng)取代傳統(tǒng)計算機(jī)存儲架構(gòu)道路上的嚴(yán)重障礙.因此,在現(xiàn)有研究的基礎(chǔ)上,進(jìn)一步優(yōu)化故障一致性機(jī)制的性能是十分有必要的.

    軟件透明的異地更新機(jī)制更能滿足更少開銷和更高性能這一發(fā)展趨勢.現(xiàn)有工作HOOP機(jī)制就是一種軟件透明的方案,采用硬件層面的優(yōu)化思想,通過異地更新方法為持久性內(nèi)存提供了硬件級別的故障一致性保證,使得其相較于傳統(tǒng)日志方案充分利用了持久性內(nèi)存寫入帶寬,提升了在故障一致性保證機(jī)制下持久性內(nèi)存系統(tǒng)的性能.然而,該機(jī)制為了輔助異地更新而提出的垃圾回收機(jī)制存在冗余寫入和總線占用的現(xiàn)象,引起了時間和空間維度的問題,存在一定的優(yōu)化的空間.

    從時間維度上來說,HOOP存在的問題主要有總線延遲和寫延遲2個方面.首先,HOOP在執(zhí)行垃圾回收機(jī)制時,后續(xù)的請求如果針對的是同一個數(shù)據(jù),那么該數(shù)據(jù)就需要等待垃圾回收執(zhí)行結(jié)束后,才能更新到持久性內(nèi)存的異地(out-of-place, OOP)區(qū)域中,這個等待過程中,持久性內(nèi)存無法執(zhí)行讀取或?qū)懭氩僮?,從而產(chǎn)生了一定的總線延遲.其次,HOOP的垃圾回收機(jī)制雖然已經(jīng)相較于傳統(tǒng)的垃圾回收機(jī)制進(jìn)行改進(jìn),但是,該機(jī)制仍需要對OOP區(qū)域已更新的數(shù)據(jù)進(jìn)行掃描,再打包寫入到Home區(qū)域中,也就意味著在已更新的數(shù)據(jù)寫入持久性內(nèi)存后,持久性內(nèi)存中還會存在著與這些數(shù)據(jù)有關(guān)的再一次寫入.雖然掃描和打包操作能盡量減少再一次寫入的數(shù)據(jù)大小,但由于持久性內(nèi)存的讀寫不對稱問題一直是影響性能的重要因素,這種寫入的存在必然對系統(tǒng)的執(zhí)行時間產(chǎn)生巨大的影響,因此由于垃圾回收帶來的寫延遲問題也是需要優(yōu)化的重要問題.

    從空間維度上來說,HOOP主要存在的問題有寫壽命和吞吐量2個方面.首先,由于持久性內(nèi)存的寫耐久性問題,HOOP提出的機(jī)制存在寫放大問題,數(shù)據(jù)首先寫入持久性內(nèi)存,接著會再參與到內(nèi)部的數(shù)據(jù)遷移中.這一機(jī)制的實(shí)現(xiàn),對持久性內(nèi)存的使用壽命會產(chǎn)生一定的影響,長遠(yuǎn)來看,對于持久性內(nèi)存系統(tǒng)來說是得不償失的,也不利于其進(jìn)一步推廣并替代傳統(tǒng)內(nèi)存系統(tǒng).其次,HOOP機(jī)制對系統(tǒng)的吞吐量存在不必要的影響,隨著垃圾回收時間間隔的增加,吞吐量也隨之增大后變小,說明垃圾回收機(jī)制直接影響到了系統(tǒng)執(zhí)行,這對于持久性內(nèi)存系統(tǒng)來說其實(shí)是一筆不劃算的開銷.特別是對于不同微基準(zhǔn)測試集,HOOP的吞吐量閾值并不一致.雖然現(xiàn)有工作HOOP機(jī)制相較于現(xiàn)有研究,已經(jīng)在提升性能和減少開銷上有了十分大的進(jìn)步(1.7倍和2.1倍),但是從時間維度和空間維度上來說,其存在總線延遲、寫延遲、寫壽命和吞吐量等問題,還存在一定的優(yōu)化空間,需要通過進(jìn)一步減少寫數(shù)量,解耦總線執(zhí)行與垃圾回收來減少故障一致性保證機(jī)制帶來的開銷,提升持久性內(nèi)存系統(tǒng)的性能.

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

    基于現(xiàn)有研究,本文提出一種耐久性感知的持久性內(nèi)存異地更新機(jī)制,如圖3所示.該機(jī)制基于對持久性內(nèi)存系統(tǒng)的硬件修改,采用持久性內(nèi)存作為主存,對原有持久性內(nèi)存系統(tǒng)的修改較少.在應(yīng)用了該機(jī)制的系統(tǒng)上可以直接運(yùn)行應(yīng)用程序,而不必像傳統(tǒng)機(jī)制一樣需要實(shí)現(xiàn)相應(yīng)的應(yīng)用程序接口,對于用戶更為友好和簡單.

    Fig. 3 Architecture design of EAOOP圖3 EAOOP架構(gòu)設(shè)計圖

    首先,在緩存和持久性內(nèi)存之間加入了內(nèi)存控制器一層,該層是易失性的.接著,在內(nèi)存控制器中實(shí)現(xiàn)了持久化管理和地址映射,數(shù)據(jù)經(jīng)過內(nèi)存控制器中的持久化緩沖區(qū)和映射表處理后才能被讀寫.最后,在持久性內(nèi)存中實(shí)現(xiàn)了異地更新和垃圾回收.

    各模塊的主要功能和原理為:

    1) 持久化管理主要是在持久化緩沖區(qū)中進(jìn)行的,在該模塊中為數(shù)據(jù)持久化到持久性內(nèi)存中做好準(zhǔn)備.該過程將更新后準(zhǔn)備寫回的數(shù)據(jù)重新組成了緩存行后寫入持久性內(nèi)存,既保證了寫入的順序性,又減少了持久化過程中的順序保證和持久化帶寬開銷.

    2) 地址映射主要依靠的是映射表這一模塊,承擔(dān)了數(shù)據(jù)讀寫過程中的持久性內(nèi)存地址映射功能,幫助數(shù)據(jù)確定異地更新的地址和垃圾回收的時機(jī).同時,它也與其他方法的實(shí)現(xiàn)有著密切的關(guān)系,可以將數(shù)據(jù)的地址映射關(guān)系信息記錄在此,服務(wù)持久性內(nèi)存數(shù)據(jù)的多版本管理.

    3) 異地更新在持久化過程中實(shí)現(xiàn),持久性內(nèi)存被劃分為原始數(shù)據(jù)區(qū)域和更新數(shù)據(jù)區(qū)域,用于存放交替寫入持久性內(nèi)存的數(shù)據(jù).為了保證后續(xù)請求的正確訪問,在寫入持久性內(nèi)存之前,這些數(shù)據(jù)的映射關(guān)系已經(jīng)在系統(tǒng)中被記錄.

    4) 垃圾回收在后臺運(yùn)行,主要處理持久性內(nèi)存中的“無效”數(shù)據(jù),同時會對映射表中的條目進(jìn)行修改.針對現(xiàn)有工作中存在的時間和空間維度的問題,它既減少冗余寫入操作,又解耦了垃圾回收與總線執(zhí)行之間的關(guān)系,使得系統(tǒng)開銷減少,性能提升.

    由于持久化緩沖區(qū)的數(shù)據(jù)和映射表中的數(shù)據(jù)都在易失性的內(nèi)存控制器中,因此當(dāng)故障發(fā)生后,持久化緩沖區(qū)的數(shù)據(jù)和映射表中的數(shù)據(jù)將會丟失,使得持久性內(nèi)存中的數(shù)據(jù)出現(xiàn)不一致的問題.因此,在一致性保證的基礎(chǔ)上,本文還實(shí)現(xiàn)了對系統(tǒng)的恢復(fù),主要在持久性內(nèi)存中進(jìn)行.同時,該過程也能夠重建因故障丟失的映射表,在恢復(fù)結(jié)束后,服務(wù)持久化緩沖區(qū)中重新傳入后續(xù)請求.

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

    本節(jié)我們詳細(xì)介紹EAOOP機(jī)制中的關(guān)鍵技術(shù).

    3.1 耐久性感知的內(nèi)存管理

    由于持久性內(nèi)存支持字節(jié)粒度尋址,可通過load或store指令直接訪問內(nèi)存中的數(shù)據(jù),而不需要進(jìn)行頁交換(page swapping).本文充分利用了這一特性,通過引入易失性的內(nèi)存控制器,對持久性內(nèi)存進(jìn)行高效靈活的管理,主要包括持久化管理、地址映射和異地更新3個部分.

    數(shù)據(jù)持久化過程指數(shù)據(jù)寫入持久性內(nèi)存的過程.確保數(shù)據(jù)不會發(fā)生不一致性的情況,是持久性內(nèi)存系統(tǒng)需要解決的基本問題,其中最重要的是要保證寫入時的順序性.部分現(xiàn)有工作都將持久性內(nèi)存系統(tǒng)數(shù)據(jù)寫回粒度設(shè)定為緩存行粒度,然而寫入時數(shù)據(jù)如果不能完全占用緩存行,便會造成帶寬的浪費(fèi),這對于持久化管理來說也是一種額外的開銷,因此以緩存行粒度寫入(64 B)是最為高效的方式.

    本文提出的持久化管理方案,在內(nèi)存控制器中加入持久化緩沖區(qū)模塊,所有從緩存寫回內(nèi)存的數(shù)據(jù),都需要經(jīng)過該模塊處理后,再寫入持久性內(nèi)存.在該模塊中,數(shù)據(jù)主要經(jīng)過了標(biāo)記、組合和寫回3個步驟:1)數(shù)據(jù)到達(dá)持久化緩沖區(qū)后,將為其添加元數(shù)據(jù),這一過程被稱為標(biāo)記.后續(xù)操作可以根據(jù)標(biāo)記判斷,數(shù)據(jù)即將寫入持久性內(nèi)存的哪一個區(qū)域,以及寫入的先后順序.2)標(biāo)記后的數(shù)據(jù)將被重新組合成緩存行,這個步驟的主要目的是為了充分利用寫入帶寬,減少寫入的次數(shù),提升吞吐量,如圖4所示.3)按照既定的順序,當(dāng)緩存行準(zhǔn)備好時,持久化緩沖區(qū)將把數(shù)據(jù)按照順序,基于硬件的機(jī)制將數(shù)據(jù)刷新到持久性內(nèi)存的指定區(qū)域.

    Fig. 4 Principle of combination圖4 組合原理圖

    寫入持久性內(nèi)存時,根據(jù)數(shù)據(jù)的元數(shù)據(jù),可以判斷持久性內(nèi)存即將寫入的區(qū)域.本文實(shí)現(xiàn)的思路并沒有將原始數(shù)據(jù)區(qū)域和更新數(shù)據(jù)區(qū)域從物理地址角度進(jìn)行劃分,而是通過元數(shù)據(jù)區(qū)分?jǐn)?shù)據(jù)寫入的區(qū)域.如算法1所示,首先檢查緩存行狀態(tài).如果無緩存行,則初始化新的緩存行;反之,如果緩存行還沒裝滿,則將數(shù)據(jù)繼續(xù)加入緩存行,等待緩存行裝滿后,再遍歷緩存行里的數(shù)據(jù).接著,根據(jù)數(shù)據(jù)的元數(shù)據(jù)的原始地址區(qū)域,在映射表中查找該條目的更新次數(shù).如果更新次數(shù)是奇數(shù),則更新的是更新地址區(qū)域的數(shù)據(jù);反之,如果更新次數(shù)是偶數(shù),則更新的是原始地址區(qū)域的數(shù)據(jù).最后,緩存行刷新結(jié)束后,將會向系統(tǒng)返回一個刷新結(jié)束的信號,數(shù)據(jù)持久化的事務(wù)提交完成.

    算法1.數(shù)據(jù)持久化算法.

    輸入:已標(biāo)記好的數(shù)據(jù);

    輸出:刷新結(jié)束.

    ① while緩存行大小<64 B do

    ② if緩存行大小=0 then

    ③ 初始化新的緩存行;

    ④ end if

    ⑤ 將標(biāo)記好的數(shù)據(jù)加入緩存行;

    ⑥ 緩存行大小+8;

    ⑦ end while

    ⑧ for each數(shù)據(jù)in緩存行do

    ⑨ 查找映射表?xiàng)l目;

    ⑩ if更新次數(shù)%2=1 then

    本文使用散列表生成映射表,如圖5所示.它包含了數(shù)據(jù)的原始區(qū)域地址、更新區(qū)域地址和更新次數(shù).它會隨著數(shù)據(jù)的更新和垃圾回收機(jī)制的執(zhí)行,不斷變化大小,但實(shí)際上在內(nèi)存控制器中只占用極少的空間.在系統(tǒng)崩潰時,這一模塊會隨著故障一起丟失.而在系統(tǒng)恢復(fù)時,映射表會根據(jù)持久性內(nèi)存中的新舊2個版本數(shù)據(jù)的映射關(guān)系再重建起來.

    本文提出的故障一致性保證的方案以異地更新為基礎(chǔ),它指的是數(shù)據(jù)在寫入持久性內(nèi)存時,不更新原始地址上的數(shù)據(jù),而在新的地址寫入.在EAOOP機(jī)制下,每一次數(shù)據(jù)更新后的寫入?yún)^(qū)域?qū)τ诔志眯詢?nèi)存來說是可預(yù)見的.如圖6所示,在數(shù)據(jù)第1次更新前或垃圾回收后,持久性內(nèi)存中的數(shù)據(jù)可能只有原始數(shù)據(jù)區(qū)域中的1個版本(A0).數(shù)據(jù)在第1次更新后和垃圾回收前,或系統(tǒng)恢復(fù)后,持久性內(nèi)存中可能同時存在當(dāng)前數(shù)據(jù)的2個版本,即新版本(A1)和舊版本(A0).當(dāng)該數(shù)據(jù)再一次更新時,最新版本(A2)將會更新舊版本(A0),此時持久性內(nèi)存中留下的當(dāng)前數(shù)據(jù)的版本變成了最新版本(A2)和較新版本(A1).這種雙版本共存的狀態(tài)不會持續(xù)太長時間,因?yàn)槌志眯詢?nèi)存目前價格較高,考慮到空間使用效率,垃圾回收之后會對更新數(shù)據(jù)區(qū)域的數(shù)據(jù)進(jìn)行處理,數(shù)據(jù)將回到只有1個版本(AN)留存的狀態(tài).

    Fig. 5 Structure of mapping table圖5 映射表結(jié)構(gòu)圖

    Fig. 6 Principle of out-of-place update mechanism圖6 異地更新機(jī)制原理圖

    3.2 輕量級垃圾回收

    本文提出的EAOOP機(jī)制將持久性內(nèi)存劃分為原始地址區(qū)域和更新地址區(qū)域2個區(qū)域,在每次寫回時將數(shù)據(jù)更新至其中一個區(qū)域,這意味著在一段時間內(nèi)這2個區(qū)域都分別保存了同一數(shù)據(jù)的不同版本,這一機(jī)制雖然保證了故障發(fā)生后,系統(tǒng)可以借助更新地址區(qū)域中的數(shù)據(jù)將持久性內(nèi)存中的數(shù)據(jù)恢復(fù)至一致性,但也一定程度上浪費(fèi)了持久性內(nèi)存的空間,在數(shù)據(jù)不斷更新的情況下是非常不經(jīng)濟(jì)的.

    考慮到推廣應(yīng)用需求,現(xiàn)階段在持久性內(nèi)存的研究中,還需要盡可能地提高內(nèi)存空間的利用效率,同時減少對內(nèi)存壽命產(chǎn)生影響的操作.

    本文設(shè)置被垃圾回收的數(shù)據(jù)是更新數(shù)據(jù)區(qū)域的數(shù)據(jù),因此原始數(shù)據(jù)區(qū)域的數(shù)據(jù)在垃圾回收之后,可以被系統(tǒng)當(dāng)作從未更新過的數(shù)據(jù)來使用.由于數(shù)據(jù)在寫入持久性內(nèi)存前,已經(jīng)在映射表中記錄了本次更新的次數(shù),因此可以根據(jù)更新次數(shù),以確定持久性內(nèi)存系統(tǒng)中垃圾回收機(jī)制開始的時機(jī).

    更新次數(shù)的選取只能是偶數(shù),因?yàn)檫@時最新版本的數(shù)據(jù)寫入的是原始數(shù)據(jù)區(qū)域,而更新數(shù)據(jù)區(qū)域中的數(shù)據(jù)是較舊版本的,因此這個時候更新數(shù)據(jù)區(qū)域中的數(shù)據(jù)可以被看作是無效數(shù)據(jù).而更新次數(shù)在垃圾回收中的閾值如果過大,持久性內(nèi)存系統(tǒng)將容納過多的數(shù)據(jù),顯然違背了高效利用內(nèi)存空間的初衷.如果過小,垃圾回收將進(jìn)行得過于頻繁,雖然對系統(tǒng)整體性能不會造成影響,但可以預(yù)見的是,這對持久性內(nèi)存的性能本身也是一種消耗.因此,本文將垃圾回收機(jī)制下的更新次數(shù)閾值設(shè)置為4,以確保垃圾回收機(jī)制在持久性內(nèi)存中高效進(jìn)行.

    如算法2所示,輕量級垃圾回收的實(shí)現(xiàn)較為簡單.當(dāng)映射表的條目更新后,如果該條目的更新次數(shù)達(dá)到閾值,則記錄映射表該條目的更新數(shù)據(jù)區(qū)域地址.接著,將更新數(shù)據(jù)區(qū)域地址上的數(shù)據(jù)刪除.然后,刪除映射表上該條目的記錄.最后,向系統(tǒng)返回該數(shù)據(jù)的垃圾回收已經(jīng)結(jié)束.

    算法2.垃圾回收算法.

    輸入:持久性內(nèi)存中的數(shù)據(jù);

    輸出:垃圾回收結(jié)束.

    ① 映射表?xiàng)l目更新;

    ② if更新次數(shù)=閾值then

    ③ 記錄映射表該條目的更新數(shù)據(jù)區(qū)域地址;

    ④ 刪除更新數(shù)據(jù)區(qū)域地址上的數(shù)據(jù);

    ⑤ 刪除該條目;

    ⑥ end if

    ⑦ return垃圾回收結(jié)束.

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

    在本文提出的EAOOP機(jī)制下,以數(shù)據(jù)寫入持久性內(nèi)存時系統(tǒng)發(fā)生故障為例.當(dāng)故障發(fā)生后,持久性內(nèi)存中可能存在同一數(shù)據(jù)的2個版本,分別分布在原始數(shù)據(jù)區(qū)域和更新數(shù)據(jù)區(qū)域2個區(qū)域中.其中某一個區(qū)域的數(shù)據(jù)更舊,在這次故障發(fā)生前一段時間內(nèi)數(shù)據(jù)是沒有變化的,而另一個區(qū)域中的數(shù)據(jù)在這次故障中受到了影響,可能存在部分更新的情況.另外,在內(nèi)存控制器中的持久化緩沖區(qū)和映射表在故障中完全丟失,因此可能存在故障發(fā)生后還沒有提交的事務(wù),同時映射關(guān)系目前已經(jīng)不存在了.

    假設(shè)當(dāng)前持久性內(nèi)存中還存在未提交的事務(wù)產(chǎn)生的數(shù)據(jù),無論受到故障直接影響的是原始數(shù)據(jù)區(qū)域或更新數(shù)據(jù)區(qū)域,由于持久化緩沖區(qū)的數(shù)據(jù)在故障中已經(jīng)丟失,這部分?jǐn)?shù)據(jù)都應(yīng)當(dāng)被清除.對于已提交的事務(wù)產(chǎn)生的數(shù)據(jù),假設(shè)當(dāng)前受到故障直接影響的區(qū)域是原始數(shù)據(jù)區(qū)域,那么可以認(rèn)為當(dāng)前數(shù)據(jù)的狀態(tài),是經(jīng)過本文提出的輕量級垃圾回收機(jī)制處理后的數(shù)據(jù).由于其本身也是一致性的,此時更新數(shù)據(jù)區(qū)域中的數(shù)據(jù)就可以直接被刪除了.假設(shè)當(dāng)前受到故障直接影響的區(qū)域是更新數(shù)據(jù)區(qū)域,這部分?jǐn)?shù)據(jù)在原始數(shù)據(jù)區(qū)域中有更舊的版本.對于這種情況,在HOOP機(jī)制中是將OOP區(qū)域中數(shù)據(jù)打包后寫回到Home區(qū)域,但是這種方法也會對持久性內(nèi)存產(chǎn)生過量的寫,會加劇寫放大問題.而本文提出的EAOOP機(jī)制更加靈活,可以通過重建映射表后重新加入映射關(guān)系將系統(tǒng)恢復(fù)至一致性.

    由于持久化過程是由持久化緩沖區(qū)進(jìn)行分配并寫入持久性內(nèi)存的,而持久化緩沖區(qū)中的數(shù)據(jù)在故障中已經(jīng)丟失,因此判斷故障發(fā)生時受到最直接影響的區(qū)域,依靠的是已寫入內(nèi)存的數(shù)據(jù)的元數(shù)據(jù)中的事務(wù)編號.對于同一數(shù)據(jù),事務(wù)編號更大的區(qū)域被認(rèn)為是版本更新的區(qū)域,即在故障發(fā)生時受到直接影響的區(qū)域.在EAOOP機(jī)制下,原始數(shù)據(jù)區(qū)域中的數(shù)據(jù),在任何時刻都多于或等于更新數(shù)據(jù)區(qū)域.從更簡單地實(shí)現(xiàn)系統(tǒng)恢復(fù)的角度,應(yīng)該以更新數(shù)據(jù)區(qū)域中的數(shù)據(jù)為主進(jìn)行恢復(fù),通過對其中的數(shù)據(jù)及其元數(shù)據(jù)進(jìn)行遍歷并建立散列表,表中包含原始數(shù)據(jù)區(qū)域地址、更新數(shù)據(jù)區(qū)域地址和事務(wù)編號(TxID)等標(biāo)記信息,幫助系統(tǒng)恢復(fù)機(jī)制高效地比較數(shù)據(jù)版本和執(zhí)行恢復(fù)操作.

    基于上述分析,本文提出的EAOOP機(jī)制下系統(tǒng)恢復(fù)的實(shí)現(xiàn)如算法3所示.首先對更新數(shù)據(jù)區(qū)域中的數(shù)據(jù)進(jìn)行遍歷,將它們的元數(shù)據(jù)的原始數(shù)據(jù)區(qū)域地址、更新數(shù)據(jù)區(qū)域地址和事務(wù)編號記錄在散列表中.接著進(jìn)行恢復(fù)操作,如果該記錄的事務(wù)編號比對應(yīng)原始數(shù)據(jù)區(qū)域數(shù)據(jù)的事務(wù)編號更大,則說明該記錄對應(yīng)的數(shù)據(jù)是更新版本的數(shù)據(jù),那么就要保留當(dāng)前更新數(shù)據(jù)區(qū)域數(shù)據(jù).同時將元數(shù)據(jù)中的映射關(guān)系寫入重建后的映射表,并將其中的更新次數(shù)設(shè)置為1.反之,則直接刪除更新數(shù)據(jù)區(qū)域?qū)?yīng)的數(shù)據(jù).如果此時所有恢復(fù)已經(jīng)結(jié)束,則刪除記錄了遍歷更新數(shù)據(jù)區(qū)域數(shù)據(jù)的散列表.反之,則繼續(xù)執(zhí)行下一條目的恢復(fù)程序直到結(jié)束.

    算法3.系統(tǒng)恢復(fù)算法.

    輸入:持久性內(nèi)存數(shù)據(jù);

    輸出:恢復(fù)結(jié)束.

    ① 初始化恢復(fù)散列表;

    ② 初始化映射表;

    ③ for each數(shù)據(jù)in更新數(shù)據(jù)區(qū)域do

    ④ 在恢復(fù)散列表中記錄當(dāng)前數(shù)據(jù)元數(shù)據(jù)的原始數(shù)據(jù)區(qū)域地址、更新數(shù)據(jù)區(qū)域地址和事務(wù)編號;

    ⑤ end for

    ⑥ for each條目in恢復(fù)散列表do

    ⑦ if原始數(shù)據(jù)區(qū)域地址中的數(shù)據(jù)存在 then

    ⑧ if事務(wù)編號<原始數(shù)據(jù)區(qū)域數(shù)據(jù)事務(wù)編號then

    ⑨ 刪除更新數(shù)據(jù)區(qū)域數(shù)據(jù);

    Fig. 7 Write flow of EAOOP圖7 EAOOP機(jī)制寫流程圖

    3.4 服務(wù)讀寫流程

    為了服務(wù)一個內(nèi)存寫請求,EAOOP機(jī)制實(shí)現(xiàn)的寫流程如圖7所示.首先,數(shù)據(jù)會加入持久化緩沖區(qū).接著,查看映射表中是否有該數(shù)據(jù)的記錄.如果記錄存在,則將更新次數(shù)加1;如沒有記錄,則首先要在更新區(qū)域中為該數(shù)據(jù)指定一個更新的地址.同時,在映射表中創(chuàng)建一條新的記錄,填入新的映射關(guān)系,并將更新次數(shù)設(shè)置為1.然后,持久化緩沖區(qū)會為數(shù)據(jù)添加元數(shù)據(jù),并為這些數(shù)據(jù)指定更新區(qū)域的地址.完成這些操作后,數(shù)據(jù)和元數(shù)據(jù)將被重新組合至緩存行中.當(dāng)緩存行中的數(shù)據(jù)數(shù)量沒有達(dá)到閾值時,將會繼續(xù)重復(fù)執(zhí)行上述操作.當(dāng)緩存行中的數(shù)據(jù)達(dá)到閾值后,就會執(zhí)行寫入持久性內(nèi)存的操作.至此,寫請求完成.

    為了服務(wù)一個內(nèi)存讀請求,本文設(shè)計的讀流程相對于寫更為簡單,如圖8所示.當(dāng)處理器的讀請求在緩存中沒有命中時,讀請求將會首先到達(dá)內(nèi)存控制器中的映射表.如果在映射表中無法查到想要訪問的數(shù)據(jù),那么讀請求會前往持久性內(nèi)存中的原始區(qū)域,也就是請求本身的地址讀取相應(yīng)的數(shù)據(jù);反之,如果查到了想要訪問的數(shù)據(jù)的記錄,那么將會根據(jù)更新次數(shù)來判斷最新版本的數(shù)據(jù)所處的位置.如果更新次數(shù)為偶數(shù),則不用變動請求本身的地址,直接前往原始區(qū)域,也就是請求本身的地址讀取相應(yīng)的數(shù)據(jù);如果更新次數(shù)為奇數(shù),則前往映射表中該數(shù)據(jù)對應(yīng)的更新區(qū)域的地址讀取數(shù)據(jù)相應(yīng)的數(shù)據(jù).至此,讀請求完成.

    Fig. 8 Read flow of EAOOP圖8 EAOOP機(jī)制讀流程圖

    4 實(shí) 驗(yàn)

    本節(jié)通過微基準(zhǔn)和真實(shí)應(yīng)用,對EAOOP機(jī)制及其他對比系統(tǒng)的性能進(jìn)行測試,包括事務(wù)處理吞吐量、總線延遲和寫數(shù)量等測試,并分析其性能表現(xiàn).

    4.1 實(shí)驗(yàn)平臺

    本文選取的對比系統(tǒng)是undo log,redo log,HOOP,EAOOP等,它們都是在McSimA+[28]這一模擬器上實(shí)現(xiàn),并進(jìn)行測試.模擬器的主要配置設(shè)置如表1所示.持久性內(nèi)存的相關(guān)時序特征如tRCD,tCL等參數(shù)設(shè)置與PCM相同.

    Table 1 Configuration of Persistent Memory Simulator表1 持久性內(nèi)存模擬器配置表

    本文采用的測試基準(zhǔn)程序分為微基準(zhǔn)程序和真實(shí)應(yīng)用程序,如表2所示.微基準(zhǔn)程序包含了Queue,Vector,Rbtree,Hashtable這4種通用的微基準(zhǔn)測試集.在本文的實(shí)驗(yàn)中,主要通過模擬Insert和Update的操作以測試系統(tǒng)性能.

    Table 2 Configuration of Evaluation Benchmarks表2 測試基準(zhǔn)程序配置表

    本文選取的真實(shí)應(yīng)用程序是STREAM[29]和PARSEC-3.0[30].STREAM是由美國弗吉尼亞大學(xué)開發(fā)的一種內(nèi)存系統(tǒng)基準(zhǔn)測試工具,本文主要針對Add操作進(jìn)行了測試.PARSEC-3.0是由美國普林斯頓大學(xué)開發(fā)的一種經(jīng)典的內(nèi)存系統(tǒng)基準(zhǔn)測試套件,本文采用了streamcluster進(jìn)行測試.

    為了使測試結(jié)果簡潔直觀,本文以undo log為基線,對所有的測試結(jié)果及其圖片進(jìn)行了歸一化處理.

    4.2 微基準(zhǔn)程序性能

    1) 事務(wù)處理吞吐量

    本文提出的EAOOP機(jī)制所應(yīng)用的系統(tǒng)相對于undo log,redo log,HOOP機(jī)制各自系統(tǒng)的事務(wù)處理吞吐量平均分別提升了95.5%,71.2%,9.6%.因?yàn)閡ndo log需要寫入大量的日志,而持久化順序保證使得寫回的次數(shù)更多,帶寬沒有得到充分地利用,事務(wù)處理吞吐量也因此最低.而redo log的持久化順序保證雖然沒有undo log那么嚴(yán)格,但是也因?yàn)槿罩镜拇嬖冢仨氃诟聰?shù)據(jù)的同時向持久性內(nèi)存中寫入大量的日志,總線上下一次更新的請求也因此受到了影響,事務(wù)處理吞吐量也因此不高.HOOP機(jī)制通過異地更新機(jī)制而避免了向持久性內(nèi)存中寫入過量的日志等內(nèi)容,同時在數(shù)據(jù)寫回前將數(shù)據(jù)打包成了2條緩存行,保證了寫入的帶寬,但由于異地更新而引入的垃圾回收機(jī)制在執(zhí)行過程中,后續(xù)的請求將無法訪問正在被執(zhí)行的數(shù)據(jù),只能等待垃圾回收結(jié)束以后,才能從Home區(qū)域中訪問最新版本的數(shù)據(jù),這對于系統(tǒng)的事務(wù)處理吞吐量也產(chǎn)生了一定的影響.EAOOP機(jī)制解耦了系統(tǒng)執(zhí)行與垃圾回收之間的關(guān)系,當(dāng)后續(xù)請求訪問最新版本數(shù)據(jù)時,正在執(zhí)行垃圾回收進(jìn)程的是較舊版本的數(shù)據(jù),同時在寫入時采用了數(shù)據(jù)重組寫回技術(shù),充分地利用了寫回帶寬,因此系統(tǒng)的事務(wù)處理吞吐量相對更高.

    Fig. 9 Transaction throughput on micro-benchmarks圖9 微基準(zhǔn)下事務(wù)處理吞吐量圖

    2) 總線延遲

    本文提出的EAOOP機(jī)制所應(yīng)用的系統(tǒng)相對于undo log,redo log,HOOP機(jī)制各自系統(tǒng)的總線延遲平均分別減少了46.8%,28.8%,3.9%.因?yàn)閡ndo log需要嚴(yán)格的持久化順序保證,數(shù)據(jù)寫入持久性內(nèi)存必須等待日志寫入的事務(wù)提交后才能進(jìn)行,由于持久性內(nèi)存寫延遲顯著,總線延遲也因此最高.而redo log只需要保證持久化過程中,日志先提交即可更新下一次數(shù)據(jù),總線延遲因此相較undo log更低一些.HOOP機(jī)制在內(nèi)存控制器中,通過OOP緩沖區(qū)對數(shù)據(jù)的打包,以及內(nèi)存切片內(nèi)部數(shù)據(jù)塊之間的連接,實(shí)現(xiàn)了對持久化順序性的保證,因此總線延遲相對較少,但是數(shù)據(jù)必須要等待垃圾回收的結(jié)束才能寫回到Home區(qū)域,這一階段對總線的占用以及讀請求的等待增加了其總線延遲.本文提出的EAOOP機(jī)制首先是將持久化順序性保證在持久化緩沖區(qū)中生成緩存行時就完成了,避免了反復(fù)的寫入,以致于增加總線上的負(fù)擔(dān).其次,對于讀請求只需要在映射表中查詢1次就可確定讀取地址,而非HOOP機(jī)制中需要在映射表和寫回緩沖區(qū)中多次尋址.同時,垃圾回收機(jī)制的執(zhí)行對總線上正在執(zhí)行的讀寫請求沒有影響,因此總線延遲相對更低.

    Fig. 10 Critical path latency on micro-benchmarks圖10 微基準(zhǔn)下總線延遲圖

    Fig. 11 Write number on micro-benchmarks圖11 微基準(zhǔn)下寫數(shù)量圖

    3) 寫數(shù)量

    本文提出的EAOOP機(jī)制所應(yīng)用的系統(tǒng)相對于undo log,redo log,HOOP機(jī)制各自系統(tǒng)的寫數(shù)量平均分別減少了41.5%,37.8%,18.5%.undo log和redo log由于持久化過程中需要向持久性內(nèi)存寫入日志,因此產(chǎn)生了大量的寫,其中redo log由于持久化順序性保證的需求相對不嚴(yán)格,寫入持久性內(nèi)存的次數(shù)相對沒有undo log頻繁,因此寫數(shù)量相對較少.雖然HOOP機(jī)制沒有大量日志寫入,但是其中的垃圾回收機(jī)制會將OOP區(qū)域的數(shù)據(jù)寫回到Home區(qū)域,這部分寫入依舊是較大的開銷,增加了寫數(shù)量.程序執(zhí)行過程中,EAOOP機(jī)制對于持久性內(nèi)存的寫入主要是在數(shù)據(jù)從緩存持久化到持久性內(nèi)存的階段,而其他時間對于持久性內(nèi)存是沒有寫入的,這得益于本文提出的輕量級垃圾回收機(jī)制,對于在異地更新中暫時無效的數(shù)據(jù)及時地處理,相較于HOOP機(jī)制進(jìn)一步減少了對持久性內(nèi)存寫入的數(shù)量.

    4.3 真實(shí)應(yīng)用程序性能

    1) 事務(wù)處理吞吐量

    EAOOP機(jī)制的事務(wù)處理吞吐量分別提升了14.8%,14.8%,1.9%,6.9%.STREAM的吞吐量提升效果比PARSEC更多的原因以及STREAM隨數(shù)據(jù)集增大性能提升變化不大的原因可能是由于STREAM應(yīng)用程序本身局部性較小,減少了垃圾回收機(jī)制對后續(xù)更新請求的影響,但并沒有顯著增加因此而帶來的操作數(shù).在PARSEC的小數(shù)據(jù)集上提升效果不夠明顯的原因可能是需要聚類的數(shù)據(jù)量少,需要的操作和內(nèi)存訪問也較少.隨著數(shù)據(jù)集的增大,需要的操作和訪存次數(shù)也增多,充分體現(xiàn)EAOOP機(jī)制的帶寬優(yōu)勢.

    Fig. 12 Transaction throughput on real-world applications圖12 真實(shí)應(yīng)用下事務(wù)處理吞吐量圖

    2) 總線延遲

    EAOOP機(jī)制的總線延遲在真實(shí)應(yīng)用程序測試集上分別減少了14.1%,13.5%,0.6%,7.8%.在PARSEC上運(yùn)行小數(shù)據(jù)集時,總線延遲幾乎沒有減少的原因可能是對持久性內(nèi)存的訪問較少,且局部性較高,后續(xù)請求在訪問內(nèi)存時受到HOOP中垃圾回收機(jī)制的影響也減少,因此性能提升不夠明顯.而隨著數(shù)據(jù)集的增大,后續(xù)請求增多,針對同一數(shù)據(jù)更新而被迫等待更新的數(shù)據(jù)增多,總線延遲也進(jìn)一步增大.而STREAM應(yīng)用程序得益于EAOOP機(jī)制將垃圾回收機(jī)制與總線執(zhí)行解耦,處理對持久性內(nèi)存的后續(xù)訪問更加快速,使得其總線執(zhí)行性能提升明顯.

    Fig. 13 Critical path latency on real-world applications圖13 真實(shí)應(yīng)用下總線延遲圖

    Fig. 14 Write number on real-world applications圖14 真實(shí)應(yīng)用下寫數(shù)量圖

    3) 寫數(shù)量

    EAOOP機(jī)制的寫數(shù)量分別減少了7.4%,7.5%,26.1%,28.7%.這是由于HOOP中的垃圾回收機(jī)制為持久性內(nèi)存帶來了大量的寫,對于PARSEC這種應(yīng)用程序來說,在持久性內(nèi)存中的針對同一數(shù)據(jù)的更新次數(shù)更多,因此開銷減少更多.而STREAM應(yīng)用程序的局部性較小,則垃圾回收寫入的數(shù)量在總的寫數(shù)量中的占比也更少,隨著數(shù)據(jù)集的增大,減少效果也不明顯,因此其寫數(shù)量的減少比例沒有PARSEC應(yīng)用程序大.

    從實(shí)驗(yàn)結(jié)果可以看出,無論是微基準(zhǔn)程序,還是真實(shí)應(yīng)用程序上,本文提出的EAOOP機(jī)制在事務(wù)處理吞吐量、總線延遲和寫數(shù)量等方面始終具有更低的開銷和更高的性能.平均而言,事務(wù)吞吐量增加了1.6倍,總線延遲和寫數(shù)量分別減少了27.3%和32.4%.

    5 相關(guān)工作

    本節(jié)從基于應(yīng)用、軟件和硬件的持久性內(nèi)存故障一致性保證機(jī)制3方面介紹相關(guān)工作.

    1) 應(yīng)用層面基于具體場景,如特定的硬件模塊、索引結(jié)構(gòu)、數(shù)據(jù)類型等,將軟件和硬件機(jī)制結(jié)合,開展針對性地優(yōu)化,使持久性內(nèi)存系統(tǒng)在故障一致性得到保證的前提下,性能在具體應(yīng)用方面得到顯著提升.

    Zhao等人[25]提出了一種持久性內(nèi)存系統(tǒng)Kiln.針對現(xiàn)有持久性機(jī)制對性能影響過大的問題,通過緩存設(shè)計了數(shù)據(jù)原子就地更新(atomic in-place update)和即時清理的提交(clean-on-commit)方法,降低了持久化開銷.Zhao等人[31]提出了一種混合持久性內(nèi)存管理機(jī)制FIRM.針對現(xiàn)有讀寫調(diào)度機(jī)制只適用于非持久性應(yīng)用,造成了系統(tǒng)效率低下,同時無法有效處理密集流式寫數(shù)據(jù)的問題,允許跨內(nèi)存庫更新持久內(nèi)存,同時設(shè)計了持久感知存儲調(diào)度系統(tǒng),從而顯著提高系統(tǒng)的并行性能.Kim等人[32]提出了一種基于持久性RAM的寫前日志機(jī)制NVWAL.針對持久性內(nèi)存中SQLite存在的順序控制和頻繁刷新帶來的開銷,以及內(nèi)外存粒度不匹配的問題,首先設(shè)計了寫前日志(write-ahead logging).接著,通過修改B樹結(jié)構(gòu),實(shí)現(xiàn)字節(jié)粒度差分日志,減少了日志I/O開銷.然后,通過用戶堆管理各個元素塊和頁的狀態(tài),減少了內(nèi)核管理的開銷.最后,設(shè)計了事務(wù)感知的存儲持久保證機(jī)制,將順序控制范圍擴(kuò)大到一組寫,減少了持久化開銷.Hwang等人[33]提出了一種可忍耐瞬時不一致性的B+樹.針對與緩存行粒度不匹配的故障原子寫,以及持久化過程中的順序控制開銷過高的問題,設(shè)計了一種FAST&FAIR算法.它分別實(shí)現(xiàn)了數(shù)據(jù)的就地更新(in-place update),以及無需日志記錄或?qū)憰r拷貝情況下的B+樹再平衡.同時,設(shè)計了無鎖搜索算法,隔離了讀事務(wù),以允許系統(tǒng)對同一個樹節(jié)點(diǎn)的并發(fā)訪問,從而優(yōu)化了讀寫不對稱問題.Cohen等人[34]提出了一種細(xì)粒度檢查點(diǎn)與緩存行日志結(jié)合的機(jī)制INCLL.針對持久化過程中數(shù)據(jù)更新順序保證延遲,從而導(dǎo)致總線執(zhí)行被阻礙的問題,以及檢查點(diǎn)粒度和系統(tǒng)停頓開銷過大的問題,在Masstree這一數(shù)據(jù)結(jié)構(gòu)上設(shè)計了細(xì)粒度的檢查點(diǎn).同時,將undo日志嵌入到Masstree葉節(jié)點(diǎn)的緩存行中,顯著降低了日志記錄和刷新緩存的成本.

    這一類方法的優(yōu)點(diǎn)是性能較傳統(tǒng)故障一致性保證的方法提升較大,方案更加靈活多變;缺點(diǎn)是對硬件架構(gòu)和系統(tǒng)軟件的設(shè)計與結(jié)合機(jī)制更加復(fù)雜,需要考慮更多因素,實(shí)際應(yīng)用中面向的對象具有較大的局限性.

    2) 軟件層面主要圍繞事務(wù)性內(nèi)存系統(tǒng)來開展設(shè)計,在持久性內(nèi)存系統(tǒng)中,研究者們主要依托日志、寫時復(fù)制和日志結(jié)構(gòu)等技術(shù),開展了相關(guān)的研究.

    Volos等人[26]提出了基于持久性事務(wù)內(nèi)存的系統(tǒng)Mnemosyne.針對如何創(chuàng)建和管理非易失性內(nèi)存,以及如何確保故障一致性,在內(nèi)存中設(shè)計了一個持久化區(qū)域?qū)崿F(xiàn)了對內(nèi)存的用戶模式訪問,同時設(shè)計了持久化原語pstatic支持持久性內(nèi)存編程.它的持久化內(nèi)存事務(wù)還支持創(chuàng)建和修改持久化數(shù)據(jù)結(jié)構(gòu),從而實(shí)現(xiàn)了一致性更新.Liu等人[11]提出了基于持久性事務(wù)內(nèi)存的系統(tǒng)DudeTM.針對現(xiàn)有事務(wù)的撤銷日志和重做日志中,存在的持久化內(nèi)存柵欄(mfence)保證開銷,將2種日志模式結(jié)合.同時把事務(wù)分解為3個異步操作:①在影子內(nèi)存(shadow memory)中創(chuàng)建日志并更新數(shù)據(jù);②將日志寫入持久性內(nèi)存中;③在持久性內(nèi)存中更新數(shù)據(jù).Nalli等人[35]提出了基于持久性事務(wù)內(nèi)存的系統(tǒng)HOPS.通過設(shè)計WHISPER這一持久性內(nèi)存系統(tǒng)測試基準(zhǔn)套件,得出了現(xiàn)有軟件事務(wù)性內(nèi)存系統(tǒng)的4點(diǎn)結(jié)論.同時將持久化過程中的flush和mfence操作改進(jìn)為ofence和dfence操作,減少了強(qiáng)制刷新的開銷,并實(shí)現(xiàn)了持久性和順序性的解耦,在保證一致性的同時降低了開銷.Gu等人[36]提出了基于持久性事務(wù)內(nèi)存的系統(tǒng)Pisces.針對現(xiàn)有的持久性事務(wù)內(nèi)存編程模型對實(shí)際較多的讀操作優(yōu)化較少,進(jìn)而影響讀的效率的問題,以及嚴(yán)格的持久化順序限制了并行操作,從而導(dǎo)致的擴(kuò)展性問題,提出了改進(jìn)的MVCC機(jī)制DVCC.在增加了快照隔離(snapshot isolation)的同時,減少了遍歷數(shù)據(jù)對象的開銷.同時設(shè)計了3級commit機(jī)制,將數(shù)據(jù)對象的持久化和程序執(zhí)行的過程分離,使得事務(wù)commit的效率對總線上的程序運(yùn)行不會產(chǎn)生阻塞.Krishnan等人[37]提出了基于持久性事務(wù)內(nèi)存的系統(tǒng)TimeStone.針對現(xiàn)有持久性事務(wù)內(nèi)存存在的寫放大問題和擴(kuò)展性瓶頸,設(shè)計了TOC Logging機(jī)制.它分別在易失性內(nèi)存中記錄事務(wù)日志(TLog),在非易失性內(nèi)存中記錄操作(OLog)和檢查點(diǎn)(CLog),從而減小了日志的體積和總的寫入開銷.同時引入了MVCC機(jī)制,允許事務(wù)在一定范圍內(nèi)并行運(yùn)行,擴(kuò)大了系統(tǒng)的運(yùn)行規(guī)模.

    軟件層面的方案總是會為持久性內(nèi)存帶來過量的寫,從追求更高的性能、更低的開銷的角度來說,這一類型的方案代價較大.

    3) 硬件層面主要是采用了軟件透明的思想,即在不需要修改應(yīng)用程序的情況下,為其提供由持久性內(nèi)存系統(tǒng)支持的故障一致性保證.

    Kannan等人[38]提出了一種軟件透明的混合內(nèi)存系統(tǒng)NVM-Checkpointing.通過將操作系統(tǒng)中的檢查點(diǎn)技術(shù)引入到持久性內(nèi)存系統(tǒng)中,同時采用Shadow Buffering將部分?jǐn)?shù)據(jù)緩存到DRAM中,從而加快訪存速度,并解決了NVM寫入慢的問題.此外,通過引入虛擬機(jī)遷移中常用的Pre-Copy機(jī)制,將DRAM中的部分?jǐn)?shù)據(jù),先于檢查點(diǎn)創(chuàng)建時間點(diǎn)寫入檢查點(diǎn)區(qū)域,從而緩解了檢查點(diǎn)帶來的系統(tǒng)暫停.Ren等人[27]提出了一種軟件透明的混合內(nèi)存系統(tǒng)ThyNVM.針對頁粒度和塊粒度、非易失和易失性內(nèi)存的性能差異,設(shè)計了雙模式檢查點(diǎn)(dual-scheme checkpointing)技術(shù),減少了因檢查點(diǎn)產(chǎn)生的系統(tǒng)停頓.同時設(shè)計了協(xié)調(diào)不同粒度模式、轉(zhuǎn)換數(shù)據(jù)狀態(tài)的管理方法,使得系統(tǒng)始終可以自動權(quán)衡最佳模式.Wei等人[39]提出了一種軟件透明的混合內(nèi)存系統(tǒng)NICO.針對檢查點(diǎn)創(chuàng)建和數(shù)據(jù)對象映射帶來的性能開銷問題,以及傳統(tǒng)持久化方法帶來的性能浪費(fèi)問題,在持久化內(nèi)存系統(tǒng)中設(shè)計了持久化緩沖區(qū),將持久化操作放在后臺進(jìn)行.同時設(shè)計了輕量級檢查點(diǎn)機(jī)制,加之寫合并機(jī)制,只需要刷新和修改小部分?jǐn)?shù)據(jù)即可實(shí)現(xiàn)一致性保證.Nguyen等人[40]提出了一種軟件透明的持久性內(nèi)存系統(tǒng)PiCL.針對現(xiàn)有軟件事務(wù)接口、持久化對象和多版本管理的性能損耗、日志隨機(jī)訪問,從而產(chǎn)生NVM開銷過大和局部性較低的問題,設(shè)計了多版本undo日志方法,允許多個時間周期并行執(zhí)行undo日志.同時,設(shè)計了緩存驅(qū)動的日志機(jī)制,以優(yōu)化傳統(tǒng)的日志讀寫順序.最后,通過異步緩存掃描方法將機(jī)制整合,減少了一致性保證開銷.Cai等人[13]提出了一種軟件透明的混合內(nèi)存系統(tǒng)HOOP.針對現(xiàn)有軟件事務(wù)方法在NVM上的大量寫入和帶寬利用等問題,設(shè)計了異地更新機(jī)制.它利用OOP緩沖區(qū),將更新后的數(shù)據(jù)打包后寫入NVM,減小了數(shù)據(jù)體積并增加NVM帶寬利用率.同時設(shè)計了OOP區(qū)域和Home區(qū)域,利用垃圾回收機(jī)制更新持久性內(nèi)存中的數(shù)據(jù),保證了故障一致性.

    硬件層面的方案雖然依賴于架構(gòu)的特性,但更加靈活,可以充分發(fā)揮持久性內(nèi)存的優(yōu)點(diǎn),也能彌補(bǔ)軟件層面對順序性和持久化過程改進(jìn)能力不足的問題,同時也因其不需要用戶層面的應(yīng)用程序?qū)iT去適配接口而減輕了程序員的壓力,更具研究價值和應(yīng)用空間.

    6 結(jié) 論

    現(xiàn)有研究中,針對持久性內(nèi)存系統(tǒng)的故障一致性保證機(jī)制,還存在時間和空間維度的不足,在未來持久性內(nèi)存系統(tǒng)有望大規(guī)模推廣應(yīng)用的前景下,還存在一定的優(yōu)化空間.針對這一問題,本文提出了耐久性感知的持久性內(nèi)存異地更新機(jī)制,通過耐久性感知的內(nèi)存管理機(jī)制,保證了系統(tǒng)的故障一致性,通過輕量級垃圾回收機(jī)制,進(jìn)一步減少了系統(tǒng)開銷和空間浪費(fèi).此外,本文還設(shè)計了系統(tǒng)恢復(fù)機(jī)制和讀寫流程.測試結(jié)果表明,EAOOP機(jī)制下的系統(tǒng)從時間維度和空間維度優(yōu)化了現(xiàn)有研究,具有更高的性能和更少的開銷.未來,將考慮通過基于Optane系列持久性內(nèi)存的真實(shí)硬件測試,進(jìn)一步驗(yàn)證該機(jī)制的優(yōu)異性能.

    作者貢獻(xiàn)聲明:蔡長興提出了算法思路、實(shí)驗(yàn)并撰寫論文;杜亞娟指導(dǎo)研究方案設(shè)計并修改論文;周泰宇協(xié)助設(shè)計實(shí)驗(yàn)方案.

    猜你喜歡
    持久性日志內(nèi)存
    一名老黨員的工作日志
    華人時刊(2021年13期)2021-11-27 09:19:02
    湖北省持久性有機(jī)物(POPs)產(chǎn)排特性分析
    化工管理(2021年7期)2021-05-13 00:44:56
    扶貧日志
    心聲歌刊(2020年4期)2020-09-07 06:37:14
    具有授粉互惠關(guān)系的非自治周期植物傳粉系統(tǒng)的持久性
    “春夏秋冬”的內(nèi)存
    游學(xué)日志
    一類離散Schoner競爭模型的持久性
    持久性發(fā)疹性斑狀毛細(xì)血管擴(kuò)張一例
    一種基于粗集和SVM的Web日志挖掘模型
    基于內(nèi)存的地理信息訪問技術(shù)
    亚洲av成人精品一二三区| 99热网站在线观看| 欧美变态另类bdsm刘玥| 又黄又爽又刺激的免费视频.| 18禁裸乳无遮挡免费网站照片| 天美传媒精品一区二区| 亚洲精品国产成人久久av| 午夜激情久久久久久久| 亚洲国产欧美人成| 搡老妇女老女人老熟妇| 亚州av有码| 国产av不卡久久| 成人特级av手机在线观看| 亚洲精品色激情综合| 欧美另类一区| 在线观看一区二区三区| 中文欧美无线码| 婷婷色麻豆天堂久久| 日韩欧美 国产精品| 亚洲精品,欧美精品| 亚洲精品aⅴ在线观看| 国产精品综合久久久久久久免费| 汤姆久久久久久久影院中文字幕 | 伊人久久国产一区二区| 观看免费一级毛片| 别揉我奶头 嗯啊视频| 中文字幕制服av| 亚洲国产成人一精品久久久| 成年女人在线观看亚洲视频 | 中文字幕久久专区| 中文字幕久久专区| 日韩在线高清观看一区二区三区| 久久精品国产鲁丝片午夜精品| 国产精品国产三级国产专区5o| 啦啦啦啦在线视频资源| 国产精品蜜桃在线观看| 精品久久久久久成人av| 成人二区视频| 女的被弄到高潮叫床怎么办| 午夜老司机福利剧场| 日韩 亚洲 欧美在线| 成人性生交大片免费视频hd| 日本欧美国产在线视频| 亚洲综合精品二区| 久久97久久精品| 亚洲伊人久久精品综合| a级毛色黄片| 亚洲精品乱码久久久v下载方式| 国产成人精品一,二区| 亚洲三级黄色毛片| 久久久精品免费免费高清| 亚洲国产日韩欧美精品在线观看| 国产午夜精品一二区理论片| 夜夜爽夜夜爽视频| 一级毛片aaaaaa免费看小| 人人妻人人看人人澡| 国产 一区 欧美 日韩| 国产伦精品一区二区三区四那| 亚洲丝袜综合中文字幕| 亚洲三级黄色毛片| 国产在线男女| 久久鲁丝午夜福利片| 在线天堂最新版资源| 欧美三级亚洲精品| 精品一区二区三区人妻视频| 天天躁夜夜躁狠狠久久av| 精品人妻视频免费看| 国产精品av视频在线免费观看| 国产精品人妻久久久影院| 又粗又硬又长又爽又黄的视频| 自拍偷自拍亚洲精品老妇| 日韩三级伦理在线观看| 丰满乱子伦码专区| av在线播放精品| 亚洲成人久久爱视频| 精品久久久久久成人av| 赤兔流量卡办理| 国产黄片美女视频| 夜夜看夜夜爽夜夜摸| 日日啪夜夜撸| 国产精品无大码| 欧美bdsm另类| 日本猛色少妇xxxxx猛交久久| 亚洲精品日韩av片在线观看| 亚洲国产精品sss在线观看| 婷婷色麻豆天堂久久| 精品国产露脸久久av麻豆 | 亚洲av二区三区四区| 人妻一区二区av| 美女被艹到高潮喷水动态| 九九爱精品视频在线观看| 国产中年淑女户外野战色| 毛片女人毛片| 成年免费大片在线观看| 麻豆av噜噜一区二区三区| 国产91av在线免费观看| 精品久久久久久久久久久久久| 久久久久久久久久久丰满| 亚洲精品一区蜜桃| 国产激情偷乱视频一区二区| 日韩在线高清观看一区二区三区| 人妻制服诱惑在线中文字幕| 国产精品一区二区性色av| 深夜a级毛片| 亚洲内射少妇av| 两个人视频免费观看高清| 麻豆精品久久久久久蜜桃| 久久这里有精品视频免费| 内地一区二区视频在线| 日韩国内少妇激情av| 男女边摸边吃奶| 草草在线视频免费看| 啦啦啦中文免费视频观看日本| 午夜爱爱视频在线播放| 最近最新中文字幕大全电影3| 国产精品人妻久久久久久| av网站免费在线观看视频 | 国产 一区精品| 亚洲欧洲日产国产| 亚洲综合精品二区| 亚洲精品456在线播放app| 日韩视频在线欧美| 秋霞伦理黄片| 国产又色又爽无遮挡免| 夜夜看夜夜爽夜夜摸| 精华霜和精华液先用哪个| 精品久久国产蜜桃| 午夜老司机福利剧场| 午夜爱爱视频在线播放| 免费人成在线观看视频色| av网站免费在线观看视频 | 欧美3d第一页| h日本视频在线播放| 97人妻精品一区二区三区麻豆| 久久97久久精品| 国产久久久一区二区三区| 欧美区成人在线视频| 国产 亚洲一区二区三区 | 亚洲aⅴ乱码一区二区在线播放| 国产精品蜜桃在线观看| 插逼视频在线观看| 亚洲熟妇中文字幕五十中出| 在线免费观看不下载黄p国产| 成人午夜精彩视频在线观看| ponron亚洲| a级毛片免费高清观看在线播放| 久久精品夜色国产| 久久久久免费精品人妻一区二区| 日韩伦理黄色片| 嫩草影院入口| 日本一本二区三区精品| 中文字幕av成人在线电影| 最近视频中文字幕2019在线8| 国产老妇伦熟女老妇高清| 极品教师在线视频| 国产精品不卡视频一区二区| 成人毛片60女人毛片免费| 亚洲av男天堂| av在线播放精品| 天堂俺去俺来也www色官网 | 日韩av不卡免费在线播放| 国产成人免费观看mmmm| 日韩成人av中文字幕在线观看| 国产麻豆成人av免费视频| 丝袜喷水一区| 插逼视频在线观看| 日韩精品有码人妻一区| 亚洲国产欧美人成| 日韩亚洲欧美综合| 午夜精品一区二区三区免费看| 全区人妻精品视频| 国产男人的电影天堂91| 色视频www国产| 人人妻人人澡人人爽人人夜夜 | 亚洲国产精品国产精品| 中文天堂在线官网| 午夜亚洲福利在线播放| 高清在线视频一区二区三区| 2022亚洲国产成人精品| 亚洲精品影视一区二区三区av| 亚洲在线观看片| 亚洲精品日韩在线中文字幕| 欧美日韩国产mv在线观看视频 | 国产一区有黄有色的免费视频 | 一本一本综合久久| 国产午夜精品论理片| 日韩精品有码人妻一区| 精品人妻熟女av久视频| 久久这里有精品视频免费| 久久久亚洲精品成人影院| 黑人高潮一二区| 成人无遮挡网站| 国产精品一区二区性色av| 97人妻精品一区二区三区麻豆| 中文精品一卡2卡3卡4更新| 免费观看性生交大片5| 免费在线观看成人毛片| 在线播放无遮挡| 3wmmmm亚洲av在线观看| 美女内射精品一级片tv| 久久精品国产鲁丝片午夜精品| 美女脱内裤让男人舔精品视频| 黄片wwwwww| 国模一区二区三区四区视频| 尤物成人国产欧美一区二区三区| av福利片在线观看| av免费在线看不卡| 日韩亚洲欧美综合| 中文字幕久久专区| 日韩精品青青久久久久久| 91久久精品国产一区二区三区| av免费在线看不卡| 亚洲国产高清在线一区二区三| 中文字幕av在线有码专区| 亚洲乱码一区二区免费版| 偷拍熟女少妇极品色| 亚洲精品中文字幕在线视频 | 中文在线观看免费www的网站| 精品一区二区三区人妻视频| 成人国产麻豆网| 一区二区三区免费毛片| 免费黄频网站在线观看国产| 亚洲av二区三区四区| 少妇丰满av| 成人无遮挡网站| 免费黄频网站在线观看国产| 91久久精品电影网| 亚洲av男天堂| 一夜夜www| 欧美3d第一页| 一个人看视频在线观看www免费| 亚洲成人中文字幕在线播放| 最近中文字幕高清免费大全6| 久久久久久久大尺度免费视频| 亚洲经典国产精华液单| 日韩制服骚丝袜av| 大片免费播放器 马上看| 国产成人a区在线观看| 在线观看av片永久免费下载| 亚洲av一区综合| 美女高潮的动态| 成人高潮视频无遮挡免费网站| 又大又黄又爽视频免费| videossex国产| 综合色av麻豆| 国产高清国产精品国产三级 | 精品久久久久久久久久久久久| 欧美日韩一区二区视频在线观看视频在线 | 22中文网久久字幕| 亚洲精品亚洲一区二区| 亚洲一级一片aⅴ在线观看| 三级国产精品片| 亚洲国产精品国产精品| 三级国产精品欧美在线观看| 日韩强制内射视频| 成人二区视频| 最近中文字幕2019免费版| 国产男人的电影天堂91| 在线免费观看不下载黄p国产| 99久久精品一区二区三区| 大陆偷拍与自拍| 国产亚洲午夜精品一区二区久久 | 人妻系列 视频| 久久亚洲国产成人精品v| 免费看a级黄色片| 一夜夜www| 国产单亲对白刺激| 高清视频免费观看一区二区 | 成人无遮挡网站| 午夜免费观看性视频| 深夜a级毛片| 男插女下体视频免费在线播放| 亚洲欧美成人精品一区二区| 国产精品av视频在线免费观看| 亚洲综合精品二区| 国产伦理片在线播放av一区| 26uuu在线亚洲综合色| 好男人视频免费观看在线| 嘟嘟电影网在线观看| 最近的中文字幕免费完整| 伦精品一区二区三区| 在线观看一区二区三区| 一本久久精品| 久久草成人影院| 青春草国产在线视频| 波野结衣二区三区在线| 国产一区亚洲一区在线观看| av女优亚洲男人天堂| 国产成人a区在线观看| 亚洲自拍偷在线| 能在线免费看毛片的网站| 国产淫语在线视频| 国产三级在线视频| av国产久精品久网站免费入址| 中文在线观看免费www的网站| 永久网站在线| 国产亚洲最大av| 91精品国产九色| 人体艺术视频欧美日本| 3wmmmm亚洲av在线观看| 精品熟女少妇av免费看| 免费无遮挡裸体视频| 国产视频首页在线观看| 久久草成人影院| 国产69精品久久久久777片| 精品一区二区免费观看| 久久精品久久精品一区二区三区| 建设人人有责人人尽责人人享有的 | 国产老妇女一区| 亚洲av免费在线观看| 天堂俺去俺来也www色官网 | 黄片wwwwww| 久久久色成人| 国产伦理片在线播放av一区| 国产伦精品一区二区三区视频9| 精品欧美国产一区二区三| av在线亚洲专区| 精品久久久久久电影网| 好男人在线观看高清免费视频| 久久精品熟女亚洲av麻豆精品 | 91精品伊人久久大香线蕉| 精品久久久久久久久久久久久| 欧美精品一区二区大全| 91aial.com中文字幕在线观看| 亚洲精品自拍成人| 舔av片在线| 中文字幕亚洲精品专区| 在线a可以看的网站| 色哟哟·www| 免费在线观看成人毛片| 大陆偷拍与自拍| 嫩草影院精品99| 九九爱精品视频在线观看| 婷婷色麻豆天堂久久| 激情 狠狠 欧美| 国产欧美另类精品又又久久亚洲欧美| 五月天丁香电影| 亚洲人成网站在线观看播放| 男人舔女人下体高潮全视频| 五月天丁香电影| 欧美+日韩+精品| 色吧在线观看| 天堂俺去俺来也www色官网 | 人妻夜夜爽99麻豆av| 嫩草影院新地址| 可以在线观看毛片的网站| 亚洲熟女精品中文字幕| 99热这里只有是精品在线观看| 日韩av在线免费看完整版不卡| 成年人午夜在线观看视频 | 日本爱情动作片www.在线观看| 亚洲欧美成人精品一区二区| 免费大片18禁| 内射极品少妇av片p| 91久久精品国产一区二区三区| 18禁动态无遮挡网站| 亚洲av日韩在线播放| 少妇丰满av| 国产一区二区三区av在线| 国产精品精品国产色婷婷| 99久国产av精品| 亚洲电影在线观看av| 免费大片18禁| 国产成人a区在线观看| 久久国产乱子免费精品| 禁无遮挡网站| 精品少妇黑人巨大在线播放| 五月玫瑰六月丁香| 亚洲av不卡在线观看| 2022亚洲国产成人精品| 午夜免费激情av| 国产伦理片在线播放av一区| 国产成人精品婷婷| 日韩欧美一区视频在线观看 | 极品少妇高潮喷水抽搐| 97超视频在线观看视频| 真实男女啪啪啪动态图| 亚洲精品色激情综合| 久久久a久久爽久久v久久| 最近最新中文字幕免费大全7| 中文字幕人妻熟人妻熟丝袜美| 色综合亚洲欧美另类图片| 欧美高清性xxxxhd video| 婷婷色综合大香蕉| 精品99又大又爽又粗少妇毛片| 日韩精品青青久久久久久| 六月丁香七月| 免费av不卡在线播放| 日韩成人av中文字幕在线观看| 夜夜爽夜夜爽视频| 久久久久久伊人网av| 午夜久久久久精精品| 日韩大片免费观看网站| 黄色欧美视频在线观看| 一级毛片电影观看| av在线亚洲专区| 日本av手机在线免费观看| 亚洲无线观看免费| 日韩av在线大香蕉| 国产有黄有色有爽视频| 在线 av 中文字幕| 国产黄色免费在线视频| 色视频www国产| 亚洲精品日韩av片在线观看| 亚洲图色成人| 亚洲精品色激情综合| 久久精品熟女亚洲av麻豆精品 | 免费少妇av软件| 日韩大片免费观看网站| 国产伦精品一区二区三区四那| 丰满乱子伦码专区| 免费看光身美女| 久久精品久久精品一区二区三区| 欧美最新免费一区二区三区| 亚洲最大成人手机在线| ponron亚洲| 少妇熟女欧美另类| 亚洲国产精品sss在线观看| 国产91av在线免费观看| 最近最新中文字幕免费大全7| 亚洲在线自拍视频| 777米奇影视久久| 极品教师在线视频| 国产黄频视频在线观看| 国产精品美女特级片免费视频播放器| 夜夜看夜夜爽夜夜摸| 亚洲高清免费不卡视频| 黄色配什么色好看| 免费看美女性在线毛片视频| 赤兔流量卡办理| 国产欧美另类精品又又久久亚洲欧美| 精品亚洲乱码少妇综合久久| 美女主播在线视频| 女的被弄到高潮叫床怎么办| 中文欧美无线码| 非洲黑人性xxxx精品又粗又长| 国产精品一区二区性色av| 一区二区三区乱码不卡18| 夫妻性生交免费视频一级片| 亚洲欧美日韩卡通动漫| 精品少妇黑人巨大在线播放| 国国产精品蜜臀av免费| 尤物成人国产欧美一区二区三区| 久久精品人妻少妇| 亚洲综合精品二区| 亚洲av二区三区四区| 一个人免费在线观看电影| 午夜免费男女啪啪视频观看| 亚洲18禁久久av| 高清毛片免费看| 国产一区二区在线观看日韩| 欧美3d第一页| 亚洲精品久久久久久婷婷小说| 成人av在线播放网站| 久久久久久九九精品二区国产| 成年免费大片在线观看| 日本wwww免费看| 精品久久久噜噜| 噜噜噜噜噜久久久久久91| 成人午夜精彩视频在线观看| 亚洲精品乱码久久久v下载方式| 亚洲成人精品中文字幕电影| 日韩一区二区三区影片| 久久久午夜欧美精品| 啦啦啦啦在线视频资源| 日韩制服骚丝袜av| 亚洲人成网站在线播| av免费观看日本| 亚洲最大成人手机在线| 亚洲欧美中文字幕日韩二区| 中文资源天堂在线| 97在线视频观看| 韩国高清视频一区二区三区| 亚洲欧美一区二区三区黑人 | 一级毛片 在线播放| 国产91av在线免费观看| 日本色播在线视频| 美女高潮的动态| 亚洲精品亚洲一区二区| 午夜精品国产一区二区电影 | 亚洲最大成人av| 国产综合懂色| or卡值多少钱| 久久久久久久久久久免费av| 亚洲国产精品成人久久小说| 精品人妻视频免费看| 极品少妇高潮喷水抽搐| av一本久久久久| 国产成人freesex在线| 午夜老司机福利剧场| av网站免费在线观看视频 | 男人舔奶头视频| 成人亚洲精品av一区二区| 我的女老师完整版在线观看| 久久久欧美国产精品| 91精品伊人久久大香线蕉| 身体一侧抽搐| 免费看日本二区| 国产 亚洲一区二区三区 | 免费人成在线观看视频色| 国产综合精华液| 大陆偷拍与自拍| 午夜激情福利司机影院| 精品国产三级普通话版| 亚洲图色成人| 九九久久精品国产亚洲av麻豆| 99热6这里只有精品| 99热这里只有精品一区| 两个人的视频大全免费| 亚洲综合精品二区| 欧美三级亚洲精品| 99久久精品国产国产毛片| av.在线天堂| 欧美日韩国产mv在线观看视频 | 最近最新中文字幕免费大全7| 亚洲最大成人av| 联通29元200g的流量卡| 国产欧美另类精品又又久久亚洲欧美| 色尼玛亚洲综合影院| 久久久久精品久久久久真实原创| 国产精品蜜桃在线观看| 亚洲成人精品中文字幕电影| 久久精品久久久久久久性| 日产精品乱码卡一卡2卡三| 秋霞在线观看毛片| 亚洲激情五月婷婷啪啪| 99热6这里只有精品| 神马国产精品三级电影在线观看| 在线免费观看不下载黄p国产| 男人舔奶头视频| 国产精品国产三级国产专区5o| 免费看a级黄色片| 亚洲一区高清亚洲精品| 欧美日韩精品成人综合77777| 亚洲精品乱码久久久v下载方式| 国产黄a三级三级三级人| 久久久久国产网址| 中文乱码字字幕精品一区二区三区 | 久久久精品94久久精品| 人人妻人人澡人人爽人人夜夜 | 成年女人看的毛片在线观看| 久久精品久久久久久久性| 丰满人妻一区二区三区视频av| 麻豆成人av视频| 美女cb高潮喷水在线观看| 亚洲精品自拍成人| videos熟女内射| 欧美性感艳星| 亚洲电影在线观看av| 国产单亲对白刺激| 欧美精品国产亚洲| 免费大片黄手机在线观看| 乱系列少妇在线播放| 日韩不卡一区二区三区视频在线| 久久久欧美国产精品| 欧美成人一区二区免费高清观看| 婷婷色麻豆天堂久久| 在线观看人妻少妇| 国产综合精华液| 亚洲av日韩在线播放| 欧美成人精品欧美一级黄| 国产av不卡久久| 岛国毛片在线播放| 亚洲人与动物交配视频| www.色视频.com| av在线亚洲专区| 免费观看的影片在线观看| 国产午夜精品久久久久久一区二区三区| 丝袜喷水一区| av在线播放精品| 在线观看av片永久免费下载| 国产在线一区二区三区精| 欧美性感艳星| 国产成人精品久久久久久| 蜜桃亚洲精品一区二区三区| 少妇的逼好多水| 夫妻性生交免费视频一级片| 建设人人有责人人尽责人人享有的 | 最近2019中文字幕mv第一页| 1000部很黄的大片| 日韩精品有码人妻一区| 啦啦啦啦在线视频资源| 国产 一区精品| 最近的中文字幕免费完整| 国产av在哪里看| 午夜福利成人在线免费观看| 99久久精品热视频| av在线老鸭窝| or卡值多少钱| 欧美最新免费一区二区三区| 久久久久网色| 两个人的视频大全免费| 国产成人aa在线观看| 国产真实伦视频高清在线观看| 高清毛片免费看| 美女黄网站色视频| 黄色欧美视频在线观看| 亚洲av电影在线观看一区二区三区 | 国内精品宾馆在线| 亚洲精品久久久久久婷婷小说| 欧美日韩亚洲高清精品| 日韩大片免费观看网站| 久久久久久久久中文| 一二三四中文在线观看免费高清| 欧美xxⅹ黑人| 麻豆乱淫一区二区| 26uuu在线亚洲综合色| 日本一本二区三区精品| 嫩草影院精品99| 三级经典国产精品| 男人和女人高潮做爰伦理| 日韩人妻高清精品专区| 99久国产av精品| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 免费av观看视频|