• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向DNN的高并發(fā)NVM文件系統(tǒng)

      2023-09-06 04:29:56馬躍明牛德姣
      關(guān)鍵詞:細(xì)粒度海量線程

      蔡 濤,王 飛,馬躍明,牛德姣,李 雷

      (江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)

      1 引 言

      DNN是當(dāng)前研究的熱點(diǎn),擴(kuò)大DNN模型的規(guī)模和更多的訓(xùn)練次數(shù)是常用的提高準(zhǔn)確率的方法,DNN參數(shù)的大小已經(jīng)超過1TB,無法全部存放到GPU的內(nèi)存中,這給計(jì)算機(jī)存儲(chǔ)系統(tǒng)性能帶來了很大的挑戰(zhàn),使其成為影響DNN訓(xùn)練效率的重要因素.NVM是近年來出現(xiàn)的新型非易失性存儲(chǔ)器(Non-Volatile Memory),具有近DRAM的讀寫速度和延遲、以及支持字節(jié)粒度訪問等特性,常見的包括PCM、FeRAM、RMEM和MRAM等多種類型,特別是Intel已推出了商用的Optane DC等[1-6],這使得NVM成為提高存儲(chǔ)系統(tǒng)性能的重要手段;但NVM具有不同于DISK和SSD的特性,給現(xiàn)有I/O軟件棧帶來了很大的挑戰(zhàn).現(xiàn)有的計(jì)算機(jī)系統(tǒng)中通常由文件系統(tǒng)管理對(duì)數(shù)據(jù)的訪問,通用的文件系統(tǒng)和NVM文件系統(tǒng)需要針對(duì)上層多種不同的應(yīng)用,通常采用以文件為粒度的訪問管理方式;而DNN中參數(shù)數(shù)據(jù)量巨大,使用文件粒度管理訪問,無法利用處理器中大量計(jì)算核心通過多個(gè)并發(fā)線程提高DNN海量參數(shù)的訪問效率.同時(shí)DNN訓(xùn)練過程中,對(duì)DNN參數(shù)文件的訪問則很規(guī)律,在開始訓(xùn)練前需要讀取參數(shù)文件中保存的海量參數(shù),在結(jié)束訓(xùn)練后或訓(xùn)練過程中內(nèi)存不夠時(shí)則需要將海量的參數(shù)寫回到參數(shù)文件中.這使得需要針對(duì)DNN訓(xùn)練中訪問海量參數(shù)的特點(diǎn),設(shè)計(jì)新型的NVM文件系統(tǒng),提高訪問DNN海量參數(shù)的效率.

      本文在分析DNN訓(xùn)練中海量參數(shù)特性和NVM對(duì)I/O軟件棧所帶來挑戰(zhàn)的基礎(chǔ)上,設(shè)計(jì)了面向DNN的高并發(fā)NVM文件系統(tǒng),包括基于并發(fā)線程的細(xì)粒度鎖和基于兩層日志的文件并發(fā)I/O機(jī)制,最后針對(duì)Intel的Optane DC在修改NOVA源代碼的基礎(chǔ)上實(shí)現(xiàn)了原型系統(tǒng),并使用Filebench和Fio在多種不同類型負(fù)載下進(jìn)行了測試與分析,驗(yàn)證所設(shè)計(jì)算法的有效性.

      本文的主要貢獻(xiàn)有:

      1)針對(duì)當(dāng)前NVM文件系統(tǒng)中文件鎖影響讀寫并發(fā)度的問題,設(shè)計(jì)基于并發(fā)線程的細(xì)粒度鎖,減少讀寫數(shù)據(jù)時(shí)加鎖的粒度,適應(yīng)多線程同時(shí)訪問數(shù)據(jù)的特點(diǎn),為提高大文件的讀寫效率奠定基礎(chǔ);

      2)針對(duì)DNN訓(xùn)練過程中需要反復(fù)快速讀寫大量參數(shù)的特點(diǎn),設(shè)計(jì)基于兩層日志的并發(fā)讀寫策略,利用多核處理器中支持多個(gè)線程并發(fā)訪問的優(yōu)勢,在加速大文件讀寫性能的同時(shí),有效保證數(shù)據(jù)的一致性;

      3)在NOVA文件系統(tǒng)的基礎(chǔ)上,實(shí)現(xiàn)了DNNFS的原型,分別使用Filebench和Fio中的多個(gè)負(fù)載進(jìn)行了測試與分析,測試結(jié)果表明,在使用多線程并發(fā)訪時(shí)相比NOVA最大能提高35.8%的IOPS值和21.6%的I/O帶寬.

      2 相關(guān)研究工作

      NVM存儲(chǔ)設(shè)備具有低延遲、字節(jié)可尋址、讀寫速度接近DRAM的特點(diǎn).研究人員對(duì)這些特征進(jìn)行了大量研究[7-11].下面首先介紹DNN訓(xùn)練的研究現(xiàn)狀,然后再介紹NVM文件系統(tǒng)和存儲(chǔ)系統(tǒng)的相關(guān)研究.

      針對(duì)DNN訓(xùn)練的研究如下:Jonghyun Bae等人在論文中提出的FlashNeuron[12]是第一個(gè)使用NVMe的DNN訓(xùn)練系統(tǒng)SSD作為后備存儲(chǔ).充分利用有限的SSD寫入帶寬,FlashNeuron引入了卸載調(diào)度程序,它有選擇地將一組中間數(shù)據(jù)卸載到壓縮格式的SSD來充分利用有限的SSD寫入帶寬,并且不會(huì)增加DNN測試時(shí)間.FlashNeuron跳過CPU直接在GPU和SSD之間進(jìn)行進(jìn)程之間的數(shù)據(jù)傳輸.Shine Kim等人提出的Behemoth[13]是一個(gè)用于超大規(guī)模DNN的以Flash為中心的訓(xùn)練加速器.論文中仔細(xì)分析了訓(xùn)練超大規(guī)模DNN模型時(shí)出現(xiàn)的內(nèi)存容量問題,并利用NAND閃存設(shè)備取代昂貴的DRAM設(shè)備.同樣為了滿足DNN訓(xùn)練過程中帶寬和壽命要求,作者還提出Flash Memory System(FMS),它提供高帶寬和較高的壽命.Jayashree Mohan等人首先分析當(dāng)今DNN檢查點(diǎn)的狀態(tài),強(qiáng)調(diào)了細(xì)粒度檢查點(diǎn)的必要性以及實(shí)現(xiàn)它所涉及的挑戰(zhàn).作者設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)用于DNN的自動(dòng)、細(xì)粒度的檢查點(diǎn)框架CheckFreq[14],利用DNN計(jì)算模型的訓(xùn)練提供低成本的流水線檢查點(diǎn),最后將恢復(fù)時(shí)間從幾小時(shí)縮短到幾秒.

      針對(duì)NVM文件系統(tǒng)和NVM存儲(chǔ)系統(tǒng)的研究如下:Jian Xu等人提出NOVA[15],一個(gè)用于混合易失性/非易失性主存的日志結(jié)構(gòu)NVM文件系統(tǒng).它擴(kuò)展了現(xiàn)有的日志結(jié)構(gòu)文件系統(tǒng)技術(shù),以利用混合內(nèi)存系統(tǒng)的特性.NOVA保持每個(gè)inode的單獨(dú)日志以提高并發(fā)性,以及將文件數(shù)據(jù)存儲(chǔ)在日志之外以最小化日志大小并重新減少垃圾收集成本.NOVA的日志提供元數(shù)據(jù)、數(shù)據(jù)和mmap原子性,并專注于簡單性和可靠性,在DRAM中保持復(fù)雜的元數(shù)據(jù)結(jié)構(gòu)以加速查找操作.Intel公司的Dulloor等人設(shè)計(jì)了一種新型的輕量級(jí)POSIX文件系統(tǒng)PMFS[16],通過使用CPU的load/store指令來實(shí)現(xiàn)對(duì)NVM存儲(chǔ)設(shè)備的直接訪問.同時(shí),PMFS利用NVM支持DAX的機(jī)制直接管理存儲(chǔ)設(shè)備,避免了塊驅(qū)動(dòng)和頁緩存層的額外開銷;PMFS利用CPU的分頁和內(nèi)存排序功能減少日志的粒度和支持更大的頁面,以最大程度地減少TLB條目的使用并加快虛擬地址的查找.PMFS還提供了mmap接口,無需借助任何緩沖區(qū)將文件數(shù)據(jù)直接映射到虛擬進(jìn)程空間,從而使得應(yīng)用程度能夠以內(nèi)存的方式讀取和寫入文件數(shù)據(jù),在保證一致性的同時(shí)提高內(nèi)存映射和訪問的效率.Zheng S等人設(shè)計(jì)出一種使用混合NVM和Disk的分層文件系統(tǒng)Ziggurat[17]來構(gòu)建接近獨(dú)立NVM性能的大容量存儲(chǔ)系統(tǒng).Ziggurat利用一種感知算法,根據(jù)應(yīng)用程序的訪問模式、寫入數(shù)據(jù)的大小以及應(yīng)用程序在寫入完成前暫停的可能性將數(shù)據(jù)寫入到NVM、DRAM或者Disk中;Ziggurat會(huì)在后臺(tái)計(jì)算每個(gè)文件的“熱度”,并將其中冷數(shù)據(jù)從NVM遷移到Disk中;Ziggurat還將多個(gè)數(shù)據(jù)塊合并為較大的順序?qū)懭雭砀玫乩肈isk的優(yōu)秀的順序?qū)懭氲奶匦?Ren Y等人設(shè)計(jì)了CrossFS[18],這是一個(gè)跨用戶級(jí)、固件和內(nèi)核分解的跨層直接訪問文件系統(tǒng)用于擴(kuò)展I/O性能和提高并發(fā)性的層.CrossFS旨在利用主機(jī)級(jí)和設(shè)備級(jí)計(jì)算能力.CrossFS引入基于文件描述符的并發(fā)控制,映射每個(gè)一個(gè)硬件級(jí)I/O隊(duì)列的文件描述符來同時(shí)處理跨文件描述符的不相交訪問.CrossFS將文件描述符同步到I/O隊(duì)列的問題轉(zhuǎn)換為請求排序問題.為了保證崩潰的一致性跨層設(shè)計(jì),CrossFS利用字節(jié)可尋址用于I/O隊(duì)列持久性和設(shè)計(jì)的非易失性存儲(chǔ)器輕量級(jí)固件級(jí)日志機(jī)制.Kadekodi R等人提出了SplitFS[19],一種用于持久內(nèi)存(PM)的文件系統(tǒng)較最先進(jìn)的PM文件系統(tǒng),顯著減少了軟件開銷.SplitFS呈現(xiàn)用戶空間庫文件系統(tǒng)和現(xiàn)有內(nèi)核PM文件系統(tǒng)之間的分離.用戶空間庫文件系統(tǒng)通過攔截來處理數(shù)據(jù)操作POSIX調(diào)用、內(nèi)存映射底層文件,以及使用處理器加載和存儲(chǔ)服務(wù)讀取和覆蓋.元數(shù)據(jù)操作由內(nèi)核PM文件系統(tǒng)(ext4 DAX)處理.Dong M等人提出了一個(gè)叫做Coffer[20]的新抽象,它是個(gè)集合隔離的NVM資源,在其上面構(gòu)建一個(gè)用戶空間中的高性能和受保護(hù)的NVM文件系統(tǒng).將NVM保護(hù)與管理分開通過保險(xiǎn)箱,以便用戶空間庫可以完全控制NVM在一個(gè)保險(xiǎn)箱內(nèi),讓內(nèi)核保證保險(xiǎn)箱之間的嚴(yán)格隔離;作者構(gòu)建一個(gè)NVM文件系統(tǒng)架構(gòu),將NVM的高性能帶到未修改的應(yīng)用程序并促進(jìn)開發(fā)高性能且靈活的用戶空間NVM文件系統(tǒng)庫.Chen Y等人提出了KucoFS[21],一個(gè)內(nèi)核和用戶態(tài)協(xié)作文件系統(tǒng).它由兩部分組成:一個(gè)具有直接訪問接口的用戶級(jí)庫和一個(gè)內(nèi)核線程,它通過切換頁表中的權(quán)限位來執(zhí)行元數(shù)據(jù)更新和強(qiáng)制寫保護(hù).KucoFS實(shí)現(xiàn)了用戶態(tài)的直接訪問和內(nèi)核態(tài)的細(xì)粒度寫保護(hù)并且進(jìn)一步探索了它對(duì)多核的可擴(kuò)展性.對(duì)于元數(shù)據(jù)的可擴(kuò)展性,KucoFS通過采用索引卸載技術(shù)重新平衡內(nèi)核和用戶空間之間的路徑名解析開銷.為了數(shù)據(jù)訪問效率,它協(xié)調(diào)內(nèi)核和用戶空間之間的數(shù)據(jù)分配,并使用范圍鎖寫和無鎖讀來提高并發(fā)性.蔡濤等人為了提高非易失性存儲(chǔ)系統(tǒng)并發(fā)執(zhí)行訪問請求的能力,針對(duì)存儲(chǔ)設(shè)備中的讀寫訪問請求、文件數(shù)據(jù)和元數(shù)據(jù)的不同特性,設(shè)計(jì)了基于區(qū)間鎖的文件數(shù)據(jù)并發(fā)寫策略、基于讀-拷貝修改的文件數(shù)據(jù)讀寫并發(fā)策略和基于最小自旋鎖的元數(shù)據(jù)同步策略,以提高訪問請求執(zhí)行的并發(fā)度;實(shí)現(xiàn)了利用非對(duì)稱鎖的高并發(fā)非易失存儲(chǔ)系統(tǒng)原型[22].羅盛美等人基于SSD存儲(chǔ)介質(zhì)的寫入特性,提出了面向分布式文件系統(tǒng)元數(shù)據(jù)的數(shù)據(jù)管理機(jī)制和更新方法[23],包括元數(shù)據(jù)內(nèi)存頁面的重新組織和管理、多次變化數(shù)據(jù)的迭代更新、元數(shù)據(jù)寫入方式的進(jìn)一步優(yōu)化等.所提方法減少了元數(shù)據(jù)更新的寫入頻次和實(shí)際寫入量,減少了隨機(jī)寫操作,提高了元數(shù)據(jù)寫入性能.舒繼武等人針對(duì)傳統(tǒng)存儲(chǔ)系統(tǒng)的構(gòu)建方式不適用于非易失主存,無法發(fā)揮出非易失主存的性能優(yōu)勢,并且容易造成一致性開銷高、空間利用率低、編程安全性低等問題分析了基于非易失主存構(gòu)建存儲(chǔ)系統(tǒng)面臨的挑戰(zhàn)[24],在系統(tǒng)軟件層次分別綜述了空間管理機(jī)制、新型編程模型、數(shù)據(jù)結(jié)構(gòu)、文件系統(tǒng)和分布式存儲(chǔ)系統(tǒng)等方面的研究進(jìn)展,并展望了基于非易失主存構(gòu)建存儲(chǔ)系統(tǒng)的未來研究方向.

      3 基于并發(fā)線程的細(xì)粒度鎖

      現(xiàn)有NVM文件系統(tǒng)通常需要應(yīng)對(duì)上層多種不同應(yīng)用混雜的場景,通常使用基于文件的鎖處理訪問沖突,在用于管理DNN參數(shù)文件的讀寫進(jìn)程時(shí),會(huì)出現(xiàn)難以利用處理器中的大量計(jì)算核心,通過多線程并發(fā)減少訪問海量參數(shù)所需時(shí)間開銷的問題.

      如圖1所示,在DNN訓(xùn)練進(jìn)程讀寫參數(shù)文件時(shí),NVM文件系統(tǒng)需要對(duì)參數(shù)文件加鎖,以阻止可能存在其他線程對(duì)DNN參數(shù)文件的訪問,保障DNN參數(shù)文件數(shù)據(jù)和元數(shù)據(jù)的一致性;但這會(huì)導(dǎo)致別的DNN訓(xùn)練線程無法訪問參數(shù)文件,從而不能利用多核處理器解決DNN訓(xùn)練過程中訪問海量參數(shù)效率的問題.

      圖1 DNN訓(xùn)練多線程訪問參數(shù)文件時(shí)的問題Fig.1 Problems with DNN training multiple threads to access parameter files

      本文針對(duì)DNN訓(xùn)練過程中讀寫參數(shù)文件規(guī)律性強(qiáng)的特點(diǎn),設(shè)計(jì)基于并發(fā)線程的細(xì)粒度鎖,提高訪問DNN參數(shù)文件的并發(fā)度,從而為利用多核處理器提高DNN訓(xùn)練過程中訪問海量參數(shù)的效率提供支撐.

      3.1 基于并發(fā)線程細(xì)粒度鎖的結(jié)構(gòu)

      首先,使用4元組(PID,Start_Add,End_Add,Next_Lock)表示基于并發(fā)線程的細(xì)粒度鎖,其中,PID是DNN訓(xùn)練線程的標(biāo)識(shí)符,Start_Add是封鎖區(qū)域在參數(shù)文件內(nèi)的起始地址,End_Add是封鎖區(qū)域在參數(shù)文件內(nèi)的結(jié)束地址,Next_Lock是指向下一個(gè)基于并發(fā)線程細(xì)粒度鎖的指針.

      同時(shí)給每個(gè)DNN參數(shù)文件構(gòu)建基于并發(fā)線程細(xì)粒度鎖的執(zhí)行隊(duì)列和等待隊(duì)列,在DNN參數(shù)文件的元數(shù)據(jù)中保存基于并發(fā)線程細(xì)粒度鎖執(zhí)行隊(duì)列和等待隊(duì)列的首地址.

      3.2 加鎖和解鎖的過程

      當(dāng)DNN參數(shù)訪問進(jìn)程調(diào)用NVM文件系統(tǒng)中的讀寫函數(shù)訪問DNN參數(shù)文件時(shí),首先NVM文件系統(tǒng)檢查當(dāng)前DNN參數(shù)訪問線程的數(shù)量,確定每個(gè)DNN參數(shù)訪問線程所對(duì)應(yīng)的DNN參數(shù)文件區(qū)間.接著,NVM文件系統(tǒng)為每個(gè)DNN參數(shù)訪問線程生成對(duì)應(yīng)的基于并發(fā)線程細(xì)粒度鎖.雖然DNN參數(shù)訪問線程讀寫參數(shù)文件非常規(guī)律,不會(huì)出現(xiàn)讀寫沖突的情況,但還存在其他的上層應(yīng)用有可能訪問DNN參數(shù)文件;因此NVM文件系統(tǒng)需要檢查DNN參數(shù)文件是否被別的應(yīng)用加鎖,如DNN參數(shù)文件已被加鎖,則將基于并發(fā)線程細(xì)粒度鎖加入DNN參數(shù)文件的等待隊(duì)列中,并阻塞對(duì)應(yīng)的DNN參數(shù)訪問線程;否則將基于并發(fā)線程細(xì)粒度鎖加入DNN參數(shù)文件的執(zhí)行隊(duì)列中,并開始訪問DNN參數(shù)文件中對(duì)應(yīng)的數(shù)據(jù).

      當(dāng)某個(gè)DNN參數(shù)訪問線程結(jié)束后,則將對(duì)應(yīng)的基于并發(fā)線程細(xì)粒度鎖從執(zhí)行隊(duì)列中刪除;在DNN參數(shù)文件中細(xì)粒度鎖執(zhí)行隊(duì)列為空后,喚醒被阻塞的其它應(yīng)用訪問請求.當(dāng)訪問DNN參數(shù)文件的其它應(yīng)用結(jié)束后,則喚醒基于并發(fā)線程細(xì)粒度鎖等待隊(duì)列中的DNN參數(shù)訪問線程,并將相應(yīng)的細(xì)粒度鎖從等待隊(duì)列中遷移到執(zhí)行隊(duì)列中.

      NVM文件系統(tǒng)中接收到其他應(yīng)用訪問DNN參數(shù)文件的訪問請求時(shí),檢查DNN參數(shù)文件的細(xì)粒度鎖執(zhí)行或等待隊(duì)列是否為空,如果為空則在對(duì)DNN參數(shù)文件加相應(yīng)鎖后執(zhí)行相應(yīng)的訪問請求;否則該訪問請求需要等待直到細(xì)粒度鎖執(zhí)行或等待隊(duì)列為空.

      4 基于兩層日志的文件并發(fā)I/O機(jī)制

      DNN訓(xùn)練過程中需要反復(fù)快速讀寫大量參數(shù),本文在基于并發(fā)線程細(xì)粒度鎖的基礎(chǔ)上,設(shè)計(jì)兩層日志結(jié)構(gòu),支撐多個(gè)并發(fā)線程讀寫DNN參數(shù)文件,從而提高DNN訓(xùn)練過程中讀寫海量參數(shù)的效率.

      4.1 兩層日志和參數(shù)文件元數(shù)據(jù)的結(jié)構(gòu)

      為了支撐并發(fā)讀寫保存海量DNN參數(shù)的文件,首先在NVM文件系統(tǒng)中設(shè)計(jì)兩層日志,包括DNN參數(shù)文件日志F_log和DNN參數(shù)文件段日志P_log.

      DNN參數(shù)文件日志用來記錄對(duì)該DNN參數(shù)文件所有并發(fā)DNN參數(shù)訪問線程的情況,每個(gè)DNN參數(shù)文件日志項(xiàng)對(duì)應(yīng)一個(gè)DNN參數(shù)訪問線程,其結(jié)構(gòu)如圖2所示.

      圖2 DNN參數(shù)文件日志及其日志項(xiàng)Fig.2 DNN parameter file log and its log entries

      DNN參數(shù)文件日志項(xiàng)包括Pid、Part_addr_head、P_length、P_flag、F_log_addr和Next6個(gè)部分,Pid是對(duì)應(yīng)DNN參數(shù)訪問線程的標(biāo)識(shí),Part_addr_head是該DNN參數(shù)訪問線程所訪問DNN參數(shù)文件中參數(shù)分段的首地址,P_length是該DNN參數(shù)訪問線程所訪問DNN參數(shù)分段的長度,P_flag用于DNN參數(shù)訪問線程對(duì)相應(yīng)參數(shù)分段的訪問是否完成(0代表未完成,1代表已完成),P_log_addr是指向該DNN參數(shù)文件日志項(xiàng)對(duì)應(yīng)DNN參數(shù)文件段日志的地址,Next是指向下一個(gè)DNN參數(shù)文件日志項(xiàng)的指針.

      DNN參數(shù)文件分段日志用來記錄每個(gè)DNN參數(shù)訪問線程的進(jìn)展情況,其結(jié)構(gòu)如圖3所示;DNN參數(shù)文件段日志中僅包含8字節(jié)的Tail_ptr,Tail_ptr表示對(duì)應(yīng)DNN參數(shù)訪問線程在參數(shù)分段中所完成讀寫操作的位置.

      圖3 DNN參數(shù)文件段日志P_log中的日志項(xiàng)Fig.3 Log entries in DNN parameter file segment log P_log

      在構(gòu)建DNN參數(shù)文件日志和DNN參數(shù)文件段日志這兩層日志的基礎(chǔ)上,還需要修改DNN參數(shù)文件的元數(shù)據(jù),如圖4所示,在現(xiàn)有的元數(shù)據(jù)基礎(chǔ)上DNN參數(shù)文件的元數(shù)據(jù)中增加Process_num、F_log_addr和F_flag3部分;其中Process_num表示并發(fā)訪問當(dāng)前DNN參數(shù)文件的DNN參數(shù)訪問線程數(shù)量,F_log_addr是指向DNN參數(shù)文件日志的指針,F_flag用來標(biāo)識(shí)DNN參數(shù)文件的訪問是否已經(jīng)完成(0代表未完成,1代表已完成).

      圖4 DNN參數(shù)文件元數(shù)據(jù)Fig.4 DNN parameter file metadata

      4.2 基于兩層日志的文件并發(fā)讀寫策略

      在兩層日志和對(duì)參數(shù)文件元數(shù)據(jù)修改的基礎(chǔ)上,為了支撐多個(gè)并發(fā)DNN參數(shù)訪問線程提高DNN海量參數(shù)的訪問效率,本文設(shè)計(jì)基于兩層日志的文件并發(fā)讀寫策略.

      DNN訓(xùn)練程序在讀寫參數(shù)前:首先根據(jù)DNN參數(shù)訪問線程的數(shù)量n,將DNN參數(shù)文件均分為n個(gè)參數(shù)段,每個(gè)DNN參數(shù)訪問線程負(fù)責(zé)訪問其中的一個(gè)參數(shù)段中的數(shù)據(jù),并將DNN參數(shù)文件元數(shù)據(jù)中的Process_num設(shè)置n、F_flag設(shè)置為0;接著,創(chuàng)建DNN參數(shù)文件日志,將其地址寫入DNN參數(shù)文件元數(shù)據(jù)中的F_log_addr中,再為每個(gè)DNN參數(shù)訪問線程構(gòu)建一個(gè)DNN參數(shù)文件日志項(xiàng),并將對(duì)應(yīng)DNN參數(shù)段的起始地址和長度分別寫入DNN參數(shù)文件日志項(xiàng)的Part_addr_head和P_length中,并將P_flag設(shè)置為0;然后,為每個(gè)DNN參數(shù)訪問線程創(chuàng)建一個(gè)DNN參數(shù)文件段日志,將其中的Tail_ptr設(shè)置為對(duì)應(yīng)DNN參數(shù)文件段的首地址,并將DNN參數(shù)文件段日志的地址寫入對(duì)應(yīng)的DNN參數(shù)文件日志項(xiàng)中P_log_addr;最后將n個(gè)DNN參數(shù)訪問線程對(duì)應(yīng)的DNN參數(shù)文件日志項(xiàng)通過Next指針連接起來構(gòu)成鏈表,并啟動(dòng)DNN參數(shù)訪問線程開始工作,再將DNN參數(shù)文件日志和DNN參數(shù)文件元數(shù)據(jù)寫回到NVM中.

      多個(gè)DNN參數(shù)訪問線程并發(fā)工作過程中:不同的DNN參數(shù)訪問線程各自訪問對(duì)應(yīng)的DNN參數(shù)段,從而提高對(duì)DNN參數(shù)的訪問效率;同時(shí)每隔一段時(shí)間,以cacheline為單位,將DNN參數(shù)文件分段日志寫入NVM中,以保存DNN參數(shù)訪問線程的工作進(jìn)度,避免DNN訓(xùn)練程序出錯(cuò)后重新訪問之前已訪問過的DNN參數(shù).

      當(dāng)一個(gè)DNN參數(shù)訪問線程結(jié)束后:將對(duì)應(yīng)的DNN參數(shù)文件日志項(xiàng)中的P_flag設(shè)置為1,將P_log_addr的值設(shè)置為NULL,并將DNN參數(shù)文件日志項(xiàng)寫回到NVM中,并刪除其對(duì)應(yīng)的DNN參數(shù)文件分段日志.

      所有的DNN參數(shù)訪問線程均結(jié)束后:將DNN參數(shù)文件元數(shù)據(jù)中的F_flag設(shè)置為1,F_log_addr設(shè)置為NULL,并寫回到NVM中,同時(shí)刪除DNN參數(shù)文件日志.

      4.3 基于兩層日志的文件一致性保證策略

      由于DNN參數(shù)數(shù)據(jù)量的巨大,DNN參數(shù)訪問線程在執(zhí)行過程中遇到存儲(chǔ)系統(tǒng)故障等問題后,需要避免在存儲(chǔ)系統(tǒng)恢復(fù)后從頭訪問DNN參數(shù),本文設(shè)計(jì)基于兩層日志的文件一致性保證策略,其主要步驟如下:

      步驟1.在存儲(chǔ)系統(tǒng)故障等消除后,首先從DNN參數(shù)文件元數(shù)據(jù)中獲取DNN參數(shù)文件日志的入口地址.

      步驟2.檢查DNN參數(shù)文件日志中所有日志項(xiàng)的P_flag值是否為0,判斷每個(gè)日志項(xiàng)對(duì)應(yīng)DNN參數(shù)訪問線程是否已經(jīng)安全完成,如未完成則繼續(xù)相應(yīng)的DNN參數(shù)訪問線程,并轉(zhuǎn)到步驟3;如所有DNN參數(shù)文件日志項(xiàng)的P_flag值均為0,則跳到步驟6.

      步驟3.針對(duì)未完成的DNN參數(shù)訪問線程,根據(jù)DNN參數(shù)文件日志項(xiàng)中的P_log_addr訪問其對(duì)應(yīng)的DNN參數(shù)文件段日志,如果其中的Tail_ptr值不為空,則繼續(xù)DNN參數(shù)的訪問過程,并跳到步驟5;否則轉(zhuǎn)到步驟4.

      步驟4.如果DNN參數(shù)文件段日志中的Tail_ptr值為空,則表明該DNN參數(shù)文件段的訪問已經(jīng)結(jié)束,但出現(xiàn)故障前未安全修改DNN參數(shù)文件日志和DNN參數(shù)文件元數(shù)據(jù);則將DNN參數(shù)文件日志項(xiàng)中的P_flag設(shè)置為1,將P_log_addr的值設(shè)置為NULL,并將DNN參數(shù)文件日志項(xiàng)寫回到NVM中,并刪除其對(duì)應(yīng)的DNN參數(shù)文件分段日志.

      步驟5.檢查DNN參數(shù)文件日志中是否還有其他未完成訪問的DNN參數(shù)文件段,如沒有,則轉(zhuǎn)到步驟6;否則轉(zhuǎn)到步驟2.

      步驟6.將DNN參數(shù)文件元數(shù)據(jù)中的F_flag設(shè)置為1,F_log_addr設(shè)置為NULL,并寫回到NVM中,同時(shí)刪除DNN參數(shù)文件日志,并完成DNN參數(shù)的訪問過程.

      5 測試與分析

      5.1 原型系統(tǒng)與測試平臺(tái)

      本文針對(duì)Intel的Optane DC,在NOVA的基礎(chǔ)上,實(shí)現(xiàn)面向DNN的高并發(fā)文件系統(tǒng)原型(DNNFS).首先修改NOVA中的文件元數(shù)據(jù),實(shí)現(xiàn)基于并發(fā)線程的細(xì)粒度鎖模塊;再修改文件的讀寫流程,實(shí)現(xiàn)基于兩層日志的并發(fā)I/O模塊和一致性模塊;其結(jié)構(gòu)如圖5所示.

      圖5 基于兩層日志文件系統(tǒng)的NVM存儲(chǔ)系統(tǒng)Fig.5 NVM storage system based on a two-layer journaling file system

      使用一臺(tái)服務(wù)器構(gòu)建原型系統(tǒng)的測試環(huán)境,該服務(wù)器的詳細(xì)配置如表1所示.分別掛載NOVA和DNNFS,數(shù)據(jù)塊的大小設(shè)置為4KB;首先使用Filebench中的Webserver、Varmail和Fileserver負(fù)載,模擬文件系統(tǒng)的典型運(yùn)行環(huán)境測試I/O的吞吐率;再使用Fio,測試多個(gè)I/O線程并發(fā)順序和隨機(jī)讀寫的I/O帶寬.每次測試前均重啟服務(wù)器和禁用緩存以消除緩存對(duì)測試結(jié)果的影響,每項(xiàng)測試均進(jìn)行10次并平均值作為測試結(jié)果.

      表1 原型系統(tǒng)測試環(huán)境的軟件配置Table 1 Software configuration of prototype system test environment

      5.2 多線程并發(fā)順序讀寫測試

      首先使用Fio測試多線程并發(fā)順序讀的帶寬,Fio使用libaio異步I/O引擎,隊(duì)列深度為2,并發(fā)線程數(shù)分別為1、6和12,每次I/O大小分別為4KB、16KB和256KB,數(shù)據(jù)量的大小為50GB,測試時(shí)間為60s,結(jié)果如圖6所示.

      圖6 改變線程數(shù)量和塊大小的Fio順序讀測試結(jié)果Fig.6 Fio sequential read test results with varying thread count and block size

      從圖6中的測試結(jié)果可以發(fā)現(xiàn),使用多個(gè)并發(fā)讀線程時(shí),與DNNFS相比NOVA文件系統(tǒng)的順序讀帶寬提高了3.5%~6.2%,這說明采用細(xì)粒度鎖和基于兩層日志的并發(fā)I/O機(jī)制能有效提高讀取文件的性能;當(dāng)采用單個(gè)讀線程時(shí),DNNFS相比NOVA損失了3%左右的讀帶寬,這是由于細(xì)粒度鎖和基于兩層日志并發(fā)I/O機(jī)制所帶來的額外時(shí)間開銷.隨著單次訪問粒度的增加,DNNFS和NOVA的讀帶寬均相應(yīng)提高,同時(shí)DNNFS相對(duì)NOVA所提高的讀帶寬也隨之增加,在6個(gè)并發(fā)讀線程時(shí)從3.5%增加到5.8%,在12個(gè)并發(fā)讀線程時(shí)從4.8%增加到6.2%,這是由于使用大訪問塊后減少了訪問次數(shù)從而提高了讀帶寬;同時(shí)在增加單次訪問塊大小時(shí),DNNFS相對(duì)NOVA所提高的讀帶寬比例也更高,這進(jìn)一步說明了DNNFS具有并發(fā)讀帶寬高的優(yōu)勢;但在并發(fā)讀線程數(shù)為12時(shí),使用256KB大小的訪問塊相比16KB訪問塊DNNFS讀帶寬所提高的比例出現(xiàn)了下降,這說明增大訪問塊對(duì)提高讀帶寬的作用在降低.在增加讀線程數(shù)量時(shí),DNNFS和NOVA也均能提高讀帶寬,在所有測試中均是采用12個(gè)并發(fā)線程時(shí)讀帶寬最高;但當(dāng)并發(fā)讀線程數(shù)從6增加到12時(shí),DNNFS和NOVA讀帶寬所提高的比例出現(xiàn)了下降,但DNNFS讀帶寬提高的比例始終高于NOVA,這說明增加并發(fā)讀進(jìn)程能提高讀帶寬,但也會(huì)帶來額外的管理開銷.

      采用相同的配置,測試多線程并發(fā)順序?qū)慖/O帶寬,結(jié)果如圖7所示.

      從圖7可以看出,使用多個(gè)并發(fā)寫線程時(shí),總體來說,DNNFS具有更高的順序?qū)憥捥嵘?相比NOVA的順序?qū)憥捥岣吡?2.1%~21.6%,這說明采用細(xì)粒度鎖和基于兩層日志的并發(fā)I/O機(jī)制能有效提高讀取文件的性能;當(dāng)采用單個(gè)寫線程時(shí),DNNFS相比NOVA損失了3%左右的寫帶寬,這是由于細(xì)粒度鎖和基于兩層日志并發(fā)I/O機(jī)制所帶來的額外時(shí)間開銷.隨著單次訪問粒度的增加,DNNFS和NOVA的寫帶寬先增高后下降,當(dāng)線程數(shù)從1增加到6時(shí),NOVA和DNNFS的寫帶寬均有提升,同時(shí)DNNFS相對(duì)NOVA所提高的寫帶寬也隨之增加,在6個(gè)并發(fā)寫線程時(shí)從12.1%增加到17.2%.當(dāng)并發(fā)寫線程數(shù)從6增加到12時(shí),NOVA和DNNFS的寫帶寬有隨著塊粒度大小有不同的趨勢趨勢,在4KB塊大小、12并發(fā)線程時(shí),DNNFS提高了22%的寫性能,在16KB塊大小、12并發(fā)線程時(shí),DNNFS下降了37%的寫帶寬,在256KB塊大小、12并發(fā)線程時(shí),DNNFS下降了34%的寫帶寬,這是因?yàn)槎鄠€(gè)線程在訪問同一數(shù)據(jù)塊時(shí)會(huì)造成訪問沖突,因此會(huì)相應(yīng)的降低帶寬,但總的來說,隨著塊大小和線程粒度逐漸增加時(shí),DNNFS相對(duì)NOVA在寫帶寬的提升比例更大,下降的比例更小.這表明在順序?qū)懙呢?fù)載中,由于多個(gè)并發(fā)寫線程的沖突,DNNFS中設(shè)計(jì)的細(xì)粒度鎖和基于兩層日志的并發(fā)I/O機(jī)制能有更好的寫帶寬表現(xiàn).

      5.3 多線程并發(fā)隨機(jī)讀寫測試

      接著,使用Fio測試多線程并發(fā)隨機(jī)讀的帶寬,Fio使用libaio異步I/O引擎,隊(duì)列深度為2,并發(fā)線程數(shù)分別為1、6和12,每次I/O大小分別為4KB、16KB和256KB,數(shù)據(jù)量的大小為50GB,測試時(shí)間為60s,結(jié)果如圖8所示.

      圖8 改變線程數(shù)量和塊大小的Fio隨機(jī)讀測試結(jié)果Fig.8 Fio sequential read test results with varying thread count and block size

      從圖8中的測試結(jié)果可以發(fā)現(xiàn),使用多個(gè)并發(fā)讀線程時(shí),與DNNFS相比NOVA文件系統(tǒng)的順序讀帶寬提高了3.6%~5.9%,這說明采用細(xì)粒度鎖和基于兩層日志的并發(fā)I/O機(jī)制能有效提高讀取文件的性能;當(dāng)采用單個(gè)讀線程時(shí),DNNFS相比NOVA損失了3.7%左右的讀帶寬,這是由于細(xì)粒度鎖和基于兩層日志并發(fā)I/O機(jī)制所帶來的額外時(shí)間開銷.隨著單次訪問粒度的增加,DNNFS和NOVA的讀帶寬均相應(yīng)提高,同時(shí)DNNFS相對(duì)NOVA所提高的讀帶寬也隨之增加,在6個(gè)并發(fā)讀線程時(shí)從3.5%增加到5.7%,在12個(gè)并發(fā)讀線程時(shí)從5.7%增加到5.9%,這是由于使用大訪問塊后減少了訪問次數(shù)從而提高了讀帶寬;同時(shí)在增加單次訪問塊大小時(shí),DNNFS相對(duì)NOVA所提高的讀帶寬比例也更高,這進(jìn)一步說明了DNNFS具有并發(fā)讀帶寬高的優(yōu)勢;在并發(fā)讀線程數(shù)為12時(shí),使用256KB大小的訪問塊相比4KB訪問塊DNNFS讀帶寬所提高的比例有所下降,這說明增大訪問塊對(duì)提高讀帶寬的作用在降低.在增加讀線程數(shù)量時(shí),DNNFS和NOVA也均能提高讀帶寬,在所有測試中均是采用12個(gè)并發(fā)線程時(shí)讀帶寬較高;但當(dāng)并發(fā)讀線程數(shù)從6增加到12時(shí),DNNFS和NOVA讀帶寬所提高的比例出現(xiàn)了下降,但DNNFS讀帶寬提高的比例始終高于NOVA,這說明增加并發(fā)讀線程能提高讀帶寬,但也會(huì)帶來額外的管理開銷.

      同樣對(duì)多線程隨機(jī)寫I/O性能進(jìn)行測試,測試參數(shù)的設(shè)置和隨機(jī)讀相同,測試結(jié)果如圖9所示.

      圖9 改變線程數(shù)量和塊大小的Fio隨機(jī)寫測試結(jié)果Fig.9 Fio sequential write test results with varying thread count and block size

      從圖9中可以看出,使用多個(gè)并發(fā)隨機(jī)寫線程時(shí),總體來說,DNNFS具有更高的隨機(jī)寫帶寬提升,相比NOVA的隨機(jī)寫寫帶寬提高了12.3%~20.3%,這說明采用細(xì)粒度鎖和基于兩層日志的并發(fā)I/O機(jī)制能有效提高并發(fā)隨機(jī)寫文件的性能;當(dāng)采用單個(gè)寫線程時(shí),DNNFS相比NOVA損失了2.2%左右的讀帶寬,這是由于細(xì)粒度鎖和基于兩層日志并發(fā)I/O機(jī)制所帶來的額外時(shí)間開銷.隨著單次訪問粒度的增加,DNNFS和NOVA的寫帶寬先增高后下降,當(dāng)線程數(shù)從1增加到6時(shí),NOVA和DNNFS的寫帶寬均有提升,同時(shí)DNNFS相對(duì)NOVA所提高的寫帶寬也隨之增加,在6個(gè)并發(fā)讀線程時(shí)從12.3%增加到17.6%.當(dāng)并發(fā)線程數(shù)從6增加到12時(shí),NOVA和DNNFS的寫帶寬有隨著塊粒度大小有不同的趨勢趨勢,NOVA隨著并發(fā)線程數(shù)的增加,寫帶寬下降了1%~40%,而DNNFS在4KB塊大小、12并發(fā)線程時(shí),提高了1.5%的寫性能,在16KB塊大小、12并發(fā)線程時(shí),DNNFS下降了39%的寫帶寬,在256KB塊大小、12并發(fā)線程時(shí),DNNFS下降了36%的寫帶寬,這是由于使用大訪問塊后帶來了寫訪問沖突的影響,但總的來說,隨著塊大小和線程粒度逐漸增加時(shí),DNNFS相對(duì)NOVA在寫帶寬的提升比例更大,下降的比例更小.這表明在順序?qū)懙呢?fù)載中,由于多個(gè)并發(fā)寫線程的沖突,DNNFS中設(shè)計(jì)的細(xì)粒度鎖和基于兩層日志的并發(fā)I/O機(jī)制能有更好的寫帶寬表現(xiàn).

      5.4 Webserver負(fù)載測試

      首先在服務(wù)器上掛載NOVA和DNNFS文件系統(tǒng),然后使用Filebench中的Webserver負(fù)載,模擬用戶訪問Web服務(wù)器的情況進(jìn)行測試.設(shè)置測試文件數(shù)量為1000個(gè),每個(gè)目錄中包含20個(gè)文件,每次I/O大小為4KB,I/O操作中讀寫訪問請求的比例為10:1,測試時(shí)間為60s,線程數(shù)量為1、2、4、6、8、10、12和14,測試吞吐率IOPS(Input Operations Per Second)值,結(jié)果如圖10所示.

      圖10 改變線程數(shù)量的Webserver負(fù)載測試結(jié)果Fig.10 Webserver load test results with varying number of threads

      從圖10中可以看出,在Webserver負(fù)載下,DNNFS相比NOVA,在2個(gè)線程時(shí),IOPS提升了3.3%,這是因?yàn)閃ebserver中的大部分請求是讀訪問請求,還不能充分發(fā)揮DNNFS基于并發(fā)線程細(xì)粒度鎖以及兩層日志的并發(fā)讀寫策略的優(yōu)勢.當(dāng)線程數(shù)為8時(shí),NOVA的IOPS達(dá)到了最大峰值;隨著線程數(shù)的繼續(xù)增加,IOPS會(huì)略微下降,這是因?yàn)殡S著線程增加會(huì)產(chǎn)生越來越多的文件鎖沖突,影響了訪問請求的執(zhí)行效率.DNNFS在線程數(shù)為4時(shí)的IOPS值就超過了NOVA的IOPS最大值,在線程數(shù)為8時(shí),相比NOVA提升了20.5%,同時(shí)在線程數(shù)為12時(shí),提高IOPS值的比例最高達(dá)到了28.4%;這表明DNNFS中設(shè)計(jì)的基于并發(fā)線程細(xì)粒度鎖能夠減少讀寫數(shù)據(jù)時(shí)加鎖的粒度,為提高大文件的讀寫效率奠定基礎(chǔ);以及基于兩層日志的并發(fā)讀寫策略,利用多核處理器中不同線程并發(fā)訪問的優(yōu)勢來加速大文件讀寫吞吐量.

      5.5 Varmail負(fù)載測試

      接著,使用Filebench的Varmail負(fù)載,模擬Email服務(wù)器的使用情況.設(shè)置文件數(shù)量為1000,每個(gè)目錄中創(chuàng)建的文件個(gè)數(shù)為20,每次I/O大小為4KB,I/O操作中讀寫訪問請求的比例為1:1,測試時(shí)間為60s,測試線程數(shù)量為1、2、4、6、8、10、12和14時(shí)的吞吐率IOPS值,結(jié)果如圖11所示.

      圖11 改變線程數(shù)量的Varmail負(fù)載測試結(jié)果Fig.11 Varmail load test results with varying number of threads

      從圖11可以看出,總體上,DNNFS呈逐漸上升趨勢,IOPS值始終高于NOVA.Varmail 在Varmal負(fù)載測試下,超過2線程時(shí)DNNFS的IOPS值相比NOVA均有所提高.在線程數(shù)小于8時(shí),NOVA的IOPS值隨著線程數(shù)增加而逐步提高,在8線程時(shí)達(dá)到峰值性能,隨著線程數(shù)再提高,性能幾乎持平.DNNFS相比于NOVA隨著線程數(shù)的吞吐量都有所增加,DNNFS在6線程時(shí)就達(dá)到了NOVA的最大IOPS值.在線程數(shù)為2時(shí),DNNFS相比NOVA提升了10.2%,同時(shí)在線程數(shù)為14時(shí),提高IOPS值的比例最高達(dá)到了25.5%;這表明DNNFS中設(shè)計(jì)的基于并發(fā)線程細(xì)粒度鎖能夠減少讀寫數(shù)據(jù)時(shí)加鎖的粒度,提高了大文件的讀寫效率;基于兩層日志的并發(fā)讀寫策略也可以利用多核處理器中不同線程來提高并發(fā)讀寫吞吐量.

      5.6 Fileserver負(fù)載測試

      使用Filebench的Fileserver負(fù)載,模擬文件服務(wù)器中文件共享和讀寫操作等情況.設(shè)置文件數(shù)量為10000,每個(gè)目錄中創(chuàng)建20個(gè)文件,每次I/O大小為4KB,I/O操作中讀寫訪問請求的比例為1:10,測試時(shí)間為60s,測試線程數(shù)量為1、2、4、6、8、10、12和14時(shí)的吞吐率IOPS值,結(jié)果如圖12所示.

      圖12 改變線程數(shù)量的Fileserver負(fù)載測試結(jié)果Fig.12 Fileserver load test results with varying number of threads

      從圖12可以發(fā)現(xiàn),Fileserver負(fù)載下,與Webserver和Varmail負(fù)載下的測試結(jié)果類似,DNNFS可以有效提升I/O性能,總體上,相比PMEM的IOPS值提高了15.4%~35.8%.在NOVA中,當(dāng)線程數(shù)為8時(shí)達(dá)到了IOPS的最大值,此時(shí)隨著線程數(shù)的增加,IOPS值開始略微下降,在同樣情況下DNNFS的IOPS仍有小幅的性能提升,這是由于Fileserver中讀寫比例為1:10,主要是寫負(fù)載,DNNFS中設(shè)計(jì)的基于并發(fā)線程細(xì)粒度鎖有效的減小了鎖的粒度,提高了讀寫大文件時(shí)的并發(fā)度;同時(shí)基于兩層的日志結(jié)構(gòu)以及基于兩層日志的并發(fā)讀寫策略可以利用多核處理器中不同線程來進(jìn)行并發(fā)讀寫.在DNNFS中,當(dāng)線程數(shù)為6時(shí),IOPS值就超過了NOVA中的IOPS最大值;并在線程數(shù)為14時(shí),DNNFS較NOVA最大提升了35.8%的IOPS值.總的來說,在Fileserver負(fù)載下,DNNFS較NOVA更適用于多核處理器中多線程下訪問請求沖突較多的情況.

      6 總 結(jié)

      增加DNN的參數(shù)數(shù)量和訓(xùn)練次數(shù)是有效提高模型準(zhǔn)確率的有效方式,但這導(dǎo)致DNN訓(xùn)練過程中需要頻繁讀寫海量參數(shù),成為影響DNN訓(xùn)練效率的重要問題.NVM具有讀寫速度快的優(yōu)勢,能有效提高DNN訓(xùn)練中訪問海量參數(shù)的效率.但現(xiàn)有的NVM文件系統(tǒng)是針對(duì)多種上層應(yīng)用混雜的情況設(shè)計(jì),通?;谖募6葋砉芾頂?shù)據(jù)訪問,存在難以利用處理器中多個(gè)計(jì)算核心并發(fā)讀寫DNN海量參數(shù)提高訓(xùn)練效率的問題.

      本文針對(duì)如何利用并發(fā)線程提高DNN訓(xùn)練中海量參數(shù)訪問效率的問題,在分析NVM特性和對(duì)存儲(chǔ)I/O軟件棧帶來的挑戰(zhàn)基礎(chǔ)上,設(shè)計(jì)了基于并發(fā)線程細(xì)粒度鎖機(jī)制,通過修改文件元數(shù)據(jù),縮小加鎖粒度,為利用多核處理器提高DNN訓(xùn)練過程中訪問海量參數(shù)的效率提供支撐;同時(shí)設(shè)計(jì)了基于兩層日志的文件并發(fā)I/O機(jī)制,利用兩層日志結(jié)構(gòu)支撐多個(gè)海量參數(shù)訪問線程的并發(fā)讀寫,同時(shí)能有效保證DNN參數(shù)訪問中的數(shù)據(jù)一致性;此外在Intel的Optane DC設(shè)備基礎(chǔ)上修改NOVA的源代碼,實(shí)現(xiàn)了面向DNN高并發(fā)NVM文件系統(tǒng)的原型DNNFS,使用Filebench和Fio中的多種負(fù)載進(jìn)行了測試與分析,結(jié)果表明相比NOVA,DNNFS能有效的提高并發(fā)線程讀寫數(shù)據(jù)的IOPS值和I/O帶寬.

      猜你喜歡
      細(xì)粒度海量線程
      融合判別性與細(xì)粒度特征的抗遮擋紅外目標(biāo)跟蹤算法
      一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
      細(xì)粒度的流計(jì)算執(zhí)行效率優(yōu)化方法
      海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
      基于雙線性卷積網(wǎng)絡(luò)的細(xì)粒度圖像定位
      淺談linux多線程協(xié)作
      支持細(xì)粒度權(quán)限控制且可搜索的PHR云服務(wù)系統(tǒng)
      一個(gè)圖形所蘊(yùn)含的“海量”巧題
      基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
      Linux線程實(shí)現(xiàn)技術(shù)研究
      博乐市| 鸡东县| 西昌市| 邮箱| 定州市| 洞口县| 额尔古纳市| 修水县| 佛冈县| 新津县| 侯马市| 广德县| 鄯善县| 兴文县| 措勤县| 白朗县| 英吉沙县| 元谋县| 宁德市| 鞍山市| 玉环县| 苍山县| 城步| 汾阳市| 莱西市| 文成县| 沧州市| 电白县| 万安县| 龙游县| 仙居县| 浏阳市| 新河县| 鄂托克前旗| 舞阳县| 旬邑县| 沁水县| 新巴尔虎右旗| 罗山县| 桂东县| 图木舒克市|