<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 專(zhuān)題 > 構建世界更快的內存文件系統

構建世界更快的內存文件系統

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

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

本文引用地址:http://dyxdggzs.com/article/201807/389570.htm

摘要:新一代非易失性存儲器,如PCM、MRAM等,將使內存具備數據存儲的能力,并顯示出低功耗和優(yōu)秀的數據訪(fǎng)問(wèn)性能等優(yōu)越性。把非易失性存儲級內存納入內存管理空間將成為解決傳統計算機系統數據I/O瓶頸的有效解決途徑。然而,現有文件系統的設計架構使其無(wú)法充分利用非易失性?xún)却娴奶匦圆l(fā)揮其優(yōu)勢,因此,我們需要重新審視現有文件系統的架構。從全新的角度思考面向非易失性?xún)却娴男滦?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/內存文件系統">內存文件系統設計框架。我們提出了一個(gè)全新的概念“文件”,并在此基礎之上,設計并實(shí)現了一個(gè)新型的文件系統SIMFS。

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

0 引言

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

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

  但是現有系統軟件沒(méi)有充分發(fā)揮非易失性?xún)却嫖锢硖匦院蛢?yōu)勢,如現有的元數據結構仍然以塊設備上的傳統文件系統的元數據結構為模板,要用軟件查找元數據結構以獲得文件數據塊的物理位置,造成極大性能開(kāi)銷(xiāo)。為此,我們需要思考如何將文件數據結構與當前計算機體系中的內存管理機制相結合,并充分利用CPU中現有虛擬地址轉換硬件的處理能力構建高效的內存文件系統。

1 對文件系統設計的思考

  對于在非易失性?xún)却嫔辖⑽募到y上有一個(gè)常見(jiàn)誤解,認為可以利用Ramdisk一類(lèi)的工具在非易失性?xún)却嫔辖⒁粋€(gè)模擬磁盤(pán),然后把現有塊設備文件系統部署到模擬磁盤(pán)。這種誤解沒(méi)有考慮到傳統I/O軟件棧和塊設備文件系統產(chǎn)生的系統開(kāi)銷(xiāo),不能發(fā)揮非易失性?xún)却嫖募到y的卓越性能。塊設備文件系統(如EXT4)需要經(jīng)過(guò)諸多針對塊設備的軟件層次,例如I/O調度層、通用塊層和塊設備驅動(dòng)層,如圖1所示。諸多軟件層次會(huì )造成數據在各級緩沖區中的多次拷貝。即使是管理模擬成磁盤(pán)的內存,對于傳統I/O軟件棧和塊設備文件系統,其多個(gè)軟件層次仍會(huì )造成數據讀寫(xiě)之外的大量系統負載及性能損失。所以,為充分發(fā)掘非易失性?xún)却娴男阅軆?yōu)勢,系統設計者需要突破原有的設計思想,從新研究和設計面向新型非易失性的內存文件系統。

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

  另一類(lèi)是持久化的內存文件系統,例如BPFS[6],PRAMFS[7]和PMFS[8]。與臨時(shí)內存文件系統不同,文件系統的元數據結構獨立于內核的內存管理系統,并且固定存放在非易失性?xún)却娴囊阎恢弥?。在系統重啟后,持久化內存文件系統可以在非易失性?xún)却娴拇_定位置找到其特有的元數據結構?,F有的內存文件系統通過(guò)軟件搜索元數據結構,或者建立額外的映射表,將文件映射到。這些方法都不能充分利用處理器中的地址轉換硬件MMU。

  當前持久化內存文件系統的設計有兩大缺點(diǎn):

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

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

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

2 持久化內存文件系統設計的基本架構

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

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

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

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

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

  1) 文件系統讀文件數據不需要軟件搜索元數據結構。此外,由于文件的虛擬地址空間已經(jīng)嵌入到進(jìn)程的虛擬地址空間,讀文件數據不會(huì )引起缺頁(yè)中斷;

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

3 結論

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

  用標準測試工具驗證文件系統的性能。與華為公司合作測試的結果表明,SIMFS的文件讀寫(xiě)帶寬可以達到性能理論上限(即內存總線(xiàn)帶寬)的89%,超過(guò)其他已知的內存文件系統,是目前世界上文件讀寫(xiě)速度最快的內存文件系統。

  參考文獻:

  [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.

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>