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

    近數(shù)據(jù)計(jì)算下鍵值存儲(chǔ)中Compaction并行優(yōu)化方法

    2022-03-09 05:41:58婁本冬黃建忠趙雨虹
    關(guān)鍵詞:鍵值數(shù)據(jù)量流水線

    孫 輝 婁本冬 黃建忠 趙雨虹 符 松

    1(安徽大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 合肥 230601)

    2(華中科技大學(xué)武漢光電國(guó)家研究中心 武漢 430074)

    3(中國(guó)科學(xué)院信息工程研究所 北京 100093)

    4(北德克薩斯大學(xué)計(jì)算機(jī)科學(xué)與工程系 美國(guó)德克薩斯州登頓 76203)

    國(guó)際數(shù)據(jù)公司在報(bào)告“Data Age 2025”[1]中預(yù)測(cè),從2018—2025年,全球數(shù)據(jù)總量將從33 ZB躍升到175 ZB,其中非結(jié)構(gòu)化數(shù)據(jù)將占數(shù)據(jù)總量的80%以上.傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)已無(wú)法滿足高效組織與管理大規(guī)模非結(jié)構(gòu)化數(shù)據(jù)的需求以及數(shù)據(jù)庫(kù)高并發(fā)和易擴(kuò)展性的愿望[2-3],關(guān)系型數(shù)據(jù)庫(kù)旨在管理結(jié)構(gòu)化數(shù)據(jù)或與預(yù)定義數(shù)據(jù)類型對(duì)齊的數(shù)據(jù),從而使其易于分類和搜索,面對(duì)海量非結(jié)構(gòu)化數(shù)據(jù),更改關(guān)系型數(shù)據(jù)庫(kù)中的結(jié)構(gòu)可能會(huì)非常昂貴且耗時(shí),并且通常會(huì)導(dǎo)致停機(jī)或服務(wù)中斷.另一方面,關(guān)系型數(shù)據(jù)庫(kù)難以進(jìn)行橫向擴(kuò)展[4],這與關(guān)系模型旨在確保一致性有關(guān),要在多臺(tái)服務(wù)器上水平擴(kuò)展關(guān)系型數(shù)據(jù)庫(kù),則很難確保其一致性.

    針對(duì)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)已不能勝任管理海量非結(jié)構(gòu)化數(shù)據(jù)的問(wèn)題[3],人們開(kāi)始著眼基于日志歸并樹(shù)(log structured merge tree, LSM-tree)的鍵值存儲(chǔ)系統(tǒng)來(lái)管理海量非結(jié)構(gòu)化數(shù)據(jù),如Apache的HBase[5]和Cassandra[6]、Google的BigTable[7]和LevelDB[8]以及Facebook的RocksDB[9]等.LSM-tree鍵值存儲(chǔ)通過(guò)對(duì)寫(xiě)入操作進(jìn)行順序化實(shí)現(xiàn)性能提升,具有高寫(xiě)入性、易擴(kuò)展等優(yōu)勢(shì).LSM-tree包括內(nèi)存組件和硬盤組件2部分,其將隨機(jī)寫(xiě)緩存在內(nèi)存組件(MemTable)中,待內(nèi)存組件寫(xiě)滿時(shí)再轉(zhuǎn)儲(chǔ)到硬盤組件上,將隨機(jī)寫(xiě)轉(zhuǎn)化為批量順序?qū)?隨著數(shù)據(jù)的持續(xù)寫(xiě)入,硬盤組件數(shù)量越來(lái)越多,讀取數(shù)據(jù)時(shí)需要查詢的文件數(shù)量增多,同時(shí)舊的組件中會(huì)有很多過(guò)期的數(shù)據(jù),所以需要整理和合并大量文件,將上層數(shù)據(jù)轉(zhuǎn)儲(chǔ)到下層:一方面是為了減少文件的數(shù)量以提高讀性能;另一方面則是為了刪除過(guò)期數(shù)據(jù),釋放存儲(chǔ)空間,這一過(guò)程被稱為compaction.compaction是一個(gè)后臺(tái)線程,會(huì)持續(xù)將達(dá)到預(yù)定閾值的上層文件轉(zhuǎn)移到下層.在隨機(jī)寫(xiě)密集型負(fù)載下,compaction任務(wù)會(huì)頻繁發(fā)生,引起數(shù)據(jù)壓縮/解壓、拷貝和字符串比較等操作,消耗大量計(jì)算資源,同時(shí)讀寫(xiě)操作也會(huì)占用大量硬盤I/O,引起系統(tǒng)寫(xiě)放大,降低系統(tǒng)性能.

    隨著存儲(chǔ)設(shè)備內(nèi)計(jì)算能力的提升,基于近數(shù)據(jù)計(jì)算(near-data processing, NDP)的計(jì)算模型重新受到了廣泛關(guān)注[10],數(shù)據(jù)處理模式從以傳統(tǒng)計(jì)算為中心的方式轉(zhuǎn)變?yōu)橐詳?shù)據(jù)為中心.近數(shù)據(jù)計(jì)算模型的核心是讓“計(jì)算接近數(shù)據(jù)”,改變存儲(chǔ)設(shè)備獲取數(shù)據(jù)后再傳輸?shù)街鳈C(jī)端處理的方式,而是直接在存儲(chǔ)設(shè)備內(nèi)計(jì)算,主機(jī)端接收計(jì)算結(jié)果[10-11].該模型減少了數(shù)據(jù)移動(dòng)開(kāi)銷,如前文提到的compaction操作,有效減少主機(jī)與存儲(chǔ)設(shè)備之間的I/O負(fù)擔(dān)并提高系統(tǒng)性能.面對(duì)基于LSM-tree的鍵值存儲(chǔ)中存在compaction的問(wèn)題,在近數(shù)據(jù)計(jì)算模型下,實(shí)現(xiàn)compaction的多級(jí)并行優(yōu)化方法(CoPro),降低compaction所帶來(lái)的性能損失,提升鍵值存儲(chǔ)系統(tǒng)吞吐量.CoPro具有4個(gè)優(yōu)點(diǎn):1)利用系統(tǒng)并行與流水線提高compaction性能;2)為了平衡資源消耗與性能提升,在CoPro內(nèi)部實(shí)現(xiàn)了決策組件,用于從線性方式和流水線方式中動(dòng)態(tài)選擇compaction的執(zhí)行方式,即動(dòng)態(tài)改變系統(tǒng)整體的并行度;3)在具有不同大小值的負(fù)載下進(jìn)行compaction優(yōu)化,讓CoPro在更趨于真實(shí)的復(fù)雜負(fù)載下依舊可以發(fā)揮較好的效果;4)具有良好的可擴(kuò)展性,該方案不僅適用于compaction任務(wù)的靜態(tài)卸載,同樣適用于compaction任務(wù)的動(dòng)態(tài)卸載.使用db_bench與YCSB-C對(duì)CoPro進(jìn)行了大量的實(shí)驗(yàn)驗(yàn)證CoPro的優(yōu)勢(shì),CoPro分別將主機(jī)端和設(shè)備端的compaction帶寬提高了2.34倍和1.64倍,與此同時(shí),兩端的吞吐量增加了約2倍.主機(jī)端和設(shè)備端的CPU使用率分別增加了74.0%和54.0%.

    1 背景介紹與研究動(dòng)機(jī)

    1.1 研究背景

    LSM-tree作為一種可以延遲更新且批量寫(xiě)入硬盤的日志型數(shù)據(jù)結(jié)構(gòu),利用順序?qū)憗?lái)提高寫(xiě)性能,但其分層的設(shè)計(jì)會(huì)犧牲小部分讀性能換來(lái)提高寫(xiě)性能.

    LSM-tree包含2個(gè)或2個(gè)以上的存儲(chǔ)數(shù)據(jù)結(jié)構(gòu).在有2個(gè)以上部件的LSM-tree中,通常由大小連續(xù)增加的C0,C1,…,Cn-1,Cn組件組成,如圖1所示.C0在內(nèi)存,而C1~Cn通常在硬盤內(nèi),但內(nèi)存會(huì)緩存C1,C2,…,Cn-1,Cn中常被讀取的數(shù)據(jù).

    1) 日志文件.當(dāng)有新的數(shù)據(jù)需要被寫(xiě)入時(shí),首先向存放在硬盤的寫(xiě)前日志文件中寫(xiě)入此次操作的日志.當(dāng)系統(tǒng)發(fā)生故障時(shí),可以通過(guò)寫(xiě)前日志來(lái)恢復(fù)數(shù)據(jù).當(dāng)內(nèi)存組件中的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到硬盤后,對(duì)應(yīng)的寫(xiě)前日志也就失效,可以刪除來(lái)釋放存儲(chǔ)空間.

    2) 內(nèi)存組件(C0).根據(jù)新數(shù)據(jù)的索引將該數(shù)據(jù)添加到C0中.因?yàn)镃0設(shè)置在內(nèi)存中,所以這一過(guò)程與硬盤I/O無(wú)關(guān).但內(nèi)存的數(shù)據(jù)存儲(chǔ)成本要高于硬盤,所以需要為C0的大小設(shè)定閾值.每當(dāng)C0的大小即將超出閾值時(shí),C0就會(huì)把部分?jǐn)?shù)據(jù)滾動(dòng)合并到硬盤組件的C1中,以此緩解內(nèi)存與硬盤之間存儲(chǔ)成本的差異.

    3) 硬盤組件(C1,C2,…,Cn-1,Cn).隨著數(shù)據(jù)的持續(xù)添加,當(dāng)Ci-1的大小達(dá)到其閾值后,滾動(dòng)合并就會(huì)在相鄰的2個(gè)部件Ci-1和Ci之間發(fā)生,數(shù)據(jù)會(huì)從小部件Ci-1轉(zhuǎn)儲(chǔ)到大部件Ci中.即數(shù)據(jù)一開(kāi)始會(huì)插入到C0中,之后隨著不停地滾動(dòng)合并,最終數(shù)據(jù)會(huì)寫(xiě)入到Cn中.

    本文研究?jī)?nèi)容主要優(yōu)化鍵值存儲(chǔ)中的compaction.接下來(lái)用一個(gè)典型的鍵值存儲(chǔ)數(shù)據(jù)庫(kù)——LevelDB為例,介紹compaction的具體流程.LevelDB有2種compaction操作:小compaction和大compaction,如圖1所示:

    Fig. 1 LSM-tree and compaction of LevelDB圖1 LSM-tree和LevelDB compaction流程

    小compaction將內(nèi)存中不可修改的內(nèi)存表(immutable memtable)持久化為SSTable.小compaction主要負(fù)責(zé):1)構(gòu)造SSTable;2)決定新的SSTable文件寫(xiě)入哪一層.當(dāng)內(nèi)存中出現(xiàn)immutable memtable時(shí)即觸發(fā)小compaction,將immutable memtable構(gòu)造為SSTable,根據(jù)該SSTable文件與下面level層文件的重疊情況決定該表的具體寫(xiě)入層數(shù).因后臺(tái)只有一個(gè)線程負(fù)責(zé)compaction任務(wù),所以當(dāng)小compaction觸發(fā)時(shí),則暫停大compaction,待小compaction操作處理完后再繼續(xù)執(zhí)行.

    大compaction指的是SSTable之間的compaction操作.大compaction又有3種情況:1)手動(dòng)compaction,由人工觸發(fā)的compaction任務(wù),通過(guò)外部接口調(diào)用compaction任務(wù)具體的level與鍵范圍,符合條件的SSTable參與compaction操作.這種compaction操作在LevelDB內(nèi)部是不會(huì)自動(dòng)觸發(fā)調(diào)用的.2)容量compaction,如在Li層,當(dāng)超出該層的大小閾值時(shí),則觸發(fā)compaction,通過(guò)輪詢Li中SSTable的元信息(FileMetaData)選取SSTable參與compaction任務(wù).然后,比較Li+1中的所有元信息,找出與Li選中的SSTable鍵范圍重疊的文件加入到compaction任務(wù)中.對(duì)所有選中參與compaction任務(wù)的SSTable進(jìn)行歸并排序,生成新的SSTable寫(xiě)入Li+1,同時(shí)刪除參與過(guò)compaction任務(wù)的舊SSTable.容量compaction是LevelDB的核心compaction過(guò)程.3)查詢compaction,當(dāng)某一SSTable的無(wú)效查找次數(shù)達(dá)到了閾值,則對(duì)該表進(jìn)行compaction操作,同時(shí)在該表的下一層查找與其鍵范圍重疊的文件加入compaction任務(wù),執(zhí)行歸并排序操作.生成的新文件寫(xiě)入下一層并刪除舊文件.該過(guò)程中會(huì)造成寫(xiě)入硬盤的數(shù)據(jù)量大于用戶需求數(shù)據(jù)量,這一現(xiàn)象被稱為寫(xiě)放大[8].

    當(dāng)前,近數(shù)據(jù)計(jì)算NDP的研究方向存在2種類型:1)內(nèi)存計(jì)算(processing in-memory, PIM),其將處理器或加速器與主存儲(chǔ)器并置[12];2)存儲(chǔ)計(jì)算(in-storage computing, ISC),其將處理器或加速器與持久性存儲(chǔ)(如HDD或SSD)并置[13].近數(shù)據(jù)計(jì)算是計(jì)算機(jī)體系結(jié)構(gòu)研究的一個(gè)非?;钴S的領(lǐng)域[13-14],涉及有存內(nèi)計(jì)算原型的研究[15-17]以及專用體系結(jié)構(gòu)的研究[18-19]等.Balasubramonian等人[10]提出了對(duì)近數(shù)據(jù)計(jì)算研究熱情重新興起的原因,例如基礎(chǔ)技術(shù)的成熟以及當(dāng)前架構(gòu)無(wú)法滿足的用戶需求等.三星[11]在其SSD設(shè)備內(nèi)部控制器集成了用戶可編程的通用ARM處理器內(nèi)核[20],采用特定的編程模型或框架,可將代碼卸載到SSD上執(zhí)行.

    圖2(a)描述了傳統(tǒng)的計(jì)算模型.CPU與內(nèi)存在結(jié)構(gòu)的最頂層,且為任務(wù)的唯一處理位置.主機(jī)端響應(yīng)應(yīng)用任務(wù)請(qǐng)求,從存儲(chǔ)盤中讀取數(shù)據(jù)并執(zhí)行相應(yīng)任務(wù).在該模型中存儲(chǔ)盤僅用于存儲(chǔ)數(shù)據(jù).在圖2(b)中,是一個(gè)基于近數(shù)據(jù)計(jì)算模型的存儲(chǔ)盤:該存儲(chǔ)盤具有處理任務(wù)的能力,可接收從主機(jī)端卸載來(lái)的數(shù)據(jù)密集型任務(wù)(如數(shù)據(jù)檢索).存儲(chǔ)盤將數(shù)據(jù)讀取到設(shè)備端內(nèi)存中,交由ARM處理器執(zhí)行任務(wù),任務(wù)處理結(jié)束后將任務(wù)結(jié)果反饋給主機(jī)端即可.該模型可顯著降低主機(jī)端接口的I/O壓力,提高系統(tǒng)性能.近數(shù)據(jù)計(jì)算的基本思想是使計(jì)算能力接近數(shù)據(jù)存儲(chǔ)的位置,從而減少數(shù)據(jù)在存儲(chǔ)器層次結(jié)構(gòu)中的移動(dòng).

    Fig. 2 Traditional computing model and near-data processing model圖2 傳統(tǒng)計(jì)算模型與基于近數(shù)據(jù)計(jì)算模型

    1.2 研究動(dòng)機(jī)

    針對(duì)compaction操作會(huì)影響到鍵值存儲(chǔ)系統(tǒng)性能的問(wèn)題,在主機(jī)端并行優(yōu)化方案中,PCP[21]使用流水線技術(shù)提高compaction性能和系統(tǒng)吞吐量,但帶來(lái)較大的寫(xiě)放大.這是因?yàn)橄胍WC較高的compaction性能,PCP需選取更多的SSTable參與compaction,這增加了額外的數(shù)據(jù)寫(xiě)入,從而增加了寫(xiě)放大.這對(duì)于基于閃存的存儲(chǔ)設(shè)備而言,會(huì)縮短其使用壽命.現(xiàn)有面向LSM-tree鍵值存儲(chǔ)的近數(shù)據(jù)計(jì)算優(yōu)化方案主要關(guān)注于主機(jī)端與NDP設(shè)備端之間的系統(tǒng)級(jí)并行性,或NDP設(shè)備本身所具有的并行性,較少將近數(shù)據(jù)計(jì)算架構(gòu)中兩者的并行性都充分利用起來(lái),如Co-KV[22].基于上述問(wèn)題,在近數(shù)據(jù)計(jì)算模型下,本文提出了基于compaction數(shù)據(jù)級(jí)-流水級(jí)的多級(jí)并行優(yōu)化方法(CoPro).

    2 CoPro系統(tǒng)概覽

    CoPro系統(tǒng)的架構(gòu)如圖3所示,主要分為2個(gè)部分,即主機(jī)端子系統(tǒng)和設(shè)備端子系統(tǒng).主機(jī)端子系統(tǒng)負(fù)責(zé)接收鍵值存儲(chǔ)應(yīng)用的API指令(如put,get,delete等),同時(shí)負(fù)責(zé)與設(shè)備端子系統(tǒng)之間進(jìn)行信息交互,協(xié)同處理鍵值存儲(chǔ)應(yīng)用的讀寫(xiě)與compaction任務(wù).設(shè)備端子系統(tǒng)負(fù)責(zé)接收從主機(jī)端子系統(tǒng)傳來(lái)的指令,解析后執(zhí)行相應(yīng)的操作并向主機(jī)端返回結(jié)果.compaction任務(wù)被分割成2個(gè)子任務(wù)后由主機(jī)端子系統(tǒng)和設(shè)備端子系統(tǒng)協(xié)同處理,實(shí)現(xiàn)數(shù)據(jù)并行.CoPro在主機(jī)端與設(shè)備端內(nèi)部實(shí)現(xiàn)對(duì)compaction子任務(wù)的流水線處理,增加了流水線并行.在CoPro中實(shí)現(xiàn)同時(shí)采用數(shù)據(jù)并行與流水線并行加速compaction任務(wù).下面詳細(xì)介紹主機(jī)端與設(shè)備端模塊與處理流程.

    Fig. 3 Architecture of CoPro圖3 CoPro系統(tǒng)架構(gòu)圖

    2.1 主機(jī)端子系統(tǒng)

    主機(jī)端子系統(tǒng)主要接收處理2部分的指令信息:1)主機(jī)端鍵值存儲(chǔ)操作指令信息;2)設(shè)備端執(zhí)行結(jié)果的反饋信息.與設(shè)備端子系統(tǒng)之間的信息交互,需要主機(jī)端的語(yǔ)義管理模塊支持.主機(jī)端子系統(tǒng)連接起了鍵值存儲(chǔ)應(yīng)用與設(shè)備端子系統(tǒng),實(shí)現(xiàn)compaction任務(wù)的主機(jī)端數(shù)據(jù)并行,以及compaction流水線并行.

    任務(wù)卸載調(diào)度模塊.當(dāng)大compaction觸發(fā)時(shí),由任務(wù)卸載調(diào)度模塊依據(jù)調(diào)度策略對(duì)此次compaction任務(wù)進(jìn)行分割,然后通過(guò)主機(jī)端語(yǔ)義管理模塊將此次分割好的任務(wù)卸載到主機(jī)端和設(shè)備端,該模塊是數(shù)據(jù)并行中對(duì)compaction數(shù)據(jù)進(jìn)行分割的模塊.至于任務(wù)卸載的調(diào)度策略,可以搭載靜態(tài)調(diào)度策略,或動(dòng)態(tài)調(diào)度策略.

    主機(jī)端compaction管理模塊.主機(jī)端compaction子任務(wù)的執(zhí)行模塊,負(fù)責(zé)處理compaction任務(wù)數(shù)據(jù)并行中主機(jī)端部分.該模塊包括線程管理、讀操作、歸并排序、寫(xiě)操作、結(jié)果反饋等功能.該模塊包含2種compaction子任務(wù)執(zhí)行方式:一是傳統(tǒng)的線性compaction處理方式,讀操作、歸并排序、寫(xiě)操作這3個(gè)階段以順序方式執(zhí)行;二是流水線compaction處理方式,將讀操作、歸并排序、寫(xiě)操作這3個(gè)階段按流水線方式組織,compaction數(shù)據(jù)在這3個(gè)階段間依次傳遞.通過(guò)線程管理組織線程去執(zhí)行這3個(gè)階段,實(shí)現(xiàn)了對(duì)compaction子任務(wù)的流水線處理,同時(shí)保留了傳統(tǒng)線性compaction方式.

    考慮到NDP設(shè)備的計(jì)算和內(nèi)存資源可能有受限的情況,添加了決策組件用于決定采用何種compaction子任務(wù)執(zhí)行方式,以適應(yīng)不同的資源使用需求.度量分析器負(fù)責(zé)收集決策組件所需的判斷依據(jù)(如CPU使用率、內(nèi)存使用率等),然后按照語(yǔ)義協(xié)議封裝信息,傳遞給決策組件,決策組件對(duì)這些信息進(jìn)行處理,最后決定使用哪種compaction執(zhí)行方式.決策依據(jù)可根據(jù)實(shí)際需求來(lái)采集不同的決策信息,使用相應(yīng)的決策算法.

    compaction子任務(wù)完成后,將反饋信息(如metadata等)由主機(jī)端語(yǔ)義管理模塊交給任務(wù)卸載調(diào)度模塊,其會(huì)整合主機(jī)端與設(shè)備端的compaction子任務(wù)反饋結(jié)果.運(yùn)行時(shí)庫(kù)為主機(jī)端compaction管理模塊提供必要的compaction操作支持.

    主機(jī)端語(yǔ)義管理模塊.主機(jī)端語(yǔ)義管理模塊保障了主機(jī)端子系統(tǒng)內(nèi)部模塊之間、主機(jī)端與設(shè)備端之間的通信.信息交互按照如下格式封裝消息:[數(shù)據(jù)包頭,數(shù)據(jù)包長(zhǎng)度,類型,標(biāo)志,序列化數(shù)據(jù),校驗(yàn)碼].其中數(shù)據(jù)包頭表明該消息所代表的操作類型,如任務(wù)卸載、打開(kāi)文件等,類型表明了該消息是由主機(jī)端(0x00)還是設(shè)備端(0x01)發(fā)出,如圖4所示.此外,決策功能實(shí)現(xiàn)所需的信息通信,也由主機(jī)通過(guò)語(yǔ)義管理模塊將所需度量信息發(fā)送給度量分析器,由其進(jìn)行數(shù)據(jù)收集.消息按如下格式封裝:[大小,標(biāo)志,長(zhǎng)度,度量信息,校驗(yàn)碼],詳見(jiàn)3.2節(jié).

    Fig. 4 Semantics transfer protocol of CoPro圖4 CoPro傳輸協(xié)議語(yǔ)義

    2.2 設(shè)備端子系統(tǒng)

    設(shè)備端子系統(tǒng)是鍵值存儲(chǔ)應(yīng)用讀寫(xiě)請(qǐng)求的實(shí)際執(zhí)行者.所有的讀寫(xiě)操作都是由設(shè)備端子系統(tǒng)來(lái)執(zhí)行,設(shè)備端子系統(tǒng)與存儲(chǔ)介質(zhì)進(jìn)行直接的數(shù)據(jù)交互.同樣,設(shè)備端實(shí)現(xiàn)compaction任務(wù)的設(shè)備端數(shù)據(jù)并行,以及compaction流水線并行.

    設(shè)備端compaction管理模塊.設(shè)備端compaction子任務(wù)的執(zhí)行模塊.因?yàn)槠鋵?duì)compaction子任務(wù)的處理過(guò)程與主機(jī)端相同,同樣是將讀操作、歸并排序、寫(xiě)操作這3個(gè)階段按流水線方式組織以實(shí)現(xiàn)流水線并行,同時(shí)保留線性方式,故不再贅述.需要指出的是:設(shè)備端compaction管理模塊的決策組件與主機(jī)端并無(wú)依賴關(guān)系,也就是說(shuō),可以在主機(jī)端與設(shè)備端同時(shí)執(zhí)行不同的決策方案.同樣地,運(yùn)行時(shí)庫(kù)為設(shè)備端compaction管理模塊提供必要的compaction操作支持.

    設(shè)備端語(yǔ)義管理模塊.設(shè)備端語(yǔ)義管理模塊與主機(jī)端語(yǔ)義管理模塊功能類似,其接收來(lái)自主機(jī)端子系統(tǒng)的指令并解析(類型為0x00),之后交由設(shè)備端子系統(tǒng)執(zhí)行并將結(jié)果按既定語(yǔ)義封裝反饋給主機(jī)端子系統(tǒng)(類型為0x01).如接收設(shè)備端compaction子任務(wù)信息,將其解析后交給設(shè)備端compaction管理模塊執(zhí)行,任務(wù)完成后將反饋信息封裝發(fā)送給主機(jī)端子系統(tǒng).

    設(shè)備端需要收集的度量信息也是設(shè)備端通過(guò)語(yǔ)義管理模塊將消息發(fā)送給其內(nèi)部的度量分析器,由其完成度量信息的收集.

    從系統(tǒng)整體看,任務(wù)卸載調(diào)度模塊對(duì)compaction任務(wù)進(jìn)行分割,主機(jī)端與設(shè)備端子系統(tǒng)協(xié)同處理compaction任務(wù),實(shí)現(xiàn)對(duì)compaction任務(wù)的數(shù)據(jù)并行;從系統(tǒng)內(nèi)部看,主機(jī)端與設(shè)備端子系統(tǒng)用流水線方式處理compaction子任務(wù),實(shí)現(xiàn)對(duì)compaction任務(wù)的流水線并行.

    3 2級(jí)CoPro并行動(dòng)態(tài)調(diào)度策略

    Co-KV系統(tǒng)利用NDP模型,采用傳統(tǒng)的線性compaction流程.Co-KV中,在除了第0層以外的其他層中,SSTable的鍵范圍不存在重疊的情況,compaction子任務(wù)之間也沒(méi)有數(shù)據(jù)依賴關(guān)系.基于這個(gè)特點(diǎn),主機(jī)端和設(shè)備端進(jìn)行compaction子任務(wù)時(shí)可以將其并行執(zhí)行.本文利用流水線并行的compaction優(yōu)化方式,與Co-KV原有的數(shù)據(jù)并行方式結(jié)合,提高compaction任務(wù)的執(zhí)行效率,提升主機(jī)端與設(shè)備端的資源利用率,優(yōu)化系統(tǒng)性能.改進(jìn)的同時(shí)并不會(huì)產(chǎn)生額外的寫(xiě)放大.

    3.1 2級(jí)compaction并行

    對(duì)SSTable進(jìn)行compaction,主要包括讀SSTable、將SSTable中的鍵值對(duì)歸并排序、寫(xiě)SSTable.在現(xiàn)有近數(shù)據(jù)計(jì)算下的鍵值存儲(chǔ)系統(tǒng)中,這3個(gè)操作是按順序線性執(zhí)行的.在主機(jī)端,首先對(duì)compaction任務(wù)用調(diào)度策略進(jìn)行分割,主機(jī)端對(duì)compaction子任務(wù)依次執(zhí)行讀、歸并排序、寫(xiě)操作,設(shè)備端同樣對(duì)分配給自己的compaction子任務(wù)執(zhí)行上述操作.待2個(gè)子任務(wù)完成時(shí),均將結(jié)果反饋給主機(jī)端進(jìn)行整合操作,各階段執(zhí)行過(guò)程如圖5(a)所示.主機(jī)端與設(shè)備端子系統(tǒng)協(xié)同處理同一個(gè)compaction任務(wù),但是各自處理該任務(wù)的不同數(shù)據(jù),實(shí)現(xiàn)對(duì)compaction任務(wù)的數(shù)據(jù)并行.

    現(xiàn)在還是以讀SSTable—?dú)w并排序—寫(xiě)SSTable的順序來(lái)執(zhí)行compaction子任務(wù),不同的是,利用子任務(wù)數(shù)據(jù)間的無(wú)依賴關(guān)系,可以將這3個(gè)不同的操作并行執(zhí)行,以流水線的方式執(zhí)行.具體的方法為:創(chuàng)建2個(gè)新線程用于處理鍵值對(duì)的合并排序和寫(xiě)SSTable操作.首先是讀取SSTable內(nèi)容,該操作依然由原本的compaction處理線程來(lái)執(zhí)行,在CoPro中,每當(dāng)讀取了一定量的鍵值對(duì)后,就將其交給歸并排序處理線程進(jìn)行歸并排序,同時(shí)compaction線程繼續(xù)讀取后面的內(nèi)容;歸并排序處理線程對(duì)鍵值對(duì)歸并排序,保留有效的數(shù)據(jù),刪除過(guò)期數(shù)據(jù),完成后再將有序的鍵值對(duì)交給寫(xiě)線程,之后繼續(xù)處理compaction線程后續(xù)傳來(lái)的鍵值對(duì);寫(xiě)線程中設(shè)置有一塊緩沖區(qū),緩存從歸并排序處理線程傳來(lái)的鍵值對(duì),當(dāng)數(shù)據(jù)量達(dá)到SSTable的大小時(shí)(默認(rèn)為2MB),寫(xiě)線程會(huì)生成新的SSTable與metadata,并將新的SSTable寫(xiě)入硬盤中.這樣就實(shí)現(xiàn)了流水線的并行.

    Table 1 Workloads for the Proportion Threshold

    這樣,在一次compaction任務(wù)中,剛開(kāi)始依舊是執(zhí)行任務(wù)分割,將任務(wù)卸載到主機(jī)端和設(shè)備端分別處理.在compaction子任務(wù)的處理過(guò)程中,將讀、歸并排序、寫(xiě)操作按照流水線的方式組織,形成了3段流水線.子任務(wù)結(jié)束后,主機(jī)端與設(shè)備端分別將各自的執(zhí)行結(jié)果反饋并由主機(jī)端進(jìn)行整合.各階段過(guò)程如圖5(b)所示.

    Fig. 5 Sequential and pipelined compaction modes圖5 線性與流水線compaction模式

    在compaction任務(wù)執(zhí)行過(guò)程中,主機(jī)端與設(shè)備端子系統(tǒng)并行地處理各自的compaction子任務(wù),實(shí)現(xiàn)compaction任務(wù)的數(shù)據(jù)級(jí)并行;在主機(jī)端與設(shè)備端compaction子任務(wù)中,compaction的讀、歸并排序與寫(xiě)操作也并行執(zhí)行,實(shí)現(xiàn)compaction任務(wù)的流水線并行.

    3.2 CoPro決策組件

    通過(guò)3.1節(jié)中的方法,引入流水線compaction處理方式,進(jìn)一步提升了系統(tǒng)處理compaction的性能,但是流水線方式是利用多線程實(shí)現(xiàn)的,在提升性能的同時(shí)也會(huì)增長(zhǎng)資源消耗.NDP設(shè)備存在異構(gòu)性,其計(jì)算能力也有差異,從能耗角度考慮,設(shè)備端的計(jì)算能力可能會(huì)受到限制.此外,設(shè)備端的資源不可能全部用于服務(wù)compaction子任務(wù),還需要保證其他任務(wù)的正常執(zhí)行,這對(duì)如何利用好計(jì)算資源提出了挑戰(zhàn),尤其是否要使用多線程來(lái)開(kāi)啟流水線處理模塊加速compaction,以及何時(shí)需要開(kāi)啟與關(guān)閉多線程功能,判斷的依據(jù)是什么.需要盡可能發(fā)揮資源受限設(shè)備的計(jì)算能力,減少對(duì)其他應(yīng)用的影響.因此本文提出基于CPU使用率、內(nèi)存使用率等參數(shù)的決策組件來(lái)根據(jù)實(shí)際需求,決策是否開(kāi)啟compaction流水線處理方式.

    Fig. 6 Decision-making process in CoPro圖6 CoPro決策流程圖

    由圖6所示,首先通過(guò)度量分析器收集系統(tǒng)運(yùn)行過(guò)程中需要關(guān)心的資源情況,然后將消息按照語(yǔ)義格式封裝.消息頭部由消息大小構(gòu)成,消息大小為本次消息的總大小.消息體由標(biāo)志、長(zhǎng)度、度量信息和校驗(yàn)碼組成,標(biāo)志記錄其后的度量信息是什么類型的度量信息,而長(zhǎng)度則記錄著這個(gè)度量信息所占用的長(zhǎng)度,方便度量信息的讀取.最后對(duì)所有信息計(jì)算校驗(yàn)碼,將校驗(yàn)碼封裝進(jìn)消息中.封裝好后交由語(yǔ)義接口傳給決策組件,決策組件收到信息后,通過(guò)計(jì)算公式?jīng)Q定本次compaction子任務(wù)的處理方式.

    f=α×Ccost+β×Musage+φ×Vsize,

    (1)

    式(1)用于決策數(shù)值f的計(jì)算,其中Ccost表示CPU使用率,Musage表示內(nèi)存使用率,Vsize表示鍵值對(duì)中值大小,α,β,φ則為各參數(shù)的權(quán)重.這樣,可以根據(jù)實(shí)際環(huán)境設(shè)置適合的決策公式,如系統(tǒng)對(duì)CPU資源比較敏感,可以相應(yīng)地增加Ccost的權(quán)重.計(jì)算結(jié)果f與預(yù)設(shè)的閾值fthreshold進(jìn)行比較,根據(jù)結(jié)果選擇相應(yīng)的compaction處理策略.

    決策組件的加入,可以緩解性能與資源消耗之間的矛盾,盡可能地在性能提升與資源消耗之間找到平衡.例如當(dāng)CoPro的CPU使用率超出了既定的閾值,決策組件就可以通過(guò)關(guān)閉流水線來(lái)降低CoPro的CPU使用率,待檢測(cè)到系統(tǒng)的CPU資源充足時(shí),此時(shí)決策組件就可以開(kāi)啟流水線來(lái)加速compaction過(guò)程.

    在實(shí)際的執(zhí)行過(guò)程中,compaction子任務(wù)是采取傳統(tǒng)線性流程還是流水線流程由決策組件決定,在后續(xù)的實(shí)驗(yàn)中,為了測(cè)試數(shù)據(jù)與流水線并行和決策組件的效果,并且為了方便區(qū)分,本文中的CoPro均指代主機(jī)端與設(shè)備端都默認(rèn)采用流水線處理方式,即決策組件不生效,CoPro+均指代主機(jī)端與設(shè)備端的compaction處理方式由決策組件決定,即compaction處理方式是動(dòng)態(tài)變化的.

    3.3 CoPro決策閾值(Vsize)

    3.2節(jié)提到的Ccost和Musage比較好確定閾值選取,因?yàn)榱魉€compaction的啟用與否直接會(huì)反映到CPU和內(nèi)存使用率上,這樣根據(jù)系統(tǒng)的實(shí)際需求可以很容易地設(shè)置其具體值.而對(duì)于Vsize的確定則有些困難,因?yàn)椴磺宄魉€compaction與負(fù)載鍵值對(duì)中值大小的關(guān)系.最為常見(jiàn)的是大小劃分,即對(duì)不同大小的值采取決策,本文稱為值大小的閾值.由于流水線是作用于compaction整體過(guò)程而不是單一的鍵值對(duì),所以確定了值大小閾值后,還需要確定不同大小值在整個(gè)compaction過(guò)程中所占的比例,達(dá)到多少比例就需要觸發(fā)決策,在本文中稱為比例閾值.下面通過(guò)實(shí)驗(yàn),從compaction帶寬與CPU使用率分別代表性能與資源的角度來(lái)確定這2個(gè)閾值,其中compaction帶寬為單位時(shí)間內(nèi)compaction處理的數(shù)據(jù)量.

    1)Vsize——鍵值對(duì)中值大小閾值的確定

    需要分別確定主機(jī)端與設(shè)備端的值大小閾值,原因在于主機(jī)端與設(shè)備端內(nèi)均有決策組件,需要分別確定兩端各自的閾值.

    其次,在NDP架構(gòu)下,主機(jī)端和設(shè)備端的計(jì)算、存儲(chǔ)等資源不同,主機(jī)端和設(shè)備端執(zhí)行數(shù)據(jù)級(jí)并行的compaction子任務(wù)時(shí),執(zhí)行特征也有所不同,兩端環(huán)境的不同造成了需要分別確定閾值.本節(jié)使用compaction帶寬增長(zhǎng)率與CPU使用率的增長(zhǎng)率比值作為參考依據(jù),該比值為1時(shí),表示compaction帶寬增長(zhǎng)率與CPU使用率的增長(zhǎng)率相同,即CPU使用率100%轉(zhuǎn)化為compaction帶寬,也就是CPU資源的消耗全部用于compaction性能的提升.下面利用負(fù)載db_bench進(jìn)行實(shí)驗(yàn),研究值大小對(duì)流水線compaction的影響,實(shí)驗(yàn)結(jié)果如圖7所示.

    Fig. 7 Host-side and device-side threshold of record size圖7 主機(jī)端與設(shè)備端record大小閾值

    如圖7(a)所示,在主機(jī)端,值大小為16 KB,32 KB,64 KB時(shí)的比值分別為1.10,0.97,0.88.可以看到當(dāng)值大小達(dá)到32 KB時(shí)compaction帶寬增長(zhǎng)率低于CPU增長(zhǎng)率.主機(jī)端,鍵值對(duì)中值為64 KB時(shí)的compaction帶寬增長(zhǎng)幅度已經(jīng)開(kāi)始低于CPU使用率的增長(zhǎng)幅度,說(shuō)明此時(shí)更多的CPU消耗并不能帶來(lái)等量的性能提升.與32 KB時(shí)接近1的比值對(duì)比,表明從32 KB開(kāi)始,繼續(xù)增加值的大小,相同的CPU使用率增長(zhǎng)已不能獲取等量的compaction帶寬提升,所以主機(jī)端選擇32 KB作為值大小的閾值.因此本文定義,在主機(jī)端超過(guò)32 KB的值被認(rèn)為是大鍵值對(duì).在設(shè)備端該比值普遍低于1,值大小為4 KB,16 KB,32 KB,64 KB時(shí),比值分別為0.53,0.45,0.40,0.28,如圖7(b)所示.從16 KB開(kāi)始比值低于0.5,意味著1倍的compaction帶寬增長(zhǎng)需要2倍以上的CPU消耗,所以設(shè)備端選擇16 KB作為鍵值對(duì)中值大小的閾值,即對(duì)于設(shè)備端來(lái)說(shuō)值超過(guò)16 KB的鍵值對(duì)認(rèn)為是大鍵值對(duì).至此,主機(jī)端與設(shè)備端值大小的閾值已確定.

    2)Vsize——比例閾值的確定

    使用compaction帶寬增長(zhǎng)率與CPU使用率增長(zhǎng)率的比值作為參考依據(jù),負(fù)載如表1所示:

    Fig. 8 The host-side and device-side growth rate ratio圖8 主機(jī)端與設(shè)備端增長(zhǎng)率比值

    如圖8所示,在主機(jī)端,除了SW5,其余負(fù)載比值基本重合于60%和70%,在70%后,100%寫(xiě)負(fù)載繼續(xù)下降,讀寫(xiě)混合負(fù)載數(shù)值上升.SW5總體也是隨著大鍵值對(duì)比例增大,比值呈下降趨勢(shì).80%是所有負(fù)載的平均最低點(diǎn),往左右橫跨一個(gè)區(qū)間,70%~90%是實(shí)驗(yàn)中平均比值最低的區(qū)間,所以主機(jī)端選擇70%這一比例作為決策觸發(fā)的比例閾值.在設(shè)備端,所有負(fù)載在70%前保持整體下降趨勢(shì),在70%后部分繼續(xù)下降,比值低于1,部分負(fù)載緩慢的上升,70%~90%同樣是設(shè)備端所有負(fù)載平均比值最低的區(qū)間,所以設(shè)備端同樣選擇70%作為決策觸發(fā)的比例閾值.在本節(jié)中,當(dāng)大鍵值對(duì)在負(fù)載中的比例達(dá)到70%時(shí),使用流水線compaction將難以獲得理想的性能提升,還會(huì)占用大量的計(jì)算資源,形成資源浪費(fèi),因此,將70%設(shè)置為比例閾值.

    4 實(shí)驗(yàn)與結(jié)果

    CoPro結(jié)合了數(shù)據(jù)并行和流水并行的優(yōu)勢(shì),利用2種并行結(jié)合的方式進(jìn)一步提高系統(tǒng)的總體性能.在本節(jié)進(jìn)行大量實(shí)驗(yàn)來(lái)評(píng)估CoPro的compaction性能.在4.3節(jié)、4.4節(jié)與4.5節(jié)中,CoPro采用靜態(tài)卸載方案(Co-KV),主機(jī)端與設(shè)備端各處理一半的compaction任務(wù)數(shù)據(jù).在Co-KV的實(shí)驗(yàn)中已經(jīng)證實(shí)Co-KV性能較PCP更優(yōu),寫(xiě)放大更小,所以本節(jié)僅與Co-KV進(jìn)行實(shí)驗(yàn)對(duì)比,探究在不同類型負(fù)載下寫(xiě)放大、吞吐量、compaction帶寬、帶寬利用率和CPU使用率的差異.即使用Co-KV作為本節(jié)實(shí)驗(yàn)的評(píng)估基準(zhǔn).

    4.1 實(shí)驗(yàn)環(huán)境

    基于近數(shù)據(jù)計(jì)算架構(gòu)的鍵值存儲(chǔ)系統(tǒng)CoPro需要可執(zhí)行近數(shù)據(jù)計(jì)算的存儲(chǔ)設(shè)備作為支撐,需要增加專用硬件.由于缺乏真實(shí)基于近數(shù)據(jù)計(jì)算的SSD,所以搭建了一個(gè)模擬近數(shù)據(jù)計(jì)算環(huán)境的測(cè)試平臺(tái),用來(lái)測(cè)試Co-KV與CoPro的性能.主機(jī)端與設(shè)備端通過(guò)千兆以太網(wǎng)接口交互數(shù)據(jù).

    測(cè)試程序由主機(jī)端和設(shè)備端組成,主機(jī)端子系統(tǒng)運(yùn)行在雙核Pentium?Dual-Core, E6700 CPU,4 GB內(nèi)存的計(jì)算機(jī)上,操作系統(tǒng)是Ubuntu 16.04.利用主機(jī)端的計(jì)算資源,構(gòu)建基于近數(shù)據(jù)架構(gòu)的新型鍵值存儲(chǔ)軟件.設(shè)備端需要額外增加專用硬件,本工作采用的是一種基于ARM的開(kāi)發(fā)板Firefly作為計(jì)算單元.設(shè)備端運(yùn)行在ARM開(kāi)發(fā)板上,配置4GB運(yùn)行內(nèi)存,開(kāi)發(fā)板連接256GB Intel 545S SATA SSD作為存儲(chǔ)介質(zhì),開(kāi)發(fā)板和SATA盤模擬為近數(shù)據(jù)計(jì)算盤,操作系統(tǒng)是輕量級(jí)嵌入式Ubuntu系統(tǒng),設(shè)計(jì)CoPro設(shè)備端子系統(tǒng)的鍵值存儲(chǔ)軟件棧.

    4.2 測(cè)試負(fù)載

    負(fù)載的詳細(xì)配置如表2和表3所示.CoPro主要在compaction流程上進(jìn)行優(yōu)化,而隨機(jī)寫(xiě)又是引起compaction的主要原因之一,所以本節(jié)的測(cè)試負(fù)載主要集中于隨機(jī)寫(xiě)方面.Co-KV和CoPro使用相同的默認(rèn)配置,即4 MB MemTable,2 MB SSTable,4 KB data block.鍵值對(duì)中的值為16 B.本節(jié)使用DB_Bench(LevelDB默認(rèn)的測(cè)試工具)和YCSB-C(YCSB的C++版本)作為測(cè)試工具,測(cè)試Co-KV和CoPro的寫(xiě)放大、吞吐量和CPU使用率等參數(shù).使用YCSB-C作為測(cè)試真實(shí)環(huán)境下密集型隨機(jī)寫(xiě)負(fù)載的測(cè)試工具,配置不同的數(shù)據(jù)量和記錄大小,這些都是對(duì)compaction有較大影響的參數(shù).請(qǐng)求分布使用zipfian和uniform分布.

    Table 2 Workload Characteristics in DB_Bench

    Table 3 Workload Characteristics in YCSB-C

    4.3 基于DB_Bench負(fù)載的測(cè)試

    在本節(jié),使用DB_Bench測(cè)試Co-KV與CoPro在不同數(shù)據(jù)量、不同大小值的負(fù)載下寫(xiě)放大、吞吐量、compaction帶寬和CPU使用率,并分析實(shí)驗(yàn)數(shù)據(jù),如圖9所示.

    Fig. 9 Results of CoPro and Co-KV under fillrandom- and fillseq-based DB_bench with various data volume圖9 CoPro與Co-KV在DB_Bench順序與隨機(jī)寫(xiě)負(fù)載下的實(shí)驗(yàn)結(jié)果

    寫(xiě)放大.不管是Co-KV還是CoPro,寫(xiě)放大主要來(lái)自于主機(jī)端的寫(xiě)前日志與主機(jī)端的compaction子任務(wù)操作.由圖9(a)(b)可知,在隨機(jī)寫(xiě)負(fù)載下,當(dāng)值的大小不變時(shí),隨著數(shù)據(jù)量的增加,兩者寫(xiě)放大也均在增大(例如在數(shù)據(jù)量10 GB和值為100 B時(shí),Co-KV寫(xiě)放大為6.16,CoPro寫(xiě)放大為6.38;在數(shù)據(jù)量50 GB和值為100 B時(shí),Co-KV寫(xiě)放大為8.49,CoPro寫(xiě)放大為8.86);而當(dāng)數(shù)據(jù)量不變時(shí),隨著鍵值對(duì)中值的增大,兩者寫(xiě)放大均在減小,例如在數(shù)據(jù)量10 GB和值64 KB時(shí),Co-KV寫(xiě)放大為4.68,CoPro寫(xiě)放大為4.72.這是由于數(shù)據(jù)量的增加帶來(lái)的compaction次數(shù)增加,造成了寫(xiě)放大的增大;而數(shù)據(jù)量一定的情況下,值的增大導(dǎo)致總的鍵值對(duì)減少,compaction次數(shù)減少,寫(xiě)放大減小.

    可以看出,在隨機(jī)寫(xiě)的情況下,CoPro與Co-KV的寫(xiě)放大差別不大,變化范圍在±5%以內(nèi).這是因?yàn)镃oPro改變Co-KV的compaction的流程,將其中的讀、歸并排序、寫(xiě)操作按流水線方式組織,但是在SSTable選取時(shí)不傾向于選取更多的文件參與,所以在加快compaction速度的同時(shí)并不會(huì)帶來(lái)額外的寫(xiě)放大.在順序?qū)懾?fù)載下,CoPro與Co-KV的寫(xiě)放大基本相同,這是因?yàn)轫樞驅(qū)懖簧婕按骳ompaction,也就不涉及本文所做的優(yōu)化部分,CoPro與Co-KV處理方式相同,所以寫(xiě)放大一致.

    吞吐量.吞吐量是評(píng)價(jià)數(shù)據(jù)庫(kù)性能優(yōu)劣的重要指標(biāo).由圖9(c)(d)可以看出,在隨機(jī)寫(xiě)情況下,不論是何種負(fù)載,CoPro的吞吐量都是要大于Co-KV的.這是因?yàn)镃oPro不僅數(shù)據(jù)并行compaction任務(wù),還流水線并行compaction子任務(wù),加快了compaction子任務(wù)的處理效率,最直觀的體現(xiàn)就是在吞吐量上.在實(shí)驗(yàn)最好情況下(數(shù)據(jù)量20 GB和值為100 B),Co-KV為0.4 MBps,CoPro為0.8 MBps,吞吐量提升了95%.但是隨著值的增大,吞吐量的提升趨勢(shì)逐漸下降.在實(shí)驗(yàn)最差情況下(數(shù)據(jù)量20 GB和值64 KB),Co-KV為1.7 MBps,CoPro為1.9 MBps,吞吐量提升僅為7%.這是因?yàn)?,?dāng)數(shù)據(jù)量一定,值增大時(shí),總的鍵值對(duì)減少,導(dǎo)致一次compaction任務(wù)中的鍵值對(duì)數(shù)量下降,流水線處理方式的優(yōu)勢(shì)被大大降低,所以總體的性能提升效果不明顯,與3.3節(jié)的結(jié)果一致.通過(guò)不同負(fù)載的實(shí)驗(yàn)數(shù)據(jù)可以看出,CoPro在處理較小值的負(fù)載時(shí)能最大程度上發(fā)揮流水線處理方式的優(yōu)勢(shì),而在值增大后,優(yōu)勢(shì)逐漸減小,總體性能的提升逐漸降低.

    由于順序?qū)懖簧婕癱ompaction中的歸并排序操作,所以在順序?qū)懬闆r下CoPro與Co-KV吞吐量大致相同,沒(méi)有太大的變化.

    compaction帶寬.本文對(duì)主機(jī)端與設(shè)備端的com-paction子任務(wù)處理流程進(jìn)行優(yōu)化,使用compaction帶寬作為compaction操作性能評(píng)測(cè)指標(biāo).圖9(e)(f)展示的是隨機(jī)寫(xiě)情況下,主機(jī)端和設(shè)備端的com-paction帶寬變化,由于順序?qū)懖簧婕癱ompaction操作,所以不記錄compaction帶寬,本實(shí)驗(yàn)僅針對(duì)隨機(jī)負(fù)載情況.當(dāng)值大小不變時(shí),隨著數(shù)據(jù)量的增長(zhǎng),主機(jī)端和設(shè)備端compaction帶寬總體呈現(xiàn)下降的趨勢(shì),這是由于數(shù)據(jù)量增長(zhǎng)導(dǎo)致SSTable變多,compaction操作的數(shù)據(jù)量和耗時(shí)同時(shí)增加,從實(shí)驗(yàn)結(jié)果來(lái)看,耗時(shí)的增長(zhǎng)幅度要大于數(shù)據(jù)量的增長(zhǎng)幅度,導(dǎo)致了compaction帶寬下降.當(dāng)數(shù)據(jù)量一定,值增大時(shí),主機(jī)端的compaction帶寬逐漸上升,這是因?yàn)殒I值對(duì)的減少縮短了compaction的處理時(shí)間.在設(shè)備端,情況更為復(fù)雜一些.Co-KV的compaction帶寬隨著值增大而增大,CoPro卻沒(méi)有太過(guò)明顯的變化規(guī)律.從吞吐量的實(shí)驗(yàn)結(jié)果分析中可以看出隨著值增大CoPro的性能提升效果逐漸降低,不管在主機(jī)端還是設(shè)備端,值增大時(shí)CoPro與Co-KV的compaction帶寬也在逐漸接近.

    Table 4 Workloads for Scalability Evaluation

    Table 5 Compaction Performance and CPU Growth Rate for Co-KV, CoPro and CoPro+ Under YCSB-C

    在實(shí)驗(yàn)數(shù)據(jù)的最好情況下(數(shù)據(jù)量20 GB和值為100 B),Co-KV主機(jī)端compaction帶寬為2.09 MBps,設(shè)備端帶寬為25.68 MBps;CoPro主機(jī)端和設(shè)備端compaction帶寬分別為4.90 MBps,42.10 MBps,分別提升134%和64%.在實(shí)驗(yàn)數(shù)據(jù)的最壞情況下(數(shù)據(jù)量20 GB和值64 KB),Co-KV主機(jī)端compaction帶寬為8.42 MBps,設(shè)備端帶寬為41.36 MBps;CoPro主機(jī)端和設(shè)備端compaction帶寬分別為9.87 MBps,45.03 MBps,僅分別提升17%和9%.

    CPU使用率.使用流水線方式處理compaction,性能提升的同時(shí)不可避免的也增加了資源的消耗,所以測(cè)試了主機(jī)端與設(shè)備端CPU的使用情況來(lái)統(tǒng)計(jì)CoPro對(duì)計(jì)算資源的消耗.

    由圖9(g)(h)可知,在隨機(jī)寫(xiě)負(fù)載下,不論主機(jī)端還是設(shè)備端,CoPro要比Co-KV的CPU使用率高,最高是在數(shù)據(jù)量20 GB和值為100 B時(shí),Co-KV主機(jī)端CPU使用率為10.1%,設(shè)備端CPU使用率為42.1%;CoPro主機(jī)端CPU使用率為17.6%,設(shè)備端使用率為64.8%.CPU使用率分別提高了74%和54%.這是因?yàn)镃oPro在compaction子任務(wù)的處理過(guò)程中使用流水線方式,而為了實(shí)現(xiàn)流水線方式,新增了2個(gè)線程分別處理歸并排序和寫(xiě)操作,增加了CPU資源的消耗.順序?qū)懬闆r下不涉及大compaction歸并排序操作,新增線程不參與處理過(guò)程,處于睡眠狀態(tài),所以兩者CPU使用率差別不大.例如在數(shù)據(jù)量20 GB和值為100 B情況下,Co-KV主機(jī)端CPU使用率為25.9%,設(shè)備端CPU使用率為32.4%;CoPro主機(jī)端CPU使用率為26.5%,設(shè)備端使用率為33.1%.

    4.4 基于YCSB-C負(fù)載的測(cè)試

    在YCSB-C下,首先測(cè)試了在不同負(fù)載情況下record大小對(duì)性能的影響,結(jié)果如圖10所示.

    Fig. 10 Results of CoPro and Co-KV under zipfian- and uniform-based in YCSB-C with various record size圖10 YCSB-C zipfian和uniform不同record大小負(fù)載下CoPro和Co-KV的實(shí)驗(yàn)結(jié)果

    由圖10(a)所示,在zipfian與uniform負(fù)載下CoPro的寫(xiě)放大與Co-KV差別不大,因?yàn)镃oPro對(duì)compaction的處理流程做了優(yōu)化,并不會(huì)帶來(lái)額外的寫(xiě)放大.例如在record size為512 B時(shí),在zipfian負(fù)載下,Co-KV寫(xiě)放大為4.21,CoPro為4.33;在uniform負(fù)載下,Co-KV寫(xiě)放大為6.44,CoPro為6.38.

    隨著record增大吞吐量下降,是因?yàn)閞ecord增大的同時(shí)增加了寫(xiě)入和compaction處理的時(shí)間,降低了系統(tǒng)的吞吐量,見(jiàn)圖10(b).在record為1 KB時(shí),Zipfian負(fù)載下Co-KV為830.66 ops/s,CoPro為1 533.63 ops/s,uniform負(fù)載下Co-KV為441.43 ops/s,CoPro為817.66 ops/s,吞吐量均提升了85%.與在db_bench下的測(cè)試結(jié)果相同,隨著record增大,CoPro的性能提升效果也逐漸下降.在record為64 KB時(shí)CoPro吞吐量?jī)H僅提升11%.

    由圖10(c)(d)可知,不論在主機(jī)端還是設(shè)備端,CoPro的compaction吞吐量均要高于Co-KV,record為1 KB時(shí),zipfian負(fù)載下Co-KV與CoPro主機(jī)端compaction帶寬分別為2.51 MBps和5.85 MBps,設(shè)備端compaction帶寬分別為41.53 MBps和60.14 MBps,帶寬分別提升133%和45%.uniform負(fù)載下Co-KV與CoPro主機(jī)端compaction帶寬分別為2.29 MBps和5.12 MBps,設(shè)備端compaction帶寬分別為34.56 MBps和48.80 MBps,帶寬分別提升124%和41%.這是因?yàn)镃oPro增加線程加速了compaction過(guò)程,相同時(shí)間內(nèi)compaction的數(shù)據(jù)量更多.

    在zipfian負(fù)載下,record為1 KB時(shí)CoPro CPU使用率增長(zhǎng)最高,此時(shí)Co-KV主機(jī)端CPU使用率為8.6%,設(shè)備端CPU使用率為36.4%,CoPro主機(jī)端CPU使用率為14.9%,設(shè)備端CPU使用率為53%,分別增長(zhǎng)73%和47%;在uniform負(fù)載下,同樣是record為1 KB時(shí)CoPro CPU使用率增長(zhǎng)最高,此時(shí)Co-KV主機(jī)端CPU使用率為7.2%,設(shè)備端CPU使用率為36.6%,CoPro主機(jī)端CPU使用率為12.5%,設(shè)備端CPU使用率為54.7%,分別增長(zhǎng)74%和49%.具體結(jié)果參見(jiàn)圖10(e)(f).

    此外,我們?cè)趯?shí)驗(yàn)中還測(cè)試了數(shù)據(jù)量對(duì)各項(xiàng)性能指標(biāo)的影響,如圖11所示:

    Fig. 11 Results of CoPro and Co-KV under YCSB-C with various data volume圖11 CoPro與Co-KV在YCSB-C不同數(shù)據(jù)量實(shí)驗(yàn)結(jié)果

    隨著數(shù)據(jù)量的增加寫(xiě)放大呈緩慢上升的趨勢(shì),當(dāng)數(shù)據(jù)量達(dá)到25 GB時(shí),zipfian負(fù)載下Co-KV與CoPro寫(xiě)放大分別為4.6和4.4,uniform負(fù)載下Co-KV與CoPro寫(xiě)放大分別為6.7和6.6.由圖11(a)可知,Co-KV與CoPro寫(xiě)放大差別不大.

    盡管數(shù)據(jù)量變化的同時(shí)吞吐量的變化趨勢(shì)不明顯,但總體上來(lái)說(shuō)還是隨著數(shù)據(jù)量的增加吞吐量呈下降趨勢(shì),如圖11(b)所示.當(dāng)數(shù)據(jù)量為5 GB時(shí),zipfian負(fù)載下Co-KV與CoPro分別為667.40 ops/s和1 181.95 ops/s.在uniform負(fù)載下,Co-KV與CoPro分別為392.22 ops/s和711.12 ops/s.當(dāng)數(shù)據(jù)量為25 GB時(shí),zipfian負(fù)載下Co-KV與CoPro分別為663.82 ops/s和1 155.49 ops/s.在uniform負(fù)載下,Co-KV與CoPro分別為385.57 ops/s和682.48 ops/s.

    如圖11(c)(d)所示,compaction帶寬的變化趨勢(shì)隨數(shù)據(jù)量變化相對(duì)來(lái)說(shuō)不明顯,但可以看到,不論是主機(jī)端還是設(shè)備端,CoPro的compaction帶寬都是要大于Co-KV的,在zipfian負(fù)載下,主機(jī)端與設(shè)備端compaction帶寬分別平均提升126%和55%;在uniform負(fù)載下,分別平均提升110%和39%.

    CPU使用率基本不受數(shù)據(jù)量變化的影響,因?yàn)閏ompaction次數(shù)會(huì)隨著數(shù)據(jù)量的增加而增加,但系統(tǒng)總的運(yùn)行時(shí)間也在增加,一段時(shí)間內(nèi)CPU的使用量還是相同的,如圖11(e)(f)所示.

    Fig. 12 Results of Co-KV, CoPro, and CoPro+ under YCSB-C at run stage圖12 Co-KV, CoPro, CoPro+在YCSB-C不同負(fù)載run階段的實(shí)驗(yàn)結(jié)果

    4.5 擴(kuò)展實(shí)驗(yàn)

    1) CoPro+實(shí)驗(yàn)

    本節(jié)研究CoPro+(具有決策組件的CoPro)在不同工作負(fù)載下的性能.由于在3.3節(jié)Vsize的確定實(shí)驗(yàn)中,發(fā)現(xiàn)流水線compaction對(duì)值大小敏感,為了簡(jiǎn)單測(cè)試決策組件的效果,本節(jié)決策組件在決策公式中僅設(shè)置Vsize,即閾值與比例閾值,其中值大小的閾值,主機(jī)端為32 KB,設(shè)備端為16 KB,比例閾值為70%(原因見(jiàn)3.3節(jié)),Ccost與Musage參數(shù)暫未啟用.即CoPro+的決策組件計(jì)算公式完全以Vsize為導(dǎo)向,此時(shí)的φ=1,α=β=0,fthreshold=1×Vsize=0.7.通過(guò)這種配置可以更直觀地展現(xiàn)負(fù)載鍵值對(duì)中值的大小變化過(guò)程中決策組件的作用.表4顯示了此次實(shí)驗(yàn)中配置的4種工作負(fù)載.負(fù)載W1,W3,W4分別對(duì)應(yīng)工作負(fù)載早期、中期和后期出現(xiàn)大鍵值對(duì)(大鍵值對(duì)的定義見(jiàn)3.3節(jié)).

    如圖12所示,其中decision number為系統(tǒng)運(yùn)行時(shí)的檢測(cè)點(diǎn),每個(gè)檢測(cè)點(diǎn)決策組件會(huì)進(jìn)行一次決策.決策組件初始狀態(tài)默認(rèn)使用流水線compaction方式.圖12中陰影部分表示運(yùn)行過(guò)程中大鍵值對(duì)占比超過(guò)70%.當(dāng)占比小于70%時(shí),決策組件開(kāi)啟流水線compaction模式,否則,將使用線性compaction模式.當(dāng)發(fā)生動(dòng)態(tài)決策時(shí),主機(jī)端和設(shè)備端中,CoPro+的CPU使用率介于CoPro與Co-KV之間,運(yùn)行過(guò)程中達(dá)到閾值時(shí),CoPro+關(guān)閉了流水線處理方式,使得CPU使用率下降.compaction帶寬CoPro+更接近于CoPro,因無(wú)法保持一段時(shí)間內(nèi)檢測(cè)點(diǎn)的數(shù)值均高于閾值,短時(shí)間內(nèi)反復(fù)開(kāi)啟流水線方式,這使得CoPro+對(duì)compaction帶寬的影響不是很直觀.

    根據(jù)表5的實(shí)驗(yàn)數(shù)據(jù)可知,在大多數(shù)情況下,CoPro+比CoPro用更低的CPU使用率帶來(lái)了更高compaction帶寬.這主要?dú)w功于CoPro+在負(fù)載中大鍵值對(duì)占比較大時(shí)關(guān)閉了流水線,避免了更多的資源消耗.表5中的CPU與compaction帶寬增長(zhǎng)率是相對(duì)于Co-KV的增長(zhǎng)率,符號(hào)MBpCPU表示compaction帶寬除以CPU使用率的值,其表示每1%CPU使用率所帶來(lái)的compaction帶寬,CoPro+不論在主機(jī)端還是設(shè)備端均高于CoPro.與Co-KV相比,主機(jī)端基本持平甚至略優(yōu)(負(fù)載W1:Co-KV為0.81,CoPro+為0.82),而設(shè)備端則要低于Co-KV(負(fù)載W1下Co-KV為0.73,CoPro+為0.70),由4.3節(jié)和4.4節(jié)的實(shí)驗(yàn)可知,當(dāng)record大小增大時(shí)設(shè)備端的處理耗時(shí)相比主機(jī)端要增加更多,所以CoPro+在設(shè)備端的優(yōu)化效果要次于主機(jī)端.另外從負(fù)載W3實(shí)驗(yàn)結(jié)果可知,在寫(xiě)多讀少的混合負(fù)載下,CoPro+依然可以發(fā)揮作用.

    CoPro+的作用體現(xiàn)在負(fù)載中record大小動(dòng)態(tài)變化時(shí),其可以降低因流水線compaction而導(dǎo)致的在負(fù)載中大鍵值對(duì)占比較大時(shí)不必要的CPU資源消耗.換句話說(shuō),CoPro+能夠以小于CoPro的CPU使用率換來(lái)接近于CoPro的compaction帶寬增長(zhǎng).但還是需要根據(jù)實(shí)際的情況選擇,要想獲得最好的性能提升效果當(dāng)然是使用CoPro,但想要節(jié)省CPU資源并不降低太多性能的話,就使用CoPro+.

    2) CoPro在讀寫(xiě)混合負(fù)載下的實(shí)驗(yàn)

    如圖13所示,我們還分析了不同讀寫(xiě)比例下Co-KV和CoPro的吞吐量、尾延遲、平均響應(yīng)時(shí)間及主機(jī)端和設(shè)備端CPU使用率.我們選擇了YCSB作為負(fù)載程序,并且設(shè)定了2種負(fù)載參數(shù)YCSB-A(讀寫(xiě)混合):load 10 GB,run 10 GB,50%read,50%write.YCSB-B(讀密集)load 10 GB,run 10 GB,90%read,10%write.

    Fig. 13 Performance of CoPro under mixed-read-write workloads圖13 讀寫(xiě)混合負(fù)載下的CoPro性能

    在YCSB-A負(fù)載下,CoPro吞吐量和平均延遲都比Co-KV優(yōu)化了約23.3%;在CPU使用率上我們分別統(tǒng)計(jì)了主機(jī)端CPU使用率和設(shè)備端CPU使用率.發(fā)現(xiàn)CoPro的主機(jī)端使用率超過(guò)50%,相比Co-KV,提高了2.78倍,說(shuō)明主機(jī)端compaction加入流水線技術(shù)后對(duì)CPU使用率影響很大,因此我們?cè)贑oPro增加了可以對(duì)流水線進(jìn)行控制的機(jī)制.而CoPro設(shè)備端CPU使用率與CoKV相近.我們測(cè)量了CoPro和Co-KV的尾延遲P99,實(shí)驗(yàn)結(jié)果表明,CoPro的P99比Co-KV優(yōu)化了10.6%.P99的優(yōu)化主要來(lái)自于CoPro對(duì)寫(xiě)操作的優(yōu)化,提高了99%的響應(yīng)時(shí)間.

    在YCSB-B負(fù)載下,CoPro的吞吐量和平均延遲都比Co-KV下降了約3.2%;同樣我們也發(fā)現(xiàn)CoPro的主機(jī)端CPU使用率超過(guò)50%,相比Co-KV的10%提高了6.1倍,說(shuō)明主機(jī)端compaction加入流水線技術(shù)后密集的讀操作對(duì)CPU使用率影響較大,而CoPro設(shè)備端CPU使用率與Co-KV相近.對(duì)于長(zhǎng)尾延遲,實(shí)驗(yàn)結(jié)果表明,CoPro的尾延遲P99比Co-KV下降了19%.前面提到CoPro在長(zhǎng)尾延遲的優(yōu)化可能來(lái)自于寫(xiě)操作的優(yōu)化,但是在讀密集操作下,這種優(yōu)化無(wú)法體現(xiàn),另外可以看出讀密集負(fù)載下CoPro的性能有所下降,主要在于流水線compaction操作消耗了主機(jī)CPU資源,由此驗(yàn)證了主機(jī)CPU資源被compaction占用較多時(shí),會(huì)影響讀性能.

    5 相關(guān)工作

    5.1 基于LSM-tree的鍵值存儲(chǔ)相關(guān)工作

    基于LSM-tree的鍵值存儲(chǔ)系統(tǒng)吞吐量高、擴(kuò)展性強(qiáng),適用于時(shí)延敏感的互聯(lián)網(wǎng)服務(wù),被廣泛應(yīng)用于大規(guī)模數(shù)據(jù)密集型互聯(lián)網(wǎng)應(yīng)用中,并逐漸替代傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),迅速成為研究熱點(diǎn).

    PCP[21]從compaction處理流程入手,提出了一種流水線compaction方法,以更好地利用CPU和I/O并行性來(lái)提高compaction性能.為了更好地利用CPU和I/O并行性,文獻(xiàn)[21]將讀、歸并排序、寫(xiě)階段的執(zhí)行流水線化,以此實(shí)現(xiàn)并行compaction操作來(lái)改善compaction的性能,但是為了提高流水線的效果,PCP傾向于讓更多的SSTable參與compaction,增加了寫(xiě)放大.WiscKey[23]提出鍵值分離的方案,將鍵值分開(kāi)存儲(chǔ),可以大幅降低LSM-tree的大小與compaction后的讀寫(xiě)放大.HashKV[24]基于鍵值分離的基礎(chǔ)上,根據(jù)鍵將值散列到多個(gè)分區(qū)中,并獨(dú)立地對(duì)每個(gè)分區(qū)進(jìn)行垃圾回收.GearDB[25]利用疊瓦盤垃圾回收的特點(diǎn),利用compaction的消除數(shù)據(jù)操作來(lái)減少垃圾回收操作.SEALDB[26]通過(guò)避免隨機(jī)寫(xiě)入和SMR驅(qū)動(dòng)器上相應(yīng)的寫(xiě)入放大來(lái)專門為SMR驅(qū)動(dòng)器優(yōu)化.NoveLSM[27]是NVM上LSM-tree的實(shí)現(xiàn),添加了一個(gè)基于NVM的內(nèi)存組件,利用I/O并行性來(lái)同時(shí)搜索多層以減少查找延遲.SLM-DB[28]在新型字節(jié)型存儲(chǔ)器件Persistent Memory上利用PM的特性使用B+tree作為索引與使用PM進(jìn)行緩沖寫(xiě)入,加速讀取時(shí)的數(shù)據(jù)檢索并省略了寫(xiě)前日志的寫(xiě)開(kāi)銷.

    上述LSM-tree鍵值存儲(chǔ)系統(tǒng)的相關(guān)工作均有效地提升了存儲(chǔ)系統(tǒng)性能與吞吐量.但是,以上方案均沒(méi)有考慮利用存儲(chǔ)設(shè)備所具有的計(jì)算資源.隨著近數(shù)據(jù)計(jì)算模型研究的深入,學(xué)者開(kāi)始利用具有一定計(jì)算能力的存儲(chǔ)設(shè)備來(lái)處理部分?jǐn)?shù)據(jù)密集型應(yīng)用任務(wù),以提升系統(tǒng)性能.

    5.2 近數(shù)據(jù)計(jì)算相關(guān)工作

    1) 近數(shù)據(jù)計(jì)算基本架構(gòu)

    隨著技術(shù)發(fā)展,存儲(chǔ)設(shè)備內(nèi)部的計(jì)算資源日益增長(zhǎng),其內(nèi)部帶寬與外部帶寬日漸懸殊,于是學(xué)者們開(kāi)始研究如何把數(shù)據(jù)密集型應(yīng)用的部分任務(wù)卸載到存儲(chǔ)設(shè)備內(nèi)部進(jìn)行處理來(lái)減少數(shù)據(jù)移動(dòng)消耗.Kang等人[29]在真實(shí)的固態(tài)硬盤上驗(yàn)證近數(shù)據(jù)計(jì)算模型,并將其在SSD固件中實(shí)現(xiàn),通過(guò)有效利用SSD內(nèi)部并行性而提高主機(jī)端處理性能.中國(guó)科學(xué)院計(jì)算技術(shù)研究所提出了Cognitive SSD[30],這是一種基于深度學(xué)習(xí)的非結(jié)構(gòu)化數(shù)據(jù)檢索的節(jié)能引擎,以實(shí)現(xiàn)近數(shù)據(jù)深度學(xué)習(xí)和圖形搜索.不僅是閃存訪問(wèn)加速器,以FPGA為代表的多功能可編程硬件加速器也逐漸流行起來(lái)[31].INSIDER[32]引入了基于FPGA的可重配置驅(qū)動(dòng)控制器作為存儲(chǔ)計(jì)算單元,極大提高了使用的靈活性.

    2) 近數(shù)據(jù)計(jì)算鍵值系統(tǒng)

    Co-KV首次利用ARM開(kāi)發(fā)板將LevelDB的部分compaction任務(wù)通過(guò)以太網(wǎng)接口發(fā)送到設(shè)備端執(zhí)行,主機(jī)端處理剩余的compaction任務(wù),實(shí)現(xiàn)了compaction任務(wù)的靜態(tài)卸載.驗(yàn)證了近數(shù)據(jù)計(jì)算模型可以有效解決LSM-tree寫(xiě)放大的問(wèn)題,并且提高了寫(xiě)操作的吞吐量,減輕了主機(jī)端計(jì)算任務(wù)的壓力.在Co-KV的基礎(chǔ)上,Sun等人又提出動(dòng)態(tài)卸載方案TStore[33]與DStore[34].分別將NDP設(shè)備的執(zhí)行時(shí)間和計(jì)算資源作為卸載條件,以此為依據(jù)來(lái)動(dòng)態(tài)調(diào)整compaction任務(wù)的分割比例,從而進(jìn)一步提高了compaction的執(zhí)行速度,同時(shí)有效合理的分割任務(wù),使主機(jī)端和設(shè)備端的計(jì)算資源都能夠充分利用,使系統(tǒng)性能進(jìn)一步提高.nKV[35]是一個(gè)利用本機(jī)計(jì)算存儲(chǔ)與近數(shù)據(jù)計(jì)算的鍵值存儲(chǔ)系統(tǒng),將讀操作、搜索操作和復(fù)雜的圖形處理算法卸載到存儲(chǔ)設(shè)備處理.nKV消除了兼容層并利用了NDP上的計(jì)算資源,所以有較好的性能表現(xiàn).

    上述研究方案很好地展現(xiàn)出近數(shù)據(jù)計(jì)算模型的可行性和性能優(yōu)勢(shì),將數(shù)據(jù)密集型應(yīng)用的部分計(jì)算和I/O任務(wù)卸載到基于近數(shù)據(jù)計(jì)算模型的存儲(chǔ)設(shè)備上進(jìn)行處理,可以有效地利用NDP存儲(chǔ)設(shè)備內(nèi)部的高帶寬,提升任務(wù)整體的處理效率.然而上述研究方案大多是直接將應(yīng)用的某個(gè)或多個(gè)任務(wù)全部卸載到NDP存儲(chǔ)設(shè)備上,沒(méi)有考慮到主機(jī)端計(jì)算資源也可參與任務(wù)處理,可能會(huì)造成主機(jī)端資源的空閑與浪費(fèi).或者是簡(jiǎn)單利用主機(jī)端與NDP設(shè)備端之間的系統(tǒng)并行性,沒(méi)有充分發(fā)揮NDP設(shè)備端的并行資源.

    6 結(jié) 語(yǔ)

    本文提出了近數(shù)據(jù)計(jì)算架構(gòu)下compaction的流水并行優(yōu)化方法,CoPro.與Co-KV相比,CoPro分別將主機(jī)端和設(shè)備端的compaction帶寬提高了2.34倍和1.64倍.與此同時(shí),主機(jī)端和設(shè)備端的吞吐量均增加了約2倍,CPU使用率分別增加了74.0%和54.0%.在擴(kuò)展實(shí)驗(yàn)中,與CoPro相比,在不明顯降低性能的同時(shí)Co-Pro+將CPU使用率的增長(zhǎng)率降低了16.0%.CoPro實(shí)現(xiàn)了compaction操作的數(shù)據(jù)并行與流水并行共存,使用流水方式執(zhí)行compaction的同時(shí)減小了寫(xiě)放大.同一compaction任務(wù)被主機(jī)端與設(shè)備端并行執(zhí)行,而在主機(jī)端和設(shè)備端內(nèi)部compaction子任務(wù)按流水的方式組織并行執(zhí)行.在主機(jī)端子系統(tǒng)中,CoPro重新設(shè)計(jì)了任務(wù)卸載調(diào)度模塊,使其可以同時(shí)支持compaction任務(wù)的靜態(tài)卸載方案,增強(qiáng)了可擴(kuò)展性.增加了度量收集器用于收集主機(jī)端子系統(tǒng)運(yùn)行時(shí)的度量信息,為決策組件提供數(shù)據(jù)以實(shí)現(xiàn)對(duì)系統(tǒng)整體并行度的動(dòng)態(tài)調(diào)整.在設(shè)備端子系統(tǒng)中同樣增加了度量收集器以及決策組件,用于收集設(shè)備端子系統(tǒng)運(yùn)行時(shí)的度量信息.主機(jī)端與設(shè)備端的決策組件相互獨(dú)立,可以根據(jù)不同的度量信息確定不同的決策,例如可以緩解因值增大造成的性能提升下降與資源消耗上升的問(wèn)題,使CoPro具有一定程度上的環(huán)境感知功能.通過(guò)真實(shí)硬件模擬近數(shù)據(jù)計(jì)算環(huán)境進(jìn)行驗(yàn)證實(shí)驗(yàn)和擴(kuò)展實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果顯示CoPro在不帶來(lái)額外寫(xiě)放大的前提下進(jìn)一步提升了compaction性能.

    作者貢獻(xiàn)聲明:孫輝、婁本冬負(fù)責(zé)工作思路、系統(tǒng)搭建、實(shí)現(xiàn)及測(cè)試;黃建忠、趙雨虹、符松主要負(fù)責(zé)思路及實(shí)驗(yàn)討論.

    猜你喜歡
    鍵值數(shù)據(jù)量流水線
    Gen Z Migrant Workers Are Leaving the Assembly Line
    基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
    計(jì)算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
    高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
    非請(qǐng)勿進(jìn) 為注冊(cè)表的重要鍵值上把“鎖”
    流水線
    寬帶信號(hào)采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計(jì)與研究
    電子制作(2019年13期)2020-01-14 03:15:18
    一鍵直達(dá) Windows 10注冊(cè)表編輯高招
    報(bào)廢汽車拆解半自動(dòng)流水線研究
    SIMATIC IPC3000 SMART在汽車流水線領(lǐng)域的應(yīng)用
    亚洲国产色片| 成人毛片a级毛片在线播放| 99在线视频只有这里精品首页| 亚洲人成网站在线播放欧美日韩| 国产精品女同一区二区软件 | 99国产精品一区二区蜜桃av| 亚洲最大成人中文| 色综合欧美亚洲国产小说| 夜夜爽天天搞| 亚洲中文日韩欧美视频| 极品教师在线免费播放| 中文亚洲av片在线观看爽| 国产久久久一区二区三区| 免费观看人在逋| 久久国产精品影院| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 丁香欧美五月| a级一级毛片免费在线观看| 麻豆av噜噜一区二区三区| 免费大片18禁| 婷婷精品国产亚洲av在线| 又爽又黄无遮挡网站| 舔av片在线| 亚洲美女黄片视频| 精品久久久久久久久久免费视频| 老鸭窝网址在线观看| 国产av麻豆久久久久久久| 久久九九热精品免费| 亚洲av电影在线进入| 成人国产一区最新在线观看| 十八禁国产超污无遮挡网站| 久久6这里有精品| 国产精品国产高清国产av| 禁无遮挡网站| 亚州av有码| 国产爱豆传媒在线观看| 免费看光身美女| 中文在线观看免费www的网站| 久久人人爽人人爽人人片va | 亚洲va日本ⅴa欧美va伊人久久| 好男人在线观看高清免费视频| 1000部很黄的大片| 国产欧美日韩精品一区二区| 桃色一区二区三区在线观看| 啪啪无遮挡十八禁网站| 精品乱码久久久久久99久播| 深夜a级毛片| 麻豆久久精品国产亚洲av| 久久久久免费精品人妻一区二区| 国产在视频线在精品| 欧美3d第一页| 免费一级毛片在线播放高清视频| 黄色日韩在线| 久久亚洲精品不卡| 午夜老司机福利剧场| 国产精品亚洲av一区麻豆| 国产欧美日韩精品一区二区| 此物有八面人人有两片| 久久中文看片网| 88av欧美| 深爱激情五月婷婷| 亚洲精品影视一区二区三区av| 亚洲国产精品成人综合色| 欧美zozozo另类| 日本 欧美在线| 天天躁日日操中文字幕| 一本一本综合久久| 麻豆国产av国片精品| 美女cb高潮喷水在线观看| 最近最新免费中文字幕在线| 成年人黄色毛片网站| 国产成人影院久久av| 十八禁人妻一区二区| 欧美成人性av电影在线观看| 最后的刺客免费高清国语| 男人的好看免费观看在线视频| 亚洲精品久久国产高清桃花| 国产精品美女特级片免费视频播放器| 国产日本99.免费观看| 两人在一起打扑克的视频| 天堂av国产一区二区熟女人妻| 国产亚洲精品久久久久久毛片| 精品人妻视频免费看| 最近视频中文字幕2019在线8| 亚洲国产色片| 9191精品国产免费久久| 亚洲一区二区三区色噜噜| 亚洲18禁久久av| 国产亚洲av嫩草精品影院| 99久久成人亚洲精品观看| 看片在线看免费视频| 国产乱人伦免费视频| 欧美潮喷喷水| 国模一区二区三区四区视频| 嫁个100分男人电影在线观看| 中文字幕精品亚洲无线码一区| 中文字幕精品亚洲无线码一区| 亚洲第一电影网av| 美女cb高潮喷水在线观看| 成年人黄色毛片网站| 日本撒尿小便嘘嘘汇集6| 国产精品久久久久久久久免 | 午夜免费男女啪啪视频观看 | 成人性生交大片免费视频hd| 成年免费大片在线观看| 久久久久精品国产欧美久久久| 亚洲三级黄色毛片| 免费一级毛片在线播放高清视频| 欧美绝顶高潮抽搐喷水| 久久婷婷人人爽人人干人人爱| 亚洲精品影视一区二区三区av| 日本三级黄在线观看| 亚洲最大成人中文| 九九久久精品国产亚洲av麻豆| 天美传媒精品一区二区| 欧美高清性xxxxhd video| 婷婷亚洲欧美| 丁香欧美五月| 十八禁人妻一区二区| 国产 一区 欧美 日韩| 少妇高潮的动态图| 亚洲精品色激情综合| 亚洲欧美日韩高清专用| 美女被艹到高潮喷水动态| 亚洲成人久久性| 热99在线观看视频| 最后的刺客免费高清国语| 国产aⅴ精品一区二区三区波| 女同久久另类99精品国产91| 国产一区二区在线av高清观看| 熟女人妻精品中文字幕| 欧美绝顶高潮抽搐喷水| 美女高潮喷水抽搐中文字幕| 午夜激情欧美在线| 天天一区二区日本电影三级| 我的女老师完整版在线观看| 精品人妻熟女av久视频| 久久精品国产亚洲av涩爱 | 淫妇啪啪啪对白视频| 不卡一级毛片| 亚洲狠狠婷婷综合久久图片| www.熟女人妻精品国产| 亚洲第一区二区三区不卡| 天堂动漫精品| 国产69精品久久久久777片| 欧美绝顶高潮抽搐喷水| 久久中文看片网| 可以在线观看的亚洲视频| 看片在线看免费视频| 最好的美女福利视频网| 久久久久国内视频| av专区在线播放| 欧美又色又爽又黄视频| 99国产精品一区二区蜜桃av| 高潮久久久久久久久久久不卡| 精品人妻偷拍中文字幕| 狠狠狠狠99中文字幕| 一本精品99久久精品77| 国产精品久久久久久亚洲av鲁大| 亚洲精华国产精华精| 日本一本二区三区精品| 日本五十路高清| 午夜亚洲福利在线播放| 99久久成人亚洲精品观看| 精品一区二区三区视频在线观看免费| 噜噜噜噜噜久久久久久91| 色综合欧美亚洲国产小说| 又紧又爽又黄一区二区| 女生性感内裤真人,穿戴方法视频| 免费在线观看亚洲国产| 国产视频一区二区在线看| 婷婷精品国产亚洲av在线| 久久久久亚洲av毛片大全| 亚洲av免费在线观看| 一级毛片久久久久久久久女| 美女 人体艺术 gogo| 久久久久精品国产欧美久久久| 日日摸夜夜添夜夜添av毛片 | 麻豆久久精品国产亚洲av| 91av网一区二区| 天堂√8在线中文| 一边摸一边抽搐一进一小说| 亚洲精品456在线播放app | 婷婷亚洲欧美| 午夜影院日韩av| 欧美黄色片欧美黄色片| 色精品久久人妻99蜜桃| 久久草成人影院| 午夜免费男女啪啪视频观看 | 午夜久久久久精精品| 757午夜福利合集在线观看| 97碰自拍视频| 丰满的人妻完整版| 日本免费a在线| 久久午夜亚洲精品久久| 久久伊人香网站| 欧美日韩瑟瑟在线播放| 亚洲精品亚洲一区二区| 欧美黄色片欧美黄色片| 国产精品久久视频播放| 国产精品久久久久久久久免 | 自拍偷自拍亚洲精品老妇| 国产精品一区二区三区四区久久| 18禁裸乳无遮挡免费网站照片| 校园春色视频在线观看| 波野结衣二区三区在线| 亚洲狠狠婷婷综合久久图片| av在线老鸭窝| 久久精品久久久久久噜噜老黄 | 国产伦精品一区二区三区四那| 国产乱人视频| 欧美xxxx黑人xx丫x性爽| 国产精品野战在线观看| 高清日韩中文字幕在线| 日韩有码中文字幕| 亚洲欧美日韩东京热| 欧美黄色片欧美黄色片| 两人在一起打扑克的视频| 在线a可以看的网站| 色哟哟·www| 色哟哟哟哟哟哟| 亚洲,欧美精品.| 两人在一起打扑克的视频| 亚洲精品一卡2卡三卡4卡5卡| 色综合站精品国产| 精品久久久久久久久久久久久| 国产爱豆传媒在线观看| 97热精品久久久久久| 麻豆一二三区av精品| 日本 av在线| 能在线免费观看的黄片| 欧美区成人在线视频| 偷拍熟女少妇极品色| www.熟女人妻精品国产| 亚洲精品日韩av片在线观看| 亚洲五月婷婷丁香| 免费无遮挡裸体视频| 国产一区二区亚洲精品在线观看| 级片在线观看| 美女免费视频网站| 日韩有码中文字幕| 国产精品久久久久久久电影| 嫩草影院新地址| 国产精品一区二区免费欧美| 搡老岳熟女国产| 日韩有码中文字幕| 久久精品91蜜桃| 国产一区二区在线av高清观看| bbb黄色大片| 免费av观看视频| 亚洲成人精品中文字幕电影| 青草久久国产| 亚洲av五月六月丁香网| 国产精品自产拍在线观看55亚洲| 中文字幕久久专区| 美女免费视频网站| 欧美黄色淫秽网站| 国产三级中文精品| 亚洲欧美日韩高清专用| 欧美区成人在线视频| 俄罗斯特黄特色一大片| 看免费av毛片| 国产精品久久久久久精品电影| 非洲黑人性xxxx精品又粗又长| 婷婷精品国产亚洲av| 琪琪午夜伦伦电影理论片6080| 高清在线国产一区| 色在线成人网| 非洲黑人性xxxx精品又粗又长| 国产亚洲精品久久久久久毛片| 精品免费久久久久久久清纯| av专区在线播放| www.色视频.com| aaaaa片日本免费| 在线天堂最新版资源| 18禁在线播放成人免费| 小蜜桃在线观看免费完整版高清| 天堂√8在线中文| 又爽又黄a免费视频| 久久人人精品亚洲av| 国产欧美日韩一区二区精品| 夜夜看夜夜爽夜夜摸| 国产一区二区在线av高清观看| 99久国产av精品| 成年女人看的毛片在线观看| 一个人免费在线观看的高清视频| 色噜噜av男人的天堂激情| 亚洲精品色激情综合| 日本免费a在线| 亚洲av电影不卡..在线观看| 亚洲无线观看免费| 最好的美女福利视频网| 最近中文字幕高清免费大全6 | 男女下面进入的视频免费午夜| 日本免费a在线| 一卡2卡三卡四卡精品乱码亚洲| 国产精品国产高清国产av| 免费av毛片视频| 午夜福利视频1000在线观看| 日韩大尺度精品在线看网址| 国产高清视频在线播放一区| 亚洲无线在线观看| 国产单亲对白刺激| 国产探花在线观看一区二区| 亚洲国产高清在线一区二区三| 五月玫瑰六月丁香| 能在线免费观看的黄片| 亚洲不卡免费看| 人妻制服诱惑在线中文字幕| 亚洲成人中文字幕在线播放| 久久人人爽人人爽人人片va | 身体一侧抽搐| 日韩高清综合在线| 变态另类成人亚洲欧美熟女| 色播亚洲综合网| 99久久99久久久精品蜜桃| 美女高潮喷水抽搐中文字幕| 一本精品99久久精品77| www.色视频.com| 特大巨黑吊av在线直播| 午夜免费成人在线视频| 在线免费观看不下载黄p国产 | 长腿黑丝高跟| 成人美女网站在线观看视频| 国产私拍福利视频在线观看| 亚洲第一电影网av| 亚洲激情在线av| 中文字幕免费在线视频6| 精品人妻视频免费看| 三级毛片av免费| 麻豆久久精品国产亚洲av| 桃红色精品国产亚洲av| 国产老妇女一区| 日本 欧美在线| 亚洲va日本ⅴa欧美va伊人久久| 欧美性猛交╳xxx乱大交人| 国产av麻豆久久久久久久| 一二三四社区在线视频社区8| 别揉我奶头 嗯啊视频| 午夜福利欧美成人| 亚洲av电影不卡..在线观看| 久久精品国产自在天天线| 日本黄色片子视频| 久久国产乱子伦精品免费另类| 在线免费观看不下载黄p国产 | 久久精品综合一区二区三区| 精品国内亚洲2022精品成人| 美女黄网站色视频| 午夜久久久久精精品| 色噜噜av男人的天堂激情| 国产精品亚洲av一区麻豆| 久久欧美精品欧美久久欧美| 欧美色欧美亚洲另类二区| 午夜福利高清视频| 国产真实乱freesex| 一区二区三区激情视频| 高清毛片免费观看视频网站| 国产精品久久久久久久电影| 一本一本综合久久| 国产精品一区二区性色av| 男人的好看免费观看在线视频| 在线观看66精品国产| 久久天躁狠狠躁夜夜2o2o| 少妇高潮的动态图| 免费搜索国产男女视频| 老熟妇乱子伦视频在线观看| 欧美黑人巨大hd| h日本视频在线播放| 女人十人毛片免费观看3o分钟| 搞女人的毛片| 精品免费久久久久久久清纯| 99国产精品一区二区三区| 天美传媒精品一区二区| 天天一区二区日本电影三级| 日本a在线网址| 特级一级黄色大片| 国产高清有码在线观看视频| 99久久九九国产精品国产免费| av视频在线观看入口| 搡老熟女国产l中国老女人| 嫩草影院精品99| 波多野结衣巨乳人妻| 亚洲国产欧美人成| 18+在线观看网站| 成年女人永久免费观看视频| 欧美高清成人免费视频www| 色综合站精品国产| 欧美日本视频| 国产精品女同一区二区软件 | 亚洲欧美日韩无卡精品| 欧美成人免费av一区二区三区| 日韩成人在线观看一区二区三区| 91麻豆av在线| av欧美777| 亚洲avbb在线观看| 久久这里只有精品中国| 国产色爽女视频免费观看| 精品乱码久久久久久99久播| 又黄又爽又刺激的免费视频.| 在线免费观看的www视频| 午夜久久久久精精品| 亚洲激情在线av| 日本一本二区三区精品| 国产黄a三级三级三级人| 怎么达到女性高潮| 99在线人妻在线中文字幕| 啦啦啦韩国在线观看视频| 九色成人免费人妻av| 美女被艹到高潮喷水动态| 精品久久国产蜜桃| 91在线观看av| 天美传媒精品一区二区| 亚洲av五月六月丁香网| 日本一二三区视频观看| 人妻夜夜爽99麻豆av| 别揉我奶头~嗯~啊~动态视频| 每晚都被弄得嗷嗷叫到高潮| 欧美zozozo另类| 亚洲三级黄色毛片| 国产中年淑女户外野战色| 久久久久免费精品人妻一区二区| 热99在线观看视频| 可以在线观看的亚洲视频| 国内精品一区二区在线观看| 成人特级av手机在线观看| 首页视频小说图片口味搜索| 国产极品精品免费视频能看的| 国产黄色小视频在线观看| 国产精品一区二区免费欧美| 国产av在哪里看| www.www免费av| 国产亚洲精品av在线| 黄片小视频在线播放| 99热这里只有是精品在线观看 | 国产高清视频在线观看网站| 欧美日韩亚洲国产一区二区在线观看| 日韩人妻高清精品专区| 一边摸一边抽搐一进一小说| 亚洲av中文字字幕乱码综合| 国产一区二区在线观看日韩| 日日摸夜夜添夜夜添av毛片 | 首页视频小说图片口味搜索| 亚洲av成人不卡在线观看播放网| 毛片女人毛片| 欧美激情久久久久久爽电影| 少妇的逼好多水| av在线老鸭窝| 色综合亚洲欧美另类图片| 亚洲欧美精品综合久久99| 中文字幕av成人在线电影| 最后的刺客免费高清国语| 国产激情偷乱视频一区二区| 久久精品久久久久久噜噜老黄 | 男人舔女人下体高潮全视频| 无人区码免费观看不卡| 亚洲精品一卡2卡三卡4卡5卡| 国内毛片毛片毛片毛片毛片| 怎么达到女性高潮| 长腿黑丝高跟| 亚洲精品456在线播放app | 色在线成人网| 97超级碰碰碰精品色视频在线观看| 日本黄大片高清| 夜夜爽天天搞| 国产探花在线观看一区二区| 国内揄拍国产精品人妻在线| 精品无人区乱码1区二区| 亚洲人成网站在线播放欧美日韩| 成年女人永久免费观看视频| 色av中文字幕| 免费看a级黄色片| 在现免费观看毛片| 黄色日韩在线| 偷拍熟女少妇极品色| 国产精品野战在线观看| 久久中文看片网| 亚洲成a人片在线一区二区| 亚洲av不卡在线观看| 亚洲专区中文字幕在线| a在线观看视频网站| 欧美乱色亚洲激情| 亚洲av日韩精品久久久久久密| 国产精品电影一区二区三区| 亚洲av.av天堂| 亚洲第一欧美日韩一区二区三区| 又粗又爽又猛毛片免费看| 在现免费观看毛片| 国产精品98久久久久久宅男小说| 亚洲性夜色夜夜综合| 人妻丰满熟妇av一区二区三区| 国产高潮美女av| 91麻豆精品激情在线观看国产| 麻豆成人午夜福利视频| 熟女电影av网| 午夜老司机福利剧场| 国产视频一区二区在线看| 日韩欧美精品免费久久 | 深夜a级毛片| 久久精品国产99精品国产亚洲性色| 男人舔奶头视频| 少妇人妻精品综合一区二区 | av欧美777| 亚洲男人的天堂狠狠| 日韩中字成人| 欧美日韩亚洲国产一区二区在线观看| 99国产极品粉嫩在线观看| 亚洲国产色片| 一区二区三区激情视频| 高清毛片免费观看视频网站| .国产精品久久| 国产高清有码在线观看视频| 欧美+日韩+精品| 超碰av人人做人人爽久久| 国产精品不卡视频一区二区 | 看黄色毛片网站| 舔av片在线| 国产伦一二天堂av在线观看| 深爱激情五月婷婷| 欧美日韩国产亚洲二区| 嫩草影院精品99| 日日摸夜夜添夜夜添av毛片 | 啪啪无遮挡十八禁网站| 免费无遮挡裸体视频| 最近最新免费中文字幕在线| 免费av不卡在线播放| 琪琪午夜伦伦电影理论片6080| 国产精品人妻久久久久久| 亚洲性夜色夜夜综合| 国产成+人综合+亚洲专区| 午夜亚洲福利在线播放| 国产精品一区二区三区四区免费观看 | 能在线免费观看的黄片| 免费看a级黄色片| 99久国产av精品| 亚洲美女视频黄频| 级片在线观看| 久久久久久九九精品二区国产| 国产精品三级大全| 脱女人内裤的视频| 色综合站精品国产| 亚洲无线观看免费| 日日干狠狠操夜夜爽| 婷婷亚洲欧美| 国产精品久久视频播放| 757午夜福利合集在线观看| a级毛片免费高清观看在线播放| 美女被艹到高潮喷水动态| 成年女人永久免费观看视频| 看黄色毛片网站| 国产精品精品国产色婷婷| 亚洲一区二区三区不卡视频| 搡老妇女老女人老熟妇| 国产精品亚洲美女久久久| 欧美性猛交黑人性爽| 亚洲中文日韩欧美视频| 乱人视频在线观看| 欧美乱色亚洲激情| 一区二区三区四区激情视频 | 国产精品亚洲av一区麻豆| 日韩成人在线观看一区二区三区| 亚洲av电影不卡..在线观看| 国产精品av视频在线免费观看| 特大巨黑吊av在线直播| 国内揄拍国产精品人妻在线| 尤物成人国产欧美一区二区三区| 在线十欧美十亚洲十日本专区| 久久精品国产清高在天天线| 成人一区二区视频在线观看| 美女黄网站色视频| 久久久精品大字幕| 欧美精品国产亚洲| 亚洲午夜理论影院| 听说在线观看完整版免费高清| 亚洲,欧美,日韩| 免费高清视频大片| 国产精品电影一区二区三区| АⅤ资源中文在线天堂| 国产色婷婷99| 一个人免费在线观看的高清视频| 国产精品亚洲美女久久久| 啪啪无遮挡十八禁网站| 久久精品91蜜桃| 国产日本99.免费观看| 日韩成人在线观看一区二区三区| 日本黄色片子视频| avwww免费| 久久久久精品国产欧美久久久| 国产国拍精品亚洲av在线观看| 99久久99久久久精品蜜桃| 亚洲av一区综合| 成人永久免费在线观看视频| 岛国在线免费视频观看| 激情在线观看视频在线高清| 亚洲精品影视一区二区三区av| 亚洲av二区三区四区| 日韩欧美精品免费久久 | 久久久久国产精品人妻aⅴ院| 熟女电影av网| 很黄的视频免费| 久久亚洲精品不卡| 看免费av毛片| 舔av片在线| 天堂av国产一区二区熟女人妻| 亚洲av.av天堂| 成人欧美大片| 久久6这里有精品| 精品一区二区三区人妻视频| 欧美丝袜亚洲另类 | 乱码一卡2卡4卡精品| 舔av片在线| 亚洲色图av天堂| 日日干狠狠操夜夜爽| 国产极品精品免费视频能看的| 免费在线观看成人毛片| 国产野战对白在线观看|