摘 要: 針對閃存固態(tài)盤語義缺失特性,提出了一種帶有語義感知的交換區(qū)空間分配方案,減少了交換系統(tǒng)中Trim命令的使用次數(shù),進(jìn)而減少內(nèi)存交換系統(tǒng)中的時間開銷,提高程序運(yùn)行的性能。
關(guān)鍵詞: 交換系統(tǒng);閃存固態(tài)盤;語義缺失;Trim命令;空間分配
閃存作為一種新型非易失性存儲介質(zhì),以其低延遲、低功耗、輕重量和抗震性好等優(yōu)點(diǎn),在便攜式設(shè)備和嵌入式系統(tǒng)上得到了廣泛的應(yīng)用[1]。近年來,隨著閃存固態(tài)盤容量增加和價(jià)格下降,其應(yīng)用逐步走向個人計(jì)算機(jī)和企業(yè)服務(wù)器市場[2-4]。在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,隨著應(yīng)用程序規(guī)模的擴(kuò)大,對內(nèi)存占用需求的快速增大,如何擴(kuò)大系統(tǒng)中可用內(nèi)存空間正受到極大的關(guān)注,其中在閃存固態(tài)盤上建立交換區(qū)已成為研究熱點(diǎn)。
本文基于閃存固態(tài)盤的自身特點(diǎn)和內(nèi)存交換系統(tǒng)的具體應(yīng)用場景,提出一種帶有語義感知的內(nèi)存交換區(qū)空間分配方案,使交換系統(tǒng)減少Trim[5]命令(也稱discard命令)的使用,進(jìn)而節(jié)省Trim命令引入的時間開銷,提高系統(tǒng)性能。
1 相關(guān)工作
近些年,越來越多的研究關(guān)注于使用閃存固態(tài)盤作為交換區(qū),以降低內(nèi)存與交換區(qū)的I/O延遲,提高系統(tǒng)性能。參考文獻(xiàn)[6]在使用閃存固態(tài)盤作為交換區(qū)的環(huán)境下提出壓縮交換頁面以提高系統(tǒng)性能,延長閃存壽命的方法。參考文獻(xiàn)[7]提出一種基于日志方式的換出和塊對齊方式換入的交換系統(tǒng),以便提高閃存的垃圾回收性能和減少閃存擦除操作次數(shù),進(jìn)而提高系統(tǒng)性能。參考文獻(xiàn)[8]中混合使用傳統(tǒng)磁盤和閃存固態(tài)盤作為內(nèi)存交換區(qū),充分發(fā)揮閃存和硬盤的特性以提供大容量、低價(jià)位、高性能的內(nèi)存空間。然而,這些系統(tǒng)主要著眼于交換頁面的數(shù)量或交換頁面內(nèi)容的分析,對內(nèi)存交換系統(tǒng)進(jìn)行優(yōu)化,很少關(guān)注交換區(qū)空間分配的設(shè)計(jì)。參考文獻(xiàn)[9]指出內(nèi)存交換系統(tǒng)中帶有語義傳遞功能的Trim命令為系統(tǒng)引入了較大的時間開銷,在此基礎(chǔ)上,本文提出一種帶有語義感知的交換區(qū)空間分配方案,減少Trim命令的使用,以提高程序運(yùn)行性能。
2 以閃存固態(tài)盤為交換區(qū)的空間分配
2.1 閃存固態(tài)盤的語義缺失
閃存固態(tài)盤主要由閃存芯片和閃存控制器兩部分構(gòu)成。與傳統(tǒng)磁盤相比,閃存介質(zhì)在性能和硬件屬性上有很多優(yōu)勢,同時在實(shí)際應(yīng)用中存在一些缺陷:首先閃存介質(zhì)重寫閃存頁前必須擦除閃存頁所在的閃存塊;其次閃存塊擦除次數(shù)有限,若擦除操作達(dá)到上限,閃存塊可能損壞,影響閃存的使用壽命。由此可知,在傳統(tǒng)磁盤中應(yīng)用廣泛的原位重寫操作不適用閃存。為使閃存固態(tài)盤能像磁盤一樣普遍地應(yīng)用到計(jì)算機(jī)系統(tǒng)中,Intel提出閃存轉(zhuǎn)換層FTL(Flash Translation Layer)技術(shù)[10],把閃存固態(tài)盤模擬成類似磁盤的塊設(shè)備,封裝在閃存控制器中,統(tǒng)一了閃存固態(tài)盤與傳統(tǒng)磁盤的軟件接口。閃存固態(tài)盤的軟件設(shè)計(jì)結(jié)構(gòu)如圖1所示。
圖1中FTL主要包含地址映射、垃圾回收、磨損均衡等模塊。地址映射模塊中,將軟件系統(tǒng)讀寫請求的邏輯地址通過映射表和閃存固態(tài)盤的物理地址一一對應(yīng)。當(dāng)系統(tǒng)原位更新某邏輯地址上的數(shù)據(jù)時,先通過映射表檢索邏輯地址對應(yīng)的物理地址,標(biāo)記此物理地址的數(shù)據(jù)無效,并把數(shù)據(jù)寫入閃存固態(tài)盤的其他物理位置,在映射表中使邏輯地址與新的物理地址對應(yīng),進(jìn)而避免重寫閃存頁前擦除閃存塊操作。當(dāng)閃存控制器啟動垃圾回收機(jī)制,擦除無效數(shù)據(jù)較多的閃存塊,由于閃存塊的擦除次數(shù)有限,磨損均衡模塊會采取均衡策略,使擦除操作盡量均勻地分配在閃存介質(zhì)上。
由上述分析可知,閃存控制器封裝了閃存介質(zhì)特性,使軟件系統(tǒng)能夠以相同于磁盤的方法操作閃存固態(tài)盤。軟件系統(tǒng)向閃存固態(tài)盤發(fā)出的讀寫請求經(jīng)過FTL的地址映射后,對閃存介質(zhì)的操作請求已喪失軟件系統(tǒng)操作的語義,因此,閃存固態(tài)盤無法感知軟件系統(tǒng)操作的相關(guān)含義,形成一種語義缺失的現(xiàn)象。例如文件系統(tǒng)對數(shù)據(jù)的刪除操作,在文件系統(tǒng)中的刪除操作只標(biāo)記對應(yīng)元數(shù)據(jù)無效,即代表數(shù)據(jù)已經(jīng)刪除,而閃存固態(tài)盤不知道元數(shù)據(jù)對應(yīng)的實(shí)際數(shù)據(jù)頁面已經(jīng)無效,直到這些數(shù)據(jù)頁面對應(yīng)的邏輯頁面再次收到寫數(shù)據(jù)請求時,閃存固態(tài)盤才能感知這些數(shù)據(jù)無效,這種因語義缺失導(dǎo)致了垃圾回收操作的延遲,影響閃存固態(tài)盤的存儲效率。
2.2 Trim命令的時間消耗評估
閃存固態(tài)盤的應(yīng)用越來越普遍,針對其語義缺失的不足,計(jì)算機(jī)系統(tǒng)中引入Trim命令通知閃存固態(tài)盤無效數(shù)據(jù)的位置,使閃存固態(tài)盤感知上層軟件系統(tǒng)的語義操作。從Linux 2.6.29開始,針對閃存固態(tài)盤為交換區(qū),在交換區(qū)空間分配方案中引入Trim命令,以便閃存固態(tài)盤回收交換區(qū)中無效頁面。其中,交換區(qū)空間由swap_map計(jì)數(shù)器數(shù)組進(jìn)行分配管理,每個計(jì)數(shù)器值對應(yīng)一個頁槽(page slot)使用狀態(tài)。當(dāng)內(nèi)存將暫時不用的非映射頁換出到交換區(qū)時,需要在swap_map中快速檢索空閑頁槽存儲換出頁面,頁槽為占用狀態(tài);當(dāng)內(nèi)存需要已換出到交換區(qū)中的頁面時,再把該頁面從交換區(qū)中調(diào)入內(nèi)存,此時頁槽為空閑狀態(tài),交換區(qū)空間分配如圖2所示。
圖2中,空白格代表頁槽為空閑狀態(tài),陰影小格代表頁槽為占用狀態(tài),內(nèi)存交換系統(tǒng)以簇集的形式分配交換區(qū)空間,一個空閑簇集包含256個連續(xù)空閑頁槽,當(dāng)空閑簇集中的空閑頁槽全部分配后,從此簇集的最后一個頁槽后開始掃描swap_map,來檢索空閑簇集。Trim命令是在檢索到空閑簇集后使用,其作用是通知閃存固態(tài)盤256個空閑頁槽對應(yīng)的頁面無效。其中每個頁槽對應(yīng)4 KB的交換區(qū)空間,那么256個頁槽對應(yīng)1 MB的交換區(qū)空間,也就是Trim命令的作用區(qū)間是1 MB。本文分別對不同作用區(qū)間的Trim命令進(jìn)行測試,其時間開銷如圖3所示。
圖3中橫坐標(biāo)代表換出到閃存固態(tài)盤的頁面數(shù)量,W代表數(shù)量單位為萬頁,其測試結(jié)果是在系統(tǒng)中運(yùn)行應(yīng)用程序ImageMagic使內(nèi)存換出大量頁面到交換區(qū)中,在交換區(qū)空間分配時向閃存固態(tài)盤發(fā)送Trim命令,進(jìn)而跟蹤測試不同作用區(qū)間的Trim命令時間開銷。由圖3可推出兩個結(jié)論:
?。?)Trim命令平均耗時隨著閃存固態(tài)盤寫入的頁面數(shù)量增加而增大,當(dāng)頁面數(shù)量達(dá)到一定值時,Trim命令平均耗時趨于平穩(wěn)。整體來看,幾種不同作用區(qū)間的Trim命令平均耗時在1 ms~14 ms之間,表明Trim命令為系統(tǒng)引入毫秒級別的時間開銷;
?。?)不同作用區(qū)間的Trim命令時間開銷不同,隨著作用區(qū)間增大,其平均時間開銷減小。
2.3 交換區(qū)空間分配方案的設(shè)計(jì)與分析
內(nèi)存交換系統(tǒng)使用閃存固態(tài)盤作為交換區(qū)時,鑒于閃存固態(tài)盤語義缺失且語義傳遞的Trim命令耗時較多,本文設(shè)計(jì)一種帶有語義感知的交換區(qū)空間分配方案,其交換區(qū)空間分配規(guī)則如下:
?。?)合并Trim命令:在swap_map中,掃描16個連續(xù)空閑簇集(1簇集=256 slot)后,向閃存固態(tài)盤發(fā)送Trim命令,使得Trim命令的作用區(qū)間為16 MB。
?。?)語義感知:系統(tǒng)使用完空閑簇集后,掃描swap_map,從已經(jīng)寫入數(shù)據(jù)的頁槽中檢索1個空閑簇集,若沒有檢索到,則從上一個Trim命令的作用區(qū)間后掃描swap_map,檢索16個連續(xù)空閑簇集,發(fā)送Trim命令。
?。?)邊界對齊:在檢索1個空閑簇集時,采用邊界對齊的方式,使檢索到的空閑簇集的邊界為256的倍數(shù)。
第一條規(guī)則分析如下:Trim命令作用區(qū)間由1 MB增加到16 MB,首先減少了Trim命令的使用次數(shù);其次由2.2章節(jié)可知,作用區(qū)間越大,Trim命令平均耗時越少,16 MB作用區(qū)間的Trim平均時間消耗較少,但是本方 案沒有使用作用區(qū)間更大的Trim命令,是因?yàn)門rim命令的作用是通知閃存固態(tài)盤無效頁面的位置,促進(jìn)閃存固態(tài)盤垃圾回收進(jìn)行閃存塊擦除操作,一次發(fā)送無效頁面的數(shù)量較多,可能促使閃存固態(tài)盤擦除較多的閃存塊,若機(jī)器關(guān)機(jī)或重啟,擦除的閃存塊會再次被擦除,造成擦除冗余,而閃存塊的擦除次數(shù)直接影響閃存固態(tài)盤的壽命。
第二條規(guī)則分析如下:由2.1章節(jié)論述可知,重寫邏輯頁面相當(dāng)于告訴閃存固態(tài)盤該邏輯頁面對應(yīng)的物理頁面無效,swap_map數(shù)組索引閃存固態(tài)盤的邏輯頁面,重寫數(shù)組中的空閑頁槽,即是通知閃存固態(tài)盤此頁槽對應(yīng)的物理頁面無效。該規(guī)則利用閃存轉(zhuǎn)換層原位重寫操作使閃存固態(tài)盤感知無效頁面,在內(nèi)存交換系統(tǒng)中盡量減少Trim命令的使用,進(jìn)而使交換區(qū)空間分配帶有語義感知功能。
第三條規(guī)則分析如下:邊界對齊的設(shè)計(jì)是利用程序運(yùn)行的局部性原理,內(nèi)存換出相鄰的頁面,很可能屬于同一進(jìn)程的頁面,當(dāng)進(jìn)程被調(diào)用時,同時換入這些相鄰的頁面,使這些頁面在交換區(qū)中對應(yīng)的頁槽狀態(tài)變?yōu)榭臻e,邊界對齊的分配方法促使這些空閑頁槽對應(yīng)的頁面盡可能集中分布同一閃存塊中,提高閃存固態(tài)盤垃圾回收效率。
3 測試與分析
3.1 測試環(huán)境與負(fù)載
系統(tǒng)的硬件環(huán)境為Intel(R)Xeon(R)E5420,主頻為2.5 GHz的四核CPU,設(shè)置物理內(nèi)存為1 GB,分別使用傳統(tǒng)磁盤和閃存固態(tài)盤作為系統(tǒng)的交換區(qū)進(jìn)行測試,設(shè)置交換區(qū)大小為2 GB,并選取圖像處理ImageMagick、數(shù)據(jù)庫應(yīng)用Postgresql、科學(xué)計(jì)算Matlab以及程序開發(fā)eclipse四種類型的應(yīng)用程序?qū)粨Q區(qū)分配方案進(jìn)行測試分析。其測試負(fù)載如下:
(1)ImageMagick:同時放大10張4.5 MB的圖片;
?。?)Postgresql:模擬600個客戶端對數(shù)據(jù)庫Postgresql進(jìn)行壓力測試,每個客戶端執(zhí)行300個的事務(wù);
?。?)Matlab:使用雙線性插值法對一張4.5 MB的圖片放大4倍;
?。?)eclipse:使用AES算法對260 MB的壓縮包進(jìn)行加密運(yùn)算。
以上四個應(yīng)用程序的負(fù)載所需要的內(nèi)存空間均大于1 GB,在1 GB物理內(nèi)存的系統(tǒng)下分別單獨(dú)運(yùn)行四個應(yīng)用程序,系統(tǒng)均會產(chǎn)生一定數(shù)量的交換操作。在linux2.6.34.13系統(tǒng)中實(shí)現(xiàn)帶有語義感知的交換區(qū)分配方案,在內(nèi)核態(tài)統(tǒng)計(jì)四種應(yīng)用程序換出頁面頻率,在用戶態(tài)統(tǒng)計(jì)程序運(yùn)行時間,進(jìn)而測試內(nèi)存交換區(qū)空間分配方案的性能。
3.2 實(shí)驗(yàn)結(jié)果與分析
在實(shí)驗(yàn)中,首先分別使用傳統(tǒng)磁盤和閃存固態(tài)盤作為交換區(qū),測試四種應(yīng)用程序,觀察不同硬盤對系統(tǒng)性能的影響,如圖4所示。然后以閃存固態(tài)盤為交換區(qū),對比四種應(yīng)用程序在不同的交換區(qū)分配方案下的運(yùn)行時間,測試交換區(qū)分配方案提高系統(tǒng)性能的效果,如圖5所示。圖4和圖5中Postgresql應(yīng)用程序運(yùn)行時間單位為分鐘(min),其他三個應(yīng)用程序運(yùn)行時間單位為秒(s)。
由圖4可知,使用閃存固態(tài)盤作為交換區(qū),相較于傳統(tǒng)磁盤,四種典型的應(yīng)用程序運(yùn)行性能都有所提高,其中ImageMagick性能提高4倍,Postgresql性能提高4.7%。由圖5可知,使用本文提出的帶有語意感知的交換區(qū)分配方案可以進(jìn)一步提高程序運(yùn)行性能,ImageMagick、Postgresql、matlab和eclipse在運(yùn)行的過程中提高性能的比值分別為34.6%、3.2%、6.6%和14.2%。對比圖4和圖5,不難發(fā)現(xiàn)在圖4中性能提高較多的應(yīng)用程序在圖5中性能提高比例也較大,說明性能提高的比例與應(yīng)用程序本身性質(zhì)有關(guān)。為體現(xiàn)交換區(qū)分配方案對哪類應(yīng)用程序有更好的性能提高,本文對四種應(yīng)用程序特性進(jìn)行分析,在圖6中給出了以閃存固態(tài)盤為交換區(qū)時,四種應(yīng)用程序運(yùn)行時對閃存固態(tài)盤的寫請求頻率。
圖6中四種應(yīng)用程序運(yùn)行時對閃存固態(tài)盤寫請求頻率不同,寫請求頻率高的應(yīng)用程序在圖5中性能提高比例也高,寫請求頻率低的應(yīng)用程序性能提高也低,結(jié)合圖5和圖6結(jié)果分析可知,對交換區(qū)寫請求的頻率高低直接影響帶有語義感知的交換區(qū)分配方案的作用效果,寫請求頻率越高的應(yīng)用程序性能提高比例越大,即在較短的時間內(nèi)換出到交換區(qū)的頁面數(shù)量較多的應(yīng)用程序,其運(yùn)行性能提高比例較大。
本文主要研究使用固態(tài)盤上建立交換區(qū),提出一種語義感知的交換區(qū)空間分配方案。通過理論分析和實(shí)驗(yàn)證明,該交換區(qū)分配方案自帶語義理解功能,減少語義傳遞功能的Trim命令使用,進(jìn)而節(jié)約時間開銷,提高程序運(yùn)行性能。在進(jìn)一步工作中,使用閃存固態(tài)盤為交換區(qū),將著重研究通過壓縮交換頁面或重復(fù)數(shù)據(jù)刪除等技術(shù)減少閃存固態(tài)盤中的寫操作,以延長閃存固態(tài)盤的壽命,進(jìn)一步提高系統(tǒng)性能。
參考文獻(xiàn)
[1] Sangsung Electronics Co. NAND Flash Memory and Smart Media Data Book [EB/OL]. [2002]. http://www.samsung.com.
[2] GRAY J, FITZGERALD B. Flash disk opportunity for server applications[J]. ACM Queue, 2008, 6(4): 18-23.
[3] LEE S W, MOON B. Design of flash based DBMS: an in page loging approach [C]. In Proc of the ACM SIGMOD, 2007.
[4] LEE S W, MOON B, PARK C, et al. A case for flash memory SSD enterprise database applications [C]. In Proc of the ACMSI MOD, 2008.
[5] WIKIPEDIA. TRIM [EB/OL]. [2013-03-20]. http://en.wikipedia.org/wiki/TRIM.
[6] 顧鋒磊.基于NAND的使用壓縮緩存策略的交換系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2008.
[7] KO S, JUN S, RYU Y, et al. A new linux swap system for flash memory storage devices[C]. In ICCSA′09, 2008.
[8] LIU K, ZHANG X, DAVIS K, et al. Synergistic coupling of SSD and hard disk for QoS-aware virtual memory[EB/OL]. [2013-02-13]. http://www.cc.gatech.edu/~xczhang/paper/ispass13. pdf.
[9] SAXENA M, SWIFT M M. FlashVM: virtual memory management on flash[C]. Proceedings of the 2010 USENIX Conference on USENIX Annual Technical Conference. USENIX Association, 2010.
[10] Intel Corporation. Understanding the flash translation layer (FTL)specification [R]. 1998.