<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 專題 > 構(gòu)建世界更快的內(nèi)存文件系統(tǒng)

          構(gòu)建世界更快的內(nèi)存文件系統(tǒng)

          作者:沙行勉 時間:2018-07-26 來源:電子產(chǎn)品世界 收藏
          編者按:新一代非易失性存儲器,如PCM、MRAM等,將使內(nèi)存具備數(shù)據(jù)存儲的能力,并顯示出低功耗和優(yōu)秀的數(shù)據(jù)訪問性能等優(yōu)越性。把非易失性存儲級內(nèi)存納入內(nèi)存管理空間將成為解決傳統(tǒng)計算機系統(tǒng)數(shù)據(jù)I/O瓶頸的有效解決途徑。然而,現(xiàn)有文件系統(tǒng)的設(shè)計架構(gòu)使其無法充分利用非易失性內(nèi)存的特性并發(fā)揮其優(yōu)勢,因此,我們需要重新審視現(xiàn)有文件系統(tǒng)的架構(gòu)。從全新的角度思考面向非易失性內(nèi)存的新型內(nèi)存文件系統(tǒng)設(shè)計框架。我們提出了一個全新的概念“文件虛擬地址空間”,并在此基礎(chǔ)之上,設(shè)計并實現(xiàn)了一個新型的持久化內(nèi)存文件系統(tǒng)SIMFS。

          作者 / 沙行勉 華東師范大學(xué) 計算機科學(xué)與軟件工程學(xué)院(上海 200062)

          本文引用地址:http://www.ex-cimer.com/article/201807/389570.htm

          摘要:新一代非易失性存儲器,如PCM、MRAM等,將使內(nèi)存具備數(shù)據(jù)存儲的能力,并顯示出低功耗和優(yōu)秀的數(shù)據(jù)訪問性能等優(yōu)越性。把非易失性存儲級內(nèi)存納入內(nèi)存管理空間將成為解決傳統(tǒng)計算機系統(tǒng)數(shù)據(jù)I/O瓶頸的有效解決途徑。然而,現(xiàn)有文件系統(tǒng)的設(shè)計架構(gòu)使其無法充分利用非易失性內(nèi)存的特性并發(fā)揮其優(yōu)勢,因此,我們需要重新審視現(xiàn)有文件系統(tǒng)的架構(gòu)。從全新的角度思考面向非易失性內(nèi)存的新型設(shè)計框架。我們提出了一個全新的概念“文件”,并在此基礎(chǔ)之上,設(shè)計并實現(xiàn)了一個新型的文件系統(tǒng)SIMFS。

            沙行勉 (Edwin Sha),博導(dǎo),2000年起任美國終身制正教授 (Full Professor),2010年起任教育部長江學(xué)者講座教授,2011年起任中國千人計劃特聘專家,2012-2017年任重慶大學(xué)特聘教授和計算機學(xué)院院長,現(xiàn)全職任上海華東師范大學(xué)終身特聘教授。共獲各類國家級教學(xué)、科研獎項40多項。

          0 引言

            大數(shù)據(jù)時代的到來使得人們對數(shù)據(jù)處理效率的要求日益高漲,推動研究界和工業(yè)界發(fā)展可以克服傳統(tǒng)內(nèi)存、外存之間性能鴻溝的內(nèi)存計算解決方案。相比基于傳統(tǒng)外存的解決方案,內(nèi)存計算[1]有突破性的性能優(yōu)勢,這一點從Spark[2]和Hadoop[3]的對比中得到體現(xiàn)。Spark是一種新型內(nèi)存集群計算框架,而Hadoop是基于傳統(tǒng)外存的集群計算框架MapReduce[4]的經(jīng)典實現(xiàn)。相比之下,Spark可以比Hadoop快100倍。在計算機系統(tǒng)中,文件系統(tǒng)是數(shù)據(jù)存儲的最根本的基礎(chǔ)設(shè)施,對上層應(yīng)用提供存儲數(shù)據(jù)、訪問數(shù)據(jù)的基本服務(wù)。因此,如果能夠提供文件系統(tǒng)的內(nèi)存計算方案,就能加速所有在其上運行的、需要處理數(shù)據(jù)的應(yīng)用,從而提升整個系統(tǒng)的性能及用戶體驗。

            新興的非易失性內(nèi)存(Non-Volatile Memory,簡稱NVM)[5]提供了實現(xiàn)的機遇。一方面,NVM可以通過DIMM插槽直接連接到內(nèi)存總線,提供字節(jié)尋址的高速數(shù)據(jù)訪問;另一方面,NVM存儲密度大、數(shù)據(jù)掉電不丟失,和磁盤、固態(tài)硬盤一樣提供大容量的持久性數(shù)據(jù)存儲。在采用新型非易失性內(nèi)存的系統(tǒng)結(jié)構(gòu)中,文件系統(tǒng)可以在NVM內(nèi)存上存儲并通過片上高速總線讀寫。

            但是現(xiàn)有系統(tǒng)軟件沒有充分發(fā)揮非易失性內(nèi)存物理特性和優(yōu)勢,如現(xiàn)有的元數(shù)據(jù)結(jié)構(gòu)仍然以塊設(shè)備上的傳統(tǒng)文件系統(tǒng)的元數(shù)據(jù)結(jié)構(gòu)為模板,要用軟件查找元數(shù)據(jù)結(jié)構(gòu)以獲得文件數(shù)據(jù)塊的物理位置,造成極大性能開銷。為此,我們需要思考如何將文件數(shù)據(jù)結(jié)構(gòu)與當(dāng)前計算機體系中的內(nèi)存管理機制相結(jié)合,并充分利用CPU中現(xiàn)有虛擬地址轉(zhuǎn)換硬件的處理能力構(gòu)建高效的內(nèi)存文件系統(tǒng)。

          1 對文件系統(tǒng)設(shè)計的思考

            對于在非易失性內(nèi)存上建立文件系統(tǒng)上有一個常見誤解,認為可以利用Ramdisk一類的工具在非易失性內(nèi)存上建立一個模擬磁盤,然后把現(xiàn)有塊設(shè)備文件系統(tǒng)部署到模擬磁盤。這種誤解沒有考慮到傳統(tǒng)I/O軟件棧和塊設(shè)備文件系統(tǒng)產(chǎn)生的系統(tǒng)開銷,不能發(fā)揮非易失性內(nèi)存文件系統(tǒng)的卓越性能。塊設(shè)備文件系統(tǒng)(如EXT4)需要經(jīng)過諸多針對塊設(shè)備的軟件層次,例如I/O調(diào)度層、通用塊層和塊設(shè)備驅(qū)動層,如圖1所示。諸多軟件層次會造成數(shù)據(jù)在各級緩沖區(qū)中的多次拷貝。即使是管理模擬成磁盤的內(nèi)存,對于傳統(tǒng)I/O軟件棧和塊設(shè)備文件系統(tǒng),其多個軟件層次仍會造成數(shù)據(jù)讀寫之外的大量系統(tǒng)負載及性能損失。所以,為充分發(fā)掘非易失性內(nèi)存的性能優(yōu)勢,系統(tǒng)設(shè)計者需要突破原有的設(shè)計思想,從新研究和設(shè)計面向新型非易失性的內(nèi)存文件系統(tǒng)。

            當(dāng)前內(nèi)存文件系統(tǒng)可以分為兩類。一類是臨時性的內(nèi)存文件系統(tǒng),如RAMFS和TMPFS。從系統(tǒng)設(shè)計的角度來看,這類文件系統(tǒng)借用了內(nèi)核中的虛擬文件系統(tǒng)(VFS)所定義的通用文件組織結(jié)構(gòu),把所有的元數(shù)據(jù)(例如超級塊和索引節(jié)點)和數(shù)據(jù)都存放于內(nèi)存。但是,每次加載的元數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中的位置不確定,物理內(nèi)存也會隨系統(tǒng)關(guān)閉而回收。因此,即便把臨時內(nèi)存文件系統(tǒng)部署在NVM上,系統(tǒng)重啟后也無法找回文件。

            另一類是持久化的內(nèi)存文件系統(tǒng),例如BPFS[6],PRAMFS[7]和PMFS[8]。與臨時內(nèi)存文件系統(tǒng)不同,文件系統(tǒng)的元數(shù)據(jù)結(jié)構(gòu)獨立于內(nèi)核的內(nèi)存管理系統(tǒng),并且固定存放在非易失性內(nèi)存的已知位置中。在系統(tǒng)重啟后,持久化內(nèi)存文件系統(tǒng)可以在非易失性內(nèi)存的確定位置找到其特有的元數(shù)據(jù)結(jié)構(gòu)。現(xiàn)有的內(nèi)存文件系統(tǒng)通過軟件搜索元數(shù)據(jù)結(jié)構(gòu),或者建立額外的映射表,將文件映射到。這些方法都不能充分利用處理器中的地址轉(zhuǎn)換硬件MMU。

            當(dāng)前持久化內(nèi)存文件系統(tǒng)的設(shè)計有兩大缺點:

            第一,沒有考慮到傳統(tǒng)I/O軟件棧和塊設(shè)備文件系統(tǒng)(如EXT4)需要經(jīng)過諸多針對塊設(shè)備的軟件層次,造成大量額外的系統(tǒng)管理開銷及性能損失。

            第二,元數(shù)據(jù)搜索由軟件完成,具有較大的開銷。文件系統(tǒng)通常管理兩類數(shù)據(jù):描述文件屬性的元數(shù)據(jù)和文件數(shù)據(jù)。其中,元數(shù)據(jù)包含指向文件數(shù)據(jù)的物理存放地址的索引結(jié)構(gòu)。例如,EXT4文件系統(tǒng)的索引節(jié)點(inode)中使用直接索引和間接索引記錄文件數(shù)據(jù)的塊在磁盤中的物理地址。以圖2(a)為例,如果要訪問某文件的k個頁面,該文件系統(tǒng)需要不斷重復(fù)執(zhí)行以下步驟:1)文件系統(tǒng)搜索元數(shù)據(jù),查找請求的數(shù)據(jù)頁的物理位置;2)文件系統(tǒng)調(diào)用數(shù)據(jù)傳輸函數(shù)訪問當(dāng)前頁面的數(shù)據(jù)。

            因此,我們需要為內(nèi)存文件系統(tǒng)的文件創(chuàng)建一個連續(xù)的,這樣就可以利用文件的虛擬地址空間和硬件MMU迅速定位到文件數(shù)據(jù)的物理位置,避免軟件方式搜索元數(shù)據(jù)結(jié)構(gòu)產(chǎn)生的開銷。如圖2(b)所示,文件系統(tǒng)只要1次數(shù)據(jù)拷貝操作就可以讀完k個頁面,并不需要用軟件流程逐層搜索文件的元數(shù)據(jù)結(jié)構(gòu)。所以,連續(xù)虛擬地址空間中的文件訪問開銷遠低于現(xiàn)有文件系統(tǒng)。

          2 持久化內(nèi)存文件系統(tǒng)設(shè)計的基本架構(gòu)

            在以上的思考基礎(chǔ)上,我們提出了“文件虛擬地址空間”的全新設(shè)計框架,并在此設(shè)計框架下設(shè)計實現(xiàn)了持久化內(nèi)存文件系統(tǒng)(Sustainable In-Memory File System,SIMFS),打破了傳統(tǒng)文件系統(tǒng)的設(shè)計思路。

            在該框架下,每個文件都有一個獨立且連續(xù)的虛擬地址空間。為了充分利用地址轉(zhuǎn)換硬件并迅速地建立文件的虛擬地址空間,我們提出一個新的元數(shù)據(jù)結(jié)構(gòu)“文件頁表(File Page Table)”。文件頁表將存放文件數(shù)據(jù)的物理頁組織起來,保存文件的每個數(shù)據(jù)頁的地址映射信,如圖3所示。

            在文件虛擬地址空間的框架下,每個文件都有一個文件頁表。在創(chuàng)建文件時,系統(tǒng)給該文件建立一個基本的文件頁表,例如三級頁表,每級各有一個物理頁。

            在這個新框架下,文件頁表用于為對應(yīng)的文件建立虛擬地址空間。在打開文件時,系統(tǒng)將文件頁表頂層的數(shù)個指針寫入進程頁表對應(yīng)的位置,這樣,文件的數(shù)據(jù)頁就可以用虛擬地址和load/store指令直接訪問。這種建立虛擬地址空間的方式的耗時與文件大小無關(guān),系統(tǒng)可以在常數(shù)時間內(nèi)為文件建立起進程中的虛擬地址空間。基于這種結(jié)構(gòu),文件可以獲得連續(xù)的虛擬地址空間,而真正的文件數(shù)據(jù)卻可以分散存儲在物理內(nèi)存中,每一個文件所擁有的物理內(nèi)存都由一個專有的層次化的“文件頁表”組織起來。

            這個全新的文件虛擬地址空間的優(yōu)點在于:

            1) 文件系統(tǒng)讀文件數(shù)據(jù)不需要軟件搜索元數(shù)據(jù)結(jié)構(gòu)。此外,由于文件的虛擬地址空間已經(jīng)嵌入到進程的虛擬地址空間,讀文件數(shù)據(jù)不會引起缺頁中斷;

            2) 當(dāng)文件擁有連續(xù)虛擬地址空間后,文件訪問操作僅需調(diào)用一次數(shù)據(jù)傳輸操作。文件的虛擬地址到物理地址的轉(zhuǎn)換由CPU中的硬件MMU完成,不需要軟件搜索元數(shù)據(jù),查找文件數(shù)據(jù)的效率極高。

          3 結(jié)論

            本文介紹了基于文件虛擬地址空間的概念而設(shè)計,并在Linux內(nèi)核中實現(xiàn)的一個功能完整的持久化內(nèi)存文件系統(tǒng)SIMFS。首次提出“文件虛擬地址空間”的設(shè)計框架。提出了在文件虛擬地址空間組織文件數(shù)據(jù)的組織結(jié)構(gòu)“文件頁表”。 這種設(shè)計架構(gòu)能夠充分利用硬件MMU實現(xiàn)高速文件數(shù)據(jù)訪問。我們在Linux內(nèi)核中設(shè)計實現(xiàn)一個功能完整的持久化內(nèi)存文件系統(tǒng)SIMFS。支持所有POSIX標(biāo)準(zhǔn)文件系統(tǒng)接口,支持基于Linux系統(tǒng)的應(yīng)用程序。

            用標(biāo)準(zhǔn)測試工具驗證文件系統(tǒng)的性能。與華為公司合作測試的結(jié)果表明,SIMFS的文件讀寫帶寬可以達到性能理論上限(即內(nèi)存總線帶寬)的89%,超過其他已知的內(nèi)存文件系統(tǒng),是目前世界上文件讀寫速度最快的內(nèi)存文件系統(tǒng)。

            參考文獻:

            [1]Ousterhout J K, Agrawal P, Erickson D, et al. The Case for RAMClouds: Scalable High-Performance Storage Entirely in DRAM[J]. Operating Systems Review, 2010, 43(4):92-105.

            [2]Zaharia M, Chowdhury M, Franklin M J, et al. Spark: Cluster Computing with Working Sets[C], in Proceedings of the Usenix Conference on Hot Topics in Cloud Computing (HotCloud '10), 2010, 15:1-7.

            [3]Hadoop[Z]. http://hadoop.apache.org/.

            [4]Dean J, Ghemawat S. Simplified Data Processing on Large Clusters[C], in Proceedings of the Proceedings of Operating Systems Design and Implementation (OSDI '04), 2004:107-113.

            [5]Freitas R F, Wilcke W W. Storage-Class Memory: The Next Storage System Technology[J]. IBM Journal of Research & Development, 2008, 52(4.5):439-447.

            [6]Condit J, Nightingale E B, Frost C, et al. Better I/O through Byte-Addressable, Persistent Memory[C], in Proceedings of the ACM SIGOPS Symposium on Operating Systems Principles (SOSP '09), 2009 :133-146.

            [7]Longerbeam S, Locke M A, Morgan K D. Protected and Persistent RAM Filesystem[P], 2003.

            [8]Dulloor S R, Kumar S, Keshavamurthy A, et al. System Software for Persistent Memory[C], in Proceedings of the European Conference on Computer Systems (EuroSys '14), 2014:1-15.

            本文來源于《電子產(chǎn)品世界》2018年第8期第24頁,歡迎您寫論文時引用,并注明出處。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();