羅龍飛 李蓍城 石 亮
(華東師范大學計算機科學與技術學院 上海 200062)
隨著消費級終端的逐漸普及,閃存存儲設備步入了快速發(fā)展階段。相較于傳統(tǒng)的硬盤,閃存存儲設備功耗低、抗震強、性能更佳,可以滿足用戶的日常需求。相較于其他非易失性存儲,閃存存儲設備具有更大容量、更低價格和更優(yōu)性價比。因此,閃存存儲設備已成為消費級終端的主流存儲設備。
閃存存儲設備內(nèi)部由通道、芯片、晶元、平面、塊和頁面組成,同時閃存具有寫前擦除、擦除粒度與訪問粒度不一致和擦除次數(shù)有限的特點。閃存轉(zhuǎn)換層(Flash Translation Layer,F(xiàn)TL)的提出有助于更好地使用閃存存儲設備。FTL 的主要功能包括地址映射、垃圾回收和磨損均衡等。
(1)地址映射:地址映射是為了將主機端發(fā)送的邏輯地址轉(zhuǎn)換成實際存儲在閃存存儲設備中的物理地址。映射表為主要的元數(shù)據(jù),維護了邏輯地址到物理地址的轉(zhuǎn)換和一些頁面的存儲狀態(tài)標識。
(2)垃圾回收:閃存具有寫前擦除的特性,且擦除粒度大于訪問粒度,因此為避免頻繁的擦除操作,數(shù)據(jù)的更新將寫入新的頁面。隨著數(shù)據(jù)逐漸寫入,閃存存儲設備中布滿了已被更新的無效數(shù)據(jù)。這部分無效數(shù)據(jù)所占用的物理地址空間將由 FTL 通過垃圾回收的操作進行回收。
(3)磨損均衡:閃存的擦除次數(shù)有限,頻繁使用同一個塊將會導致該塊壽命縮短,閃存存儲設備隨之損失空間容量。為避免該情況,F(xiàn)TL 通過磨損均衡使所有塊的擦除次數(shù)相近。磨損均衡分為動態(tài)磨損均衡和靜態(tài)磨損均衡,前者是在選擇寫入數(shù)據(jù)的塊時,優(yōu)先選擇擦除次數(shù)低的塊;后者是對長期未擦除的塊進行垃圾回收,使壽命長的塊可被使用。
隨著技術的發(fā)展,閃存存儲設備從每個存儲單元存儲 1 位數(shù)據(jù)(Single-Level Cell,SLC)提升到存儲 4 位數(shù)據(jù)(Quad-Level Cell,QLC)。另外,閃存結(jié)構(gòu)也從二維平面閃存發(fā)展至三維堆疊式閃存。這些技術的發(fā)展使閃存的密度增加、容量增加和價格下降的同時,也導致閃存的性能下降、可靠性變差且壽命縮短。為解決這一矛盾,混合式閃存應運而生?;旌鲜介W存通過同時存在 SLC 和高密度存儲單元,如 QLC(本文中均以QLC 代表高密度存儲單元),使閃存存儲設備同時具有大容量、低價格、高性能、高可靠性和長壽命的特性。因此,混合式閃存是當今消費級終端領域的主流存儲設備,如 Intel 665P、Micron Crucial P1、Intel 670P 和 Intel Optane H10 均使用了混合式閃存。研究混合式閃存是進一步提升消費級終端的用戶體驗的關鍵。但混合式閃存中存在兩種具有不同特性的存儲,導致 FTL 算法邏輯中需要增加數(shù)據(jù)放置、介質(zhì)間數(shù)據(jù)遷移等操作,設計更為復雜和困難。
本文針對市場目前最新的混合式閃存設備,首先介紹了混合式閃存的架構(gòu)和特性,通過理論分析發(fā)展方向;其次通過真實設備的實驗數(shù)據(jù)來挖掘其中存在的問題;最后,介紹國內(nèi)外的相關研究進展,并進行比較分析,以期為學術界和產(chǎn)業(yè)界對混合式閃存的進一步研究提供一定參考價值。
混合式閃存中存在兩種架構(gòu),一種是SLC 與 QLC 完全獨立,采用不同的介質(zhì),如Intel Optane H10 中 SLC 采用與 QLC 不同的3D Xpoint 介質(zhì);另一種是采用模擬 SLC 技術(pseudo SLC,pSLC),即通過 QLC 只存儲 1 位數(shù)據(jù)來模擬 SLC,其中 SLC 與 QLC 共享通道、芯片、晶元、平面和塊。相較而言,模擬 SLC技術具有更高的性價比,在消費級終端領域更受歡迎,如 Intel 665P、Micron Crucial P1 和 Intel 670P 均使用模擬 SLC 技術。因此,本文以模擬SLC 技術為混合式閃存架構(gòu),其中本節(jié)將介紹模擬 SLC 技術、數(shù)據(jù)通路和該架構(gòu)所具有的特點。
相較于 SLC,QLC 每個存儲單元所存的數(shù)據(jù)位數(shù)更多,導致其閾值電壓更密集,難以區(qū)分。同時,電荷之間的相互干擾也會更大,因而 QLC的訪問性能、壽命和可靠性均遠遜色于 SLC。相關研究表明,SLC 與 QLC 的讀寫延遲的差距在20 倍左右,擦除壽命在 30 倍左右[1-2]。為了彌補兩者之間的差距,提出了模擬 SLC 技術。
模擬 SLC 技術通過僅存儲 1 位數(shù)據(jù)到QLC,減少了閾值電壓分布,同時降低了電荷之間的干擾,使其具備接近 SLC 的訪問性能、壽命和可靠性。與獨立 SLC 和 QLC 組成方式不同的是,模擬 SLC 可以與 QLC 隨時相互轉(zhuǎn)換,以滿足不同場景下的需求。圖 1 展示了基于模擬SLC 技術的混合式閃存架構(gòu)。在每個平面中具有多個塊,部分塊中的 QLC 采用模擬 SLC 模式,其余采用 QLC 模式。模擬 SLC 分為兩部分,一部分是靜態(tài) SLC,其中的模擬 SLC 不會轉(zhuǎn)換成QLC;另一部分是動態(tài) SLC,其中的模擬 SLC隨著混合式閃存中存儲數(shù)據(jù)量的增大而動態(tài)轉(zhuǎn)換成 QLC,也會隨著存儲數(shù)據(jù)量的減少轉(zhuǎn)換回SLC。以 1 TB 的 Intel 665P(初始包含 12 GB 靜態(tài) SLC 和 120 GB 動態(tài) SLC,其余為 QLC)為例,所有模擬 SLC 均勻分布在各個平面中。當混合式閃存內(nèi)數(shù)據(jù)量多時,120 GB 動態(tài) SLC 將轉(zhuǎn)換成 QLC 來增加可存儲容量;當數(shù)據(jù)量少時,QLC 可轉(zhuǎn)換回動態(tài) SLC 來提升混合式閃存的性能,這個過程最多可轉(zhuǎn)換至 120 GB 動態(tài)SLC。因此,通過同時使用模擬 SLC 和 QLC,混合式閃存設備可同時具備高性能、大容量和高可靠性的特性。
圖1 基于模擬 SLC 技術的混合式閃存架構(gòu)Fig. 1 The architecture of hybrid flash memory based on pseudo SLC
然而,設備空間占有率的提升會使混合式閃存設備的性能和可靠性下降,用戶在使用過程中會逐漸感受到設備卡頓等情況,影響體驗感。為緩解該問題,應對混合式閃存設備中的數(shù)據(jù)進行精細的組織管理,避免無效數(shù)據(jù)占用設備空間,并充分利用介質(zhì)特性。
2.2.1 寫數(shù)據(jù)通路
由于模擬 SLC 具有更好的性能和可靠性,現(xiàn)有的混合式閃存設備通常使用模擬 SLC 作為前端緩沖區(qū),即所有的數(shù)據(jù)先寫入模擬 SLC 來提升性能,同時利用高擦除次數(shù)的特性來保護QLC 不被快速地磨損消耗。QLC 作為后端主存,存儲模擬 SLC 中剔除的數(shù)據(jù)。將數(shù)據(jù)從模擬 SLC 中剔除到 QLC 的操作稱為數(shù)據(jù)遷移。觸發(fā)數(shù)據(jù)遷移的條件通常有兩個:設備空閑時和SLC 容量空間不足時。寫數(shù)據(jù)通路如圖 2 中①所示,主機下發(fā)的寫請求先寫入模擬 SLC 中,QLC 中的數(shù)據(jù)寫入是由模擬 SLC 中的數(shù)據(jù)遷移所帶來的。
圖2 混合式閃存的數(shù)據(jù)通路Fig. 2 The data path of hybrid flash memory
當 SLC 容量空間不足時,由于閃存擦除是以塊為粒度,因此數(shù)據(jù)遷移將至少以塊為粒度,將其中的有效數(shù)據(jù)遷移至 QLC 后擦除該塊。因此,數(shù)據(jù)遷移的開銷相較于數(shù)據(jù)訪問是巨大的。然而,模擬 SLC 中的空間有限,當數(shù)據(jù)逐步寫入時,將會產(chǎn)生數(shù)據(jù)遷移與主機數(shù)據(jù)寫入的沖突。這將對主機數(shù)據(jù)寫入產(chǎn)生巨大的影響,降低設備性能。如圖 1 所示,通道 0 和通道 1 分別表示當 SLC 和 QLC 中發(fā)生垃圾回收(Garbage Collection,GC)時與普通訪問的讀寫請求發(fā)生沖突,通道 2 表示當 SLC 與 QLC 之間發(fā)生數(shù)據(jù)遷移時與普通訪問的讀寫請求發(fā)生沖突。因此,對于混合式存儲設備,數(shù)據(jù)的寫入策略應根據(jù)數(shù)據(jù)的屬性和設備的使用情況進行精細設計,避免內(nèi)部數(shù)據(jù)遷移對設備性能的影響。
2.2.2 讀數(shù)據(jù)通路
與寫數(shù)據(jù)通路不同的是,讀取數(shù)據(jù)的通路取決于數(shù)據(jù)存放的位置。在設備的使用過程中,部分數(shù)據(jù)由模擬 SLC 遷移至 QLC。因此,從混合式閃存設備中讀取數(shù)據(jù)時,可能會從模擬 SLC 和QLC 中進行讀取,如圖 2 中②所示。閃存在讀取數(shù)據(jù)時會向相鄰的頁施加通路電壓,因此當一個頁面數(shù)據(jù)被頻繁讀取時,會導致其他頁面的數(shù)據(jù)出現(xiàn)錯誤讀取的情況。同時,由于 QLC 中的電壓分布狀態(tài)更多、狀態(tài)之間的電壓間隔更小,因此QLC 中的讀干擾現(xiàn)象相較于模擬 SLC 更為嚴重。
傳統(tǒng)解決 QLC 中讀干擾嚴重的方式有兩種。第一種是記錄頁面讀取次數(shù),將即將產(chǎn)生干擾的數(shù)據(jù)重新寫入,但是這種方式會產(chǎn)生額外的寫入操作,影響壽命。第二種是降低通路電壓,降低讀取數(shù)據(jù)時對其他頁面的影響,但是過低的通路電壓可能導致讀取失敗。在混合式閃存設備中,模擬 SLC 為緩解讀干擾提供了新的思路。
2.2.3 讀寫沖突
閃存由于讀取延遲和寫入延遲差異較大,當寫請求阻塞讀請求時,會導致讀請求的延遲大幅增加,影響用戶體驗,這種情況稱為讀寫沖突,如圖 1 通道 3 所示。在混合式閃存設備中,模擬SLC 和 QLC 共享通道、芯片、晶元和平面,容易導致模擬 SLC 和 QLC 的請求之間產(chǎn)生沖突。由于模擬 SLC 和 QLC 的延遲差異很大,在混合式閃存設備中讀寫沖突的問題更加嚴重。
在傳統(tǒng)的解決方案中,讀優(yōu)先策略被廣泛采用。當讀請求與寫請求同時在隊列中等待時,讀請求將被優(yōu)先處理以避免被寫請求阻塞。而在混合式閃存中,除了讀寫請求屬性外,模擬 SLC與 QLC 的性能差異使調(diào)度成為一個更復雜的問題。其余在單種存儲介質(zhì)下的讀寫沖突解決方案在混合式閃存中也變得更為復雜,需要考慮的因素更多。因此,針對混合式閃存讀寫沖突問題的解決方案需要進一步探索。
為了進一步探索混合式閃存的特性和存在的問題,本文設計了多個實驗,涵蓋不同層級,包括文件系統(tǒng)和塊設備層,以及不同場景(標準負載、真實負載、應用啟動和開啟內(nèi)存交換)。從寫特征、讀特征、讀寫沖突和容量特征 4 個角度對混合式閃存設備中存在的問題進行分析。
本文使用 Intel 665P、Intel 670P 和 Micron Crucial P1 作為混合式閃存,使用某廠商企業(yè)級固態(tài)硬盤 SSD-A①作為 SLC 的純盤,即僅包含 SLC 一種介質(zhì),使用某廠商企業(yè)級固態(tài)硬盤SSD-B①作為一個存儲單元存儲 3 位數(shù)據(jù)(Triple-Level Cell,TLC)的純盤。Fio[3]用于生成塊設備層各種類型的讀寫負載。IOzone[4]用于生成各種基本文件操作并測試性能。Filebench[5]用于模擬重放應用程序產(chǎn)生的文件系統(tǒng)層負載。Blktrace[6]用于統(tǒng)計每一條請求的延遲信息。Debugfs[7]用于確定每一個邏輯地址對應的具體文件。同時,本文在多個文件系統(tǒng)下進行測試。其中包括第四代擴展文件系統(tǒng)(Fourth Extended Filesystem,EXT4)、閃存友好文件系統(tǒng)(Flash-Friendly File System,F(xiàn)2FS)和 B 樹文件系統(tǒng)(B-Tree File System,BTRFS)。
3.2.1 文件系統(tǒng)層
為了從文件系統(tǒng)層挖掘混合式閃存的寫特征,本文通過 IOzone 默認順序?qū)懞碗S機寫模式向混合式閃存和兩種純盤下發(fā)大小為 8 G 的文件系統(tǒng)級標準寫負載,并設置混合式閃存的設備占用率為 10% 和 90%。實驗結(jié)果如圖 3 所示,其中縱坐標是以 10% 填充率的混合盤帶寬為基準,不同固態(tài)盤帶寬相較于其帶寬的比例。在多種文件系統(tǒng)下,混合式閃存在低設備占用率下寫性能與純盤相近;但在高設備占用率下,寫性能明顯弱于兩種純盤。這是因為在高設備占用率下,模擬 SLC 中的空間已被占滿,當繼續(xù)寫入數(shù)據(jù)時會觸發(fā)內(nèi)部的數(shù)據(jù)遷移,影響主機端的寫性能。對于 SSD-A 和 SSD-B 兩種介質(zhì)的純盤,其性能差異不大,這是因為 TLC 頁面讀取速度雖然較慢,但是 TLC 訪問粒度大,使其具有更高的并行性來獲得性能提升,彌補與 SLC 之間的性能差異。
圖3 文件系統(tǒng)層寫特征實驗結(jié)果Fig. 3 The experimental results of write characteristics in filesystem layer
3.2.2 塊設備層
為了從塊設備層挖掘混合式閃存的寫特征,本文通過 Fio 向混合式閃存下發(fā)塊設備級的隨機寫和順序?qū)懙臉藴守撦d,觀察混合式閃存的表現(xiàn)。其中,順序?qū)懙年犃虚L度為 64,請求大小為1 MB;隨機寫為隨機寫入指定文件 5 次,請求大小為 4 KB。分別向混合式閃存設備中填充不同設備容量百分比(25%~75%)的數(shù)據(jù),圖 4 是混合式閃存在順序?qū)憳藴守撦d下的表現(xiàn)。實驗結(jié)果顯示,在多個混合式閃存下,無論設備填充率為多少,當數(shù)據(jù)持續(xù)寫入 SLC 時,混合式 SSD的性能比單獨的 SLC 或 QLC 都差。這同樣是因為模擬 SLC 的空間有限,當數(shù)據(jù)持續(xù)寫入 SLC時會觸發(fā)數(shù)據(jù)遷移,導致性能坍塌。圖 5 是混合式閃存在隨機寫標準負載下的表現(xiàn)。實驗結(jié)果顯示,混合式閃存在隨機寫負載下會產(chǎn)生性能波動。這是由于模擬 SLC 的容量較小,造成隨機寫入的數(shù)據(jù)無法在模擬 SLC 區(qū)域中得到充分的更新,從而導致低效垃圾回收,并產(chǎn)生性能波動。
圖4 塊設備層順序?qū)憣嶒灲Y(jié)果Fig. 4 The experimental results of sequential writes in block device layer
圖5 塊設備層隨機寫實驗結(jié)果Fig. 5 The experimental results of random writes in block device layer
3.3.1 文件系統(tǒng)層
本文通過 IOzone 默認順序讀和隨機讀模式向混合式閃存和兩種純盤下發(fā)大小為 6 GB 的文件系統(tǒng)級標準讀負載,同時設置設備占用率為10% 和 90%,來從文件系統(tǒng)層挖掘混合式閃存的讀特征。實驗結(jié)果如圖 6 所示,無論是在低設備占用率還是高設備占用率下,混合式閃存的讀性能表現(xiàn)穩(wěn)定。這是因為內(nèi)部數(shù)據(jù)遷移等操作是由寫入數(shù)據(jù)所觸發(fā)的,而在標準讀負載下,不會觸發(fā)混合式閃存中的內(nèi)部數(shù)據(jù)遷移等操作。
圖6 文件系統(tǒng)層讀特征實驗結(jié)果Fig. 6 The experimental results of read characteristics in filesystem layer
3.3.2 塊設備層
為了從塊設備層探尋混合式閃存具有的讀特征,本文設計使用 Fio 讀取在混合式閃存中保存時間不同的數(shù)據(jù),實驗結(jié)果如圖 7 所示。其中,情況 1 為讀取剛寫入混合式閃存的數(shù)據(jù),其延遲相應為模擬 SLC ?延遲;情況 2 為讀取已寫入混合式閃存一段時間的數(shù)據(jù),其延遲相應為QLC 延遲。圖 7 中任意坐標點(x,y)的含義為所有讀請求中x% 的讀請求的完成延遲低于y。如(50.00%, 58)和(50.00%, 128)的含義分別為在情況 1 下 50.00% 的讀請求延遲低于 58 μs,而在情況 2 下 50.00% 的讀請求的完成延遲低于128 μs。從實驗結(jié)果可以看出,混合式閃存中讀取不同保存時間數(shù)據(jù)的延遲不同。這是由于當數(shù)據(jù)在混合式閃存中保存一段時間后將會被遷移至QLC 中。同時,由于混合式閃存的真實設備會從QLC 中直接讀取數(shù)據(jù),并且真實設備的讀取策略不會將熱數(shù)據(jù)緩存至模擬 SLC 中,性能和可靠性將成為問題。具體而言,QLC 相對較差的性能會影響熱據(jù)的訪問性能,同時相較于 SLC而言,頻繁從 QLC 中讀取更容易導致讀干擾產(chǎn)生,進而影響設備的可靠性。
圖7 塊設備層讀特征實驗結(jié)果Fig. 7 The experimental results of read characteristics in block device layer
3.3.3 應用啟動運行
為了探索應用啟動運行時的讀特征,本文首先對混合式閃存進行日常使用,之后對應用啟動的關鍵數(shù)據(jù)進行讀取,實驗結(jié)果如圖 8 所示。從實驗結(jié)果可以看出,關鍵數(shù)據(jù)(Libmerge.so)的讀取延遲為 QLC 的讀取延遲。在日常使用中,混合式閃存啟動相關的關鍵數(shù)據(jù)會被遷移到 QLC區(qū)域,且該過程用戶不可知。這將導致用戶在日常使用過程中發(fā)現(xiàn),剛安裝的應用啟動運行速度快,而使用一段時間的應用啟動運行速度慢。
圖8 關鍵數(shù)據(jù)訪問延遲Fig. 8 The access latency of critical data
3.4.1 文件系統(tǒng)層
本文通過 Filebench 對混合式閃存和 SLC 純盤下發(fā)不同讀寫比例的文件系統(tǒng)級真實負載,觀察混合式閃存的讀寫混合性能表現(xiàn)。真實負載的特征如表 1 所示,實驗結(jié)果如圖 9 所示。其中,實線表示純盤在各文件系統(tǒng)下的性能,虛線表示混合盤在各文件系統(tǒng)下的性能。從實驗結(jié)果可以看出,對于非讀密集型讀寫混合負載,純盤的性能明顯優(yōu)于混合式閃存。這是由于混合式閃存中多種介質(zhì)的訪問延遲不同,使其讀寫沖突現(xiàn)象更嚴重。
圖9 文件系統(tǒng)層讀寫沖突實驗結(jié)果Fig. 9 The experimental results of read/write interference in filesystem layer
表1 真實負載的特征Table 1 The characteristics of real traces
3.4.2 塊設備層
本文通過 Fio 下發(fā)不同比例的讀寫請求,觀察混合式閃存的讀性能表現(xiàn),來探索讀寫沖突的特點,實驗結(jié)果如圖 10 所示。其中,負載大小為 64 MB,采用隨機讀寫模式,隊列長度為 64,請求大小為 4 KB。圖 10 將所有讀請求按照延遲從小到大順序排列,顯示位于所有讀請求百分比位置讀請求完成延遲,RW 表示讀寫請求占比,W90+ 表示寫入數(shù)據(jù)量將會觸發(fā)混合式閃存中的數(shù)據(jù)遷移。從圖中可以看出,純盤仍然存在讀寫沖突問題,但混合式閃存因性能差異和內(nèi)部數(shù)據(jù)遷移的影響,使得讀性能進一步惡化。
圖10 塊設備層讀寫沖突實驗結(jié)果Fig. 10 The experimental results of read/write interference in block device layer
3.4.3 應用啟動運行
為了觀察應用啟動運行過程中混合式閃存的讀寫沖突表現(xiàn),本文設計通過對混合式閃存施加內(nèi)存壓力和 IO 壓力,觀察讀請求的性能表現(xiàn)。對于應用啟動,通過提前啟動多個應用來觸發(fā)內(nèi)存交換(圖中的 SWAP)從而施加內(nèi)存壓力,以及通過下載視頻(圖中的 MD)來施加 IO 壓力,實驗結(jié)果如圖 11 所示。從圖中可以看出,后臺進程的寫請求會導致應用啟動過程中讀請求產(chǎn)生嚴重尾端延遲問題。如圖 12 所示,對于應用運行,通過同時運行多個應用來施加內(nèi)存壓力(圖中的 case 2)。從圖中可以看出,后臺內(nèi)存交換進程的寫請求也會導致應用運行過程中嚴重尾端延遲問題。
圖11 應用啟動請求延遲的累積分布Fig. 11 Latency cumulative distribution of application launching
圖12 應用運行請求延遲的累積分布Fig. 12 Latency cumulative distribution of application running
為了探索混合式閃存的容量特征,即寫入數(shù)據(jù)量對混合式閃存帶來的影響,本文通過 Fio 向混合式閃存中緩存不同數(shù)據(jù)量(占設備容量的百分比)的數(shù)據(jù),觀察緩存數(shù)據(jù)的數(shù)據(jù)量對混合式閃存性能的影響。其中,順序?qū)懻埱蟠笮?1 MB,隨機寫請求大小為 4 KB,隊列長度都設置為 32。實驗結(jié)果如圖 13 所示。對于數(shù)據(jù)緩存,本地訪問性能高于網(wǎng)絡帶寬使緩存數(shù)據(jù)的訪問性能應隨著緩存數(shù)據(jù)量的增加而增加。然而,從圖中可以看出,隨著緩存數(shù)據(jù)量的增加,混合式閃存中緩存數(shù)據(jù)的訪問性能反而下降。這是因為隨著緩存數(shù)據(jù)的增加,模擬 SLC 會更多地轉(zhuǎn)換成 QLC,從而導致混合式閃存的整體性能下降。
圖13 緩存數(shù)據(jù)性能表現(xiàn)Fig. 13 The performance of cached data
本節(jié)對真實混合式存儲設備進行多個層次(文件系統(tǒng)層和塊設備層)、多種應用場景(各種真實負載和標準負載)和多角度(寫特征、讀特征、讀寫沖突和容量特征)的全方位詳細分析,挖掘其中的特性和存在的問題。對于寫特征,無論從文件系統(tǒng)還是塊設備層,混合式存儲更易因內(nèi)部數(shù)據(jù)遷移導致主機請求訪問性能下降。對于讀特征,QLC 中的直接讀取現(xiàn)象會影響設備的性能和可靠性。對于讀寫沖突,因混合式設備中各請求延遲差異大以及數(shù)據(jù)遷移等行為更多,導致讀寫沖突的現(xiàn)象更明顯。對于容量特征,在混合式設備中緩存數(shù)據(jù)量增多并不能帶來更好的性能。
針對以上混合式閃存中存在的問題,本節(jié)將介紹相關的解決思路和最新的研究進展。針對寫特征相關研究,主要分為如何充分利用模擬 SLC加速數(shù)據(jù)寫入的同時避免性能坍塌,以及如何降低由于模擬 SLC 容量較小導致的低效垃圾回收的問題。針對讀特征相關研究,主要分為如何充分利用模擬 SLC 加速讀性能,以及如何避免QLC 的頻繁讀取導致的讀干擾問題。針對讀寫沖突相關研究,主要是如何避免讀寫數(shù)據(jù)通路發(fā)生爭用。針對容量特征相關研究,主要是如何控制混合式閃存的數(shù)據(jù)落盤從而避免設備占用率高導致的過多模擬 SLC 轉(zhuǎn)換成 QLC。
根據(jù)混合式閃存架構(gòu)的分析和實驗數(shù)據(jù)結(jié)果可知,模擬 SLC 的容量較小,當寫入數(shù)據(jù)量過多時會導致數(shù)據(jù)從模擬 SLC 向 QLC 遷移,這時混合式閃存的整體性能將會受到較大影響。為解決該問題,現(xiàn)有的研究方案集中于開辟直接寫入QLC 的數(shù)據(jù)通路[8-11]。但由于 QLC 的性能、可靠性和壽命等問題,需要對 QLC 中寫入的數(shù)據(jù)進行控制。Stoica 等[8]通過建立理論模型論證了進行冷熱數(shù)據(jù)分離的必要性,直接將冷數(shù)據(jù)寫入QLC 中將帶來較大的整體性能提升。這是由于冷數(shù)據(jù)的訪問次數(shù)較少,若存儲在模擬 SLC 中會占用空間,減少對模擬 SLC 的數(shù)據(jù)訪問,同時導致數(shù)據(jù)遷移的發(fā)生。然而,對于冷熱數(shù)據(jù)的識別僅是通過預先標識,并未提供冷熱數(shù)據(jù)識別的方法。Shi 等[9]根據(jù)請求大小來對數(shù)據(jù)進行冷熱分類。這是因為元數(shù)據(jù)多為小請求,且對于性能的影響更為關鍵。因此當請求下發(fā)時,根據(jù)當前請求的大小處于歷史請求大小中的位置,決定該請求是否為熱請求。Li 等[10]綜合考慮請求的訪問次數(shù)和最近訪問時間來判斷請求的熱度,通過一定長度的最近最少使用(Least Recently Used,LRU)鏈表來記錄請求的最近訪問時間,同時會記錄請求的訪問次數(shù)。HyFlex[11]中進一步增加設置了觸發(fā)數(shù)據(jù)寫入 QLC 的條件。其認為數(shù)據(jù)坍塌往往是模擬 SLC 空間不夠用導致的,因此僅當混合式閃存中有效數(shù)據(jù)量快速增長時才有模擬SLC 空間不夠用的風險,此時才將部分數(shù)據(jù)寫入QLC。這樣可以充分利用模擬 SLC 的性能,同時避免性能坍塌情況的出現(xiàn)。然而,現(xiàn)有的數(shù)據(jù)識別策略均還未達到準確識別的程度,因此未來如何對數(shù)據(jù)識別放置才能充分利用好模擬 SLC 和QLC 的特性仍有廣闊的研究空間。
另一方面,由于模擬 SLC 空間區(qū)域較小,數(shù)據(jù)無法得以充分更新,導致很多后續(xù)將被更新的數(shù)據(jù)提前寫入 QLC。此時會帶來額外的數(shù)據(jù)寫入,加速混合式閃存的磨損,同時模擬 SLC 區(qū)域中垃圾回收的效率低將導致混合式閃存的整體性能下降。HyFlex[11]中提出,當模擬 SLC 區(qū)域中垃圾回收的效率較低時,利用 QLC 可以動態(tài)轉(zhuǎn)換成模擬 SLC 的特性,將部分 QLC 臨時轉(zhuǎn)換成模擬 SLC 來提供更多空間進行數(shù)據(jù)更新,提升垃圾回收的效率。除此之外,該類問題的研究較少,仍需要進行更多的探索來進一步解決該問題。
根據(jù)讀數(shù)據(jù)通路的理論分析和實驗結(jié)果可知,混合式閃存中數(shù)據(jù)會經(jīng)過數(shù)據(jù)遷移放入 QLC中,并可能從 QLC 中被頻繁讀取,導致嚴重的讀干擾問題。為了解決這一問題,現(xiàn)有的研究方案主要是兩種思路,一種是降低通路電壓,另一種是進行數(shù)據(jù)搬移。Cai 等[12]提出根據(jù)每個塊每天出錯的次數(shù)和 ECC 可糾錯的位數(shù)來動態(tài)調(diào)整頁面讀取的通路電壓,從而最小化頁面讀取對其他頁面造成的讀干擾。與之不同的是,Werner 等[13]通過讀刷新的方式來解決該問題——當讀請求服務時,其相應區(qū)域的讀計數(shù)便會增加,當區(qū)域的讀計數(shù)值達到產(chǎn)生讀干擾的限制時,該區(qū)域的數(shù)據(jù)將被寫入新的空閑區(qū)域,從而避免讀干擾帶來的影響。Li 等[14]在此基礎上優(yōu)化了數(shù)據(jù)寫入的位置選擇,將被頻繁讀取的數(shù)據(jù)放入擦除次數(shù)少以及累積讀取次數(shù)少的塊。然而,現(xiàn)有關于讀干擾的研究仍集中于非混合式閃存,并未考慮如何利用模擬 SLC 的可靠性來更好地解決該問題。
從 QLC 中頻繁讀取數(shù)據(jù)除了會帶來可靠性問題外,其性能也會降低,尤其是在關鍵數(shù)據(jù)被遷移至 QLC 之后,對用戶體驗的影響更嚴重。Sun 等[15]提出使用 LRU 鏈表維護最近訪問的數(shù)據(jù)信息,并通過數(shù)據(jù)是否位于 LRU 鏈表來判斷數(shù)據(jù)的冷熱,將其中的熱數(shù)據(jù)從 QLC 遷移至快速存儲介質(zhì)。Chen 等[16]提出將小數(shù)據(jù)文件固定在 SLC 中進行訪問。這是因為關鍵數(shù)據(jù)往往是小數(shù)據(jù),如元數(shù)據(jù),同時對于 QLC 而言訪問大數(shù)據(jù)時可以利用其內(nèi)部的并行性,從而提升性能。因此,將小數(shù)據(jù)文件固定在 SLC 中可以提升設備的訪問性能和用戶體驗。然而,現(xiàn)有的數(shù)據(jù)識別方式仍然無法準確判斷數(shù)據(jù)的屬性,若過多的數(shù)據(jù)存儲在模擬 SLC 中,將會導致數(shù)據(jù)遷移,影響混合式閃存的整體訪問性能。因此,如何準確識別數(shù)據(jù)特性從而更好地利用模擬 SLC 和QLC 的特性,以及如何根據(jù)模擬 SLC 的使用狀態(tài)來動態(tài)調(diào)整數(shù)據(jù)的放置策略將成為此類研究的重難點。
根據(jù)混合式閃存數(shù)據(jù)通路的理論分析和實驗結(jié)果可知,由于兩種介質(zhì)的訪問性能差異性和架構(gòu)的復雜性,混合式閃存中的讀寫沖突相較于純盤更為嚴重。為了解決該問題,現(xiàn)有的解決方案主要分為 3 種:基于請求調(diào)度、基于數(shù)據(jù)冗余和基于數(shù)據(jù)分區(qū)。Nguyen 等[17]和 Gao 等[18]通過優(yōu)先調(diào)度讀請求來避免寫請求長時間阻塞讀請求,Wu 等[19]提出當寫請求正在執(zhí)行時讀請求被下發(fā)——將當前的寫請求掛起執(zhí)行讀請求。HotR[20-23]提出將頻繁訪問的數(shù)據(jù)復制一份放到專門的區(qū)域,當讀寫請求發(fā)生沖突時,從該區(qū)域讀取數(shù)據(jù),從而緩解讀寫沖突。Lv 等[24]提出大部分數(shù)據(jù)為只讀數(shù)據(jù)或只寫數(shù)據(jù),因此將空間劃分為讀區(qū)域和寫區(qū)域來分別存放相應訪問類型的數(shù)據(jù),從而避免讀寫沖突。
現(xiàn)有的這些解決方案并未充分利用混合式閃存的特性?;谡埱笳{(diào)度的策略并未將混合式閃存中不同介質(zhì)讀寫延遲的不同特性納入考量,特別是對 QLC 的讀取延遲與模擬 SLC 的寫入延遲相差不大的情況?;跀?shù)據(jù)冗余和數(shù)據(jù)分區(qū)的策略并未考慮混合式閃存中具有兩種不同介質(zhì),因此如何放置不同類別的數(shù)據(jù)從而更好地利用好不同介質(zhì)的特性仍然有待探索。
根據(jù)混合式閃存架構(gòu)的理論分析和實驗結(jié)果可知,當緩存數(shù)據(jù)量過多時,不僅無法提升緩存數(shù)據(jù)的訪問性能,反而會導致過多的模擬 SLC轉(zhuǎn)換成 QLC,從而影響混合式閃存的整體性能。為解決該問題,DFCache[25]提出由于緩存數(shù)據(jù)中大部分網(wǎng)絡數(shù)據(jù)不會被再次訪問,因此設計提出緩存文件篩選器和緩存空間管理器。緩存文件篩選器根據(jù)數(shù)據(jù)的訪問頻次來決定緩存數(shù)據(jù)是否值得被緩存,緩存空間管理器通過限制緩存空間的大小和設計緩存數(shù)據(jù)剔除策略來使緩存數(shù)據(jù)總是小于設備中剩余模擬 SLC 空間的大小,從而避免過多的緩存數(shù)據(jù)寫入混合式閃存。該方法減少了緩存數(shù)據(jù)量,避免了無用的緩存數(shù)據(jù)造成混合式閃存的整體性能下降。CacheSifter[26]同樣提出很多緩存文件未被使用便被刪除,不同的是他提出使用機器學習的方式來對緩存文件進行分類,基于緩存數(shù)據(jù)的活躍期進行分別管理,只將必要的緩存文件寫回混合式閃存,從而提升混合式閃存的性能和壽命。對于混合式閃存容量特征的相關研究,一方面緩存數(shù)據(jù)的管理仍具有探索空間,考慮如何更準確地設計識別關鍵緩存數(shù)據(jù),從而提升緩存數(shù)據(jù)的訪問性能,同時避免過多緩存數(shù)據(jù)影響混合式閃存的整體性能;另一方面需要探索更多類型數(shù)據(jù)進行針對性識別管理,避免容量特征的相關問題。
混合式閃存已成為消費級終端的主流存儲設備,然而現(xiàn)有研究仍未對其中所存在的問題和特性進行充分的探索。本文從混合式閃存的架構(gòu)出發(fā),從多個層級(文件系統(tǒng)層和塊設備層)、多個場景(各種真實負載和標準負載)以及多個角度(讀特征、寫特征、讀寫沖突和容量特征)探索其中存在的真實問題,并針對這些問題的現(xiàn)有研究進行了歸納和梳理。同時,進一步對混合式閃存的寫特征、讀特征、讀寫沖突和容量特征的現(xiàn)有研究進行綜合比較,探討和評述未來的發(fā)展方向。對于混合式閃存而言,如何對其中的數(shù)據(jù)進行準確識別劃分從而更好地利用兩種介質(zhì)的特性是未來的關鍵問題。