文宇鴻 周 游 吳秋霖 吳 非 謝長生
1(武漢光電國家研究中心(華中科技大學(xué))武漢 430074)
2(華中科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院 武漢 430074)
信息技術(shù)發(fā)展促進數(shù)據(jù)量和數(shù)據(jù)密集型應(yīng)用快速增長,對存儲系統(tǒng)的容量、成本、性能和服務(wù)質(zhì)量提出巨大挑戰(zhàn).國際數(shù)據(jù)公司IDC 預(yù)測[1]:從2018—2025 年,全球數(shù)據(jù)量將從32ZB 增長至175ZB,存儲器出貨容量將從1.5ZB 增加至接近5ZB.其中,存儲器以傳統(tǒng)機械硬盤(hard disk drive,HDD)和閃存為主,閃存占比從2018 年的不足15%將在2025 年增加到1∕3 左右,而機械硬盤的占比從2018 年的65%將在2025 年縮小到50%左右.
閃存的主要應(yīng)用形態(tài)是固態(tài)盤(solid-state drive,SSD),相比于機械硬盤,它具有高性能、高可靠性、低能耗、小體積以及抗震動等優(yōu)勢.得益于3D 堆疊和多比特單元等閃存密度提升技術(shù)以及高度并行的內(nèi)部存儲架構(gòu),固態(tài)盤具有越來越高的容量、帶寬和吞吐量.例如,當(dāng)前企業(yè)級固態(tài)盤的容量通常是 1~32 TB,讀寫帶寬高達 1~7 GBps,吞吐量高達幾十上百萬IOPS[2-5].而且,市場研究咨詢公司W(wǎng)ikibon[6]于2021年的統(tǒng)計和預(yù)測顯示,固態(tài)盤的單位容量存儲成本近年來快速下降,將從2026 年開始低于機械硬盤.因此,固態(tài)盤將逐漸替代機械硬盤成為主流存儲設(shè)備,在移動設(shè)備、嵌入式設(shè)備、個人電腦、服務(wù)器和云數(shù)據(jù)中心等各類存儲系統(tǒng)中得到廣泛應(yīng)用[7-9].
為提高存儲資源利用率和降低運營成本,多個租戶(例如多個應(yīng)用或虛擬機)共享使用同一個固態(tài)盤成為常見場景[10-13].大容量和高性能的固態(tài)盤能夠滿足多個租戶的數(shù)據(jù)存儲和訪問需求.例如,IBM 研究院針對多個企業(yè)數(shù)據(jù)中心的研究顯示[14],單個虛擬機的存儲容量需求一般是100 多到幾百GB.而且,固態(tài)盤接口技術(shù)為多租戶共享提供了良好支持.例如,PCIe(peripheral component interconnect express)接口的單根虛擬化(single root I/O virtualization,SR-IOV)特性[15]允許將一個固態(tài)盤虛擬化為多個存儲設(shè)備,供主機使用;非易失性內(nèi)存主機控制器接口規(guī)范(non-volatile memory express,NVMe)[16-17]支持高并行的多隊列模型和多個命名空間,即能夠為每個租戶配置獨立的I/O 請求隊列和邏輯地址空間.另外,固態(tài)盤內(nèi)部的并行存儲架構(gòu)也為實現(xiàn)多租戶性能隔離提供了新契機.
固態(tài)盤主要由閃存介質(zhì)、控制器以及主機接口組成,如圖1 所示.
閃存介質(zhì)可劃分成頁(page)、塊(block)、分組(plane)、晶圓(die)、芯片(chip)和通道(channel)這6層組織結(jié)構(gòu),這些閃存介質(zhì)的組織結(jié)構(gòu)形式使得閃存固態(tài)盤擁有多層級、豐富的內(nèi)部并行性.其中,閃存以頁為讀/寫操作基本粒度,而以由大量頁組織成的塊結(jié)構(gòu)為擦除操作基本粒度.多個塊組織成分組結(jié)構(gòu),共用一個數(shù)據(jù)寄存器,用于暫時存儲寫操作需要寫入的頁數(shù)據(jù)或者讀操作讀取出的頁數(shù)據(jù).多個分組組織成晶圓結(jié)構(gòu),共用一個工作狀態(tài)信號線,可通過多分組操作(multi-plane)命令[18-19]使同一晶圓內(nèi)的多個分組并行執(zhí)行同一閃存操作.多個晶圓組織成芯片結(jié)構(gòu),共用一套外圍電路和數(shù)據(jù)線,可通過交錯操作(interleave)命令[18-19]以流水線的方式在等待一個晶圓完成訪問操作的同時向同一芯片內(nèi)的另一個晶圓傳輸數(shù)據(jù),提高并行性.為節(jié)省成本和空間,閃存廠商通常將多個芯片通過通道結(jié)構(gòu)集成在一起,共享一條I/O 總線,不同通道可以并行執(zhí)行讀命令和寫命令.
Fig.1 An illustration of multi-tenant SSD architecture圖1 多租戶固態(tài)盤結(jié)構(gòu)圖
固態(tài)盤控制器負責(zé)請求調(diào)度、映射管理、垃圾回收(garbage collection,GC)、磨損均衡以及閃存接口管理等任務(wù).請求調(diào)度[20-21]任務(wù)負責(zé)從設(shè)備端請求隊列中選擇合適的排隊請求進行處理;由于閃存介質(zhì)存在寫前擦除以及寫粒度與擦除粒度不一致的特性,閃存固態(tài)盤通常采取異地更新的寫入方式,因此需要映射管理[22-23]任務(wù)維護記錄數(shù)據(jù)存放位置的地址映射表;異地更新會將新數(shù)據(jù)寫入新頁中,而將存儲舊數(shù)據(jù)的舊頁標記為無效狀態(tài),造成大量閃存空間存儲著無效數(shù)據(jù),因此需要垃圾回收[24-25]任務(wù)定期選擇閃存塊并對其進行擦除以獲得空閑空間;閃存耐久遠低于磁盤,閃存塊擦除一定次數(shù)后會導(dǎo)致?lián)p壞,因此需要磨損均衡[26-27]任務(wù)將需要頻繁更新的熱數(shù)據(jù)寫入磨損度較低的閃存塊中,使得各閃存塊能被均衡磨損,延長固態(tài)盤使用壽命;閃存接口管理[28]任務(wù)負責(zé)將請求調(diào)度模塊選擇的請求拆分成閃存頁對齊的子請求,并根據(jù)閃存介質(zhì)的狀態(tài)將子請求發(fā)往目標芯片上執(zhí)行.
閃存擦除操作必須以閃存塊為粒度,在擦除一個塊時,需要將其內(nèi)的有效頁遷移到其他塊中以避免數(shù)據(jù)丟失,由此會產(chǎn)生額外的數(shù)據(jù)寫入,造成寫入放大,既影響閃存性能,又加劇閃存磨損,降低閃存使用壽命.通常情況下,閃存固態(tài)盤內(nèi)的實際物理空間要大于租戶可見的邏輯空間,這些租戶不可見的額外閃存物理空間稱之為預(yù)留空間(over-provisioning space,OPS).更大的預(yù)留空間可以降低垃圾回收擦除閃存塊時的遷移開銷(遷移更少的有效頁),緩解寫入放大問題,提高固態(tài)盤性能及使用壽命[29].
主機接口負責(zé)主機與固態(tài)盤之間的通信和數(shù)據(jù)傳輸,從主機端獲取I/O 請求到設(shè)備端請求隊列,對其進行解析和調(diào)度后下發(fā)給控制器進行處理,待處理完成后向主機報告I/O 請求完成狀態(tài).目前主流使用的物理接口包括SATA(serial advanced technology attachment),SAS(serial attached small computer system interface)和PCIe 等.其中,PCIe 是連接外圍設(shè)備和主機處理器的主要接口,相比于SATA 和SAS 接口具有更低延遲和更高帶寬(例如,PCIe 4.0×4 和PCIe 5.0×4 的理論帶寬分別是8 GBps 和16 GBps),而且在硬件層面支持設(shè)備虛擬化.這些物理接口采用的邏輯接口協(xié)議一般是AHCI(advanced host controller interface)或者NVMe,后者能夠更好地發(fā)揮出固態(tài)盤的低延遲和高帶寬優(yōu)勢,因此得到越來越廣泛的使用.NVMe協(xié)議最多支持 64 000 條最大深度為64 000 的請求隊列,而且支持分區(qū)命名空間命令集等高級特性.
多租戶固態(tài)盤的關(guān)鍵設(shè)計目標是為租戶提供存儲服務(wù)質(zhì)量(quality of service,QoS)保障,并盡可能提高存儲資源利用率和總體性能.除存儲容量需求外,租戶還具有多樣化的I/O 性能要求:延遲敏感型租戶要求較低的平均延遲和有限的尾延遲;吞吐量敏感型租戶對存儲帶寬具有一定要求;在更一般的情況下,需要為租戶提供穩(wěn)定可預(yù)測以及公平的性能.此外,從存儲服務(wù)商角度而言,需要盡可能高效利用固態(tài)盤資源以增加收益和降低成本.
由于多租戶競爭使用固態(tài)盤內(nèi)有限的存儲資源,多租戶固態(tài)盤服務(wù)質(zhì)量保障面臨3 個關(guān)鍵挑戰(zhàn),如表1 所示.3 個挑戰(zhàn)分別是:1)租戶之間存在性能干擾,導(dǎo)致不穩(wěn)定和不可預(yù)測的性能[10,30];2)租戶間無序的資源競爭可能會造成不公平的性能分配[11,31];3)不理想的資源分配可能帶來較低的資源利用率和總體性能[32-33].下面對這位3 個問題進行具體闡述和分析.
多租戶固態(tài)盤技術(shù)使得多個租戶能共享使用同一固態(tài)盤,但也引發(fā)了租戶間的性能干擾問題,包括由I/O 爭用帶來的訪問沖突和調(diào)度干擾,以及多租戶數(shù)據(jù)混合存儲帶來的GC 干擾.
當(dāng)多個租戶訪問同一閃存晶圓時,由于閃存晶圓是執(zhí)行閃存操作的最小并行單元,因此不同租戶請求之間將產(chǎn)生訪問沖突.與此同時,調(diào)度策略對多租戶并發(fā)請求的調(diào)度選擇也將產(chǎn)生調(diào)度干擾,這都會產(chǎn)生租戶間的I/O 干擾.這種I/O 干擾源于不同租戶存在不同的負載特性,包括強度、大小、訪問類型等.例如,高強度負載單位時間內(nèi)發(fā)出的I/O 請求數(shù)更多,迫使低強度負載的I/O 請求經(jīng)歷更長的排隊等待時間;大型I/O 負載每個I/O 請求的完成時間更長,會顯著增加小型I/O 負載的請求平均響應(yīng)時間;由于閃存讀取速度比寫入速度快10~40 倍[34],讀請求排隊等待寫請求的完成時會經(jīng)歷顯著的排隊延遲,眾多I/O 調(diào)度器傾向于將讀請求優(yōu)先于寫請求響應(yīng)以獲得更好的讀性能[21,35],然而這會使得多租戶環(huán)境下讀密集型負載會不公平地優(yōu)先于寫密集型負載獲得響應(yīng),從而干擾寫密集型負載的性能.
租戶間的垃圾回收干擾源于不同租戶數(shù)據(jù)的混合存儲.一方面,訪問順序性強的負載通常使得更新寫產(chǎn)生的無效頁更集中,進而降低固態(tài)盤垃圾回收的遷移開銷,而多個共享租戶數(shù)據(jù)的混合存儲會破壞這種順序性,造成垃圾回收效率下降及固態(tài)盤性能下降,因此具有順序訪問型負載會受到隨機訪問型負載的性能干擾;另一方面,不同租戶數(shù)據(jù)的混合存儲導(dǎo)致每次垃圾回收涉及多個租戶數(shù)據(jù)的遷移,需要經(jīng)常觸發(fā)垃圾回收活動的負載(如寫密集型負載、隨機訪問型負載等)會使得低強度垃圾回收活動負載(如讀密集型負載、順序訪問型負載等)承擔(dān)大量本不必承擔(dān)的數(shù)據(jù)遷移開銷,造成性能干擾.
共享多租戶間的性能干擾會使得被干擾租戶的性能出現(xiàn)顯著波動,嚴重時將導(dǎo)致其服務(wù)質(zhì)量目標無法獲得滿足.
多租戶共享使用同一閃存固態(tài)盤時,由于租戶間的性能干擾及不公平的共享資源管理,各租戶會獲得不公平的資源分配并造成性能不公平問題.性能的度量標準包括帶寬、吞吐量以及請求延遲;而性能公平則分為比例公平與減速公平2 類.
比例公平下的性能通常以可直接量化控制的固態(tài)盤帶寬或吞吐量作為度量標準.例如,Linux 系統(tǒng)中可基于其資源控制框架Cgroup 對固態(tài)盤帶寬或吞吐量進行分配管理[36].多租戶性能比例不公平表現(xiàn)為各租戶的帶寬或吞吐量比值不符合租戶間的權(quán)重比值,而性能減速公平則側(cè)重于I/O 請求的響應(yīng)延遲.由于共享使用同一固態(tài)盤的多個租戶間存在性能干擾問題,各個租戶與其他租戶并發(fā)運行時的I/O 請求響應(yīng)延遲通常低于該租戶單獨使用固態(tài)盤時的響應(yīng)延遲,二者的比值稱為I/O 請求響應(yīng)延遲的減速程度(Slowdown),如式(1)所示,分別代表租戶i單獨運行時和與其他租戶并發(fā)運行時的I/O 請求響應(yīng)延遲.具有公平保障的多租戶固態(tài)盤應(yīng)當(dāng)確保各租戶I/O 請求響應(yīng)延遲的減速程度相同,如式(2)所示.Fairness表示公平性,其值越大代表該多租戶固態(tài)盤保障的減速程度越公平,F(xiàn)airness=1表示多租戶間減速程度的完全公平.
租戶受到的性能干擾越嚴重,其獲得的帶寬或吞吐量越低,I/O 請求響應(yīng)延遲的減速程度越高,因此公平性一定程度上也反映了多租戶固態(tài)盤的性能隔離程度.
不同的租戶有著不同類型的服務(wù)需求(低延遲、高帶寬、大容量等),當(dāng)這些不同需求的租戶共享使用固態(tài)盤時,各類資源的不合理分配會導(dǎo)致較低的資源利用率,造成多租戶固態(tài)盤的性能損失.例如,由于預(yù)留空間資源可以提升垃圾回收效率,降低固態(tài)盤的寫入放大,提升性能.當(dāng)較少觸發(fā)垃圾回收的租戶(如讀密集型應(yīng)用)獲得了大量預(yù)留空間資源分配時,這些預(yù)留空間資源過剩的租戶會造成共享運行的其他預(yù)留空間資源緊張的租戶(如寫密集型等需要頻繁觸發(fā)垃圾回收的應(yīng)用)的垃圾回收效率嚴重降低.與此同時,垃圾回收開銷的增大進一步又使得預(yù)留空間資源過剩租戶的請求被頻繁阻塞造成性能下降.因此,不合理的預(yù)留空間資源分配,會使得垃圾回收需要占用更多帶寬資源,造成多租戶固態(tài)盤的性能損失.此外,為避免突發(fā)請求無法滿足低延遲響應(yīng)需求,管理員通常會為延遲敏感型租戶預(yù)留專用資源,而由于突發(fā)請求屬于低頻事件,過量配置的資源會長時間處于低利用率狀態(tài)而無法被其他繁忙的租戶所利用,這也會造成多租戶固態(tài)盤的性能損失.
多租戶固態(tài)盤在發(fā)展的過程中面臨著性能干擾、性能不公平和性能損失3 類挑戰(zhàn),與之對應(yīng)發(fā)展出性能隔離保障、性能公平保障以及性能優(yōu)化3 類服務(wù)質(zhì)量保障技術(shù)目標及研究方向,如圖2 所示:
Fig.2 Targets of QoS in multi-tenant SSDs圖2 多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)目標
性能隔離保障技術(shù)針對性能干擾問題,研究如何解決多租戶對共享資源競爭帶來的I/O 干擾及GC干擾,實現(xiàn)I/O 隔離(包括調(diào)度隔離及訪問隔離)以及GC 隔離,確保各租戶負載特征發(fā)生變化時不會影響到其他租戶的性能,保障各租戶性能的穩(wěn)定.然而,性能隔離保障技術(shù)解決性能干擾問題的同時,意味著不合理的資源配置下,一個租戶的過量配置資源或閑置資源無法被其他租戶利用,必然會產(chǎn)生性能損失.
性能優(yōu)化技術(shù)則以固態(tài)盤性能為優(yōu)先考慮對象,研究如何動態(tài)調(diào)整資源配置,實現(xiàn)資源的高效利用,提升固態(tài)盤整體性能.但資源的動態(tài)調(diào)整必然會引入租戶間的干擾問題(被增加資源配置的租戶的性能提升,被減少資源配置的租戶的性能降低),且可能造成部分租戶性能被嚴重犧牲.
性能公平保障技術(shù)則綜合考慮隔離性與性能,其并不要求確保租戶間性能的完全隔離,因此,允許共享資源的高效利用,但同時也并未完全放棄對租戶干擾問題的管理,而是確保租戶間的性能干擾對彼此造成的影響是公平的.
固態(tài)盤單位時間內(nèi)的服務(wù)能力是有限的,從時間維度上的多租戶共享競爭而言,固態(tài)盤完成一個租戶的請求時間增多,必然導(dǎo)致完成其他租戶的請求時間減少;而從空間維度上的多租戶共享競爭而言,包括緩存、OPS 等空間資源的分配同樣影響著租戶間的性能公平.面向性能公平保障的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)在時間維度上通過公平的I/O調(diào)度管理,包括基于預(yù)算分配以及基于隊列仲裁2類策略,調(diào)整控制為各租戶服務(wù)的時間;在空間維度上則通過公平的固態(tài)盤空間資源分配來影響租戶的性能,最終實現(xiàn)多租戶間的性能公平保障目標.
3.1.1 基于預(yù)算分配的I/O 請求調(diào)度策略
基于預(yù)算分配的請求調(diào)度方案如圖3 所示,通過周期性的“預(yù)算分配—預(yù)算消耗—調(diào)度限制”過程實現(xiàn)I/O 請求調(diào)度.如圖4 所示,在每個調(diào)度周期的開始,基于預(yù)算的請求調(diào)度方案將為各租戶分配性能預(yù)算,反映了各租戶本周期內(nèi)預(yù)期能獲得的最大性能;每當(dāng)一個I/O 請求被調(diào)度時,對應(yīng)租戶的預(yù)算將減少該I/O 請求對應(yīng)的開銷,預(yù)算的消耗反映了租戶本周期內(nèi)已實際獲得的性能;一旦預(yù)算被消耗完,調(diào)度器當(dāng)前周期內(nèi)不再調(diào)度該租戶的其余I/O 請求,避免其繼續(xù)獲得超預(yù)期的性能,直至下一周期重新分配新的預(yù)算.基于預(yù)算的請求調(diào)度方案既可以通過穩(wěn)定的預(yù)算分配及消耗來保障租戶間的性能隔離,同時也能通過公平的預(yù)算分配及消耗來保障租戶間的性能公平.
Linux CFQ[37]中預(yù)算以時間片的形式劃分給各租戶,每個租戶在自己的時間片內(nèi)調(diào)度I/O 請求并獨享固態(tài)盤性能,只有當(dāng)請求隊列為空或時間片到期時才切換到下一租戶.然而由于閃存讀寫速度差異等原因,不同讀寫比的租戶同等長度時間片內(nèi)可以實現(xiàn)的性能并不一定相同,公平的時間片劃分并不能完全保障性能公平.Linux BFQ[38]將帶寬(以扇區(qū)為單位)作為預(yù)算進行劃分,預(yù)算的多少可以直接反映出性能高低,確保公平的預(yù)算分配可以保障性能公平.然而CFQ 和BFQ 方案均要求租戶在一個連續(xù)的時間段內(nèi)調(diào)度其I/O 請求,當(dāng)租戶請求強度低而無法充分利用固態(tài)盤帶寬時,要么會由于隊列為空而提前結(jié)束其調(diào)度周期,造成租戶剩余預(yù)算被不公平地沒收,要么會等待至下一I/O 請求的到來直至周期結(jié)束,造成固態(tài)盤性能的閑置浪費.
Fig.3 Evolution of I/O request scheduling strategy based on budget allocation for multi-tenant SSDs圖3 多租戶固態(tài)盤基于預(yù)算分配的I/O 請求調(diào)度策略演進
Fig.4 I/O request scheduling based on budget allocation圖4 基于預(yù)算分配的I/O 請求調(diào)度
考慮到單租戶可能無法充分利用固態(tài)盤的高并發(fā)性能,F(xiàn)IOS[31]允許并發(fā)調(diào)度多個租戶的I/O 請求以充分利用閃存內(nèi)部并行性提高性能.然而同時調(diào)度多個租戶的I/O 請求,使得請求預(yù)算開銷計算變得復(fù)雜.例如,多個并發(fā)讀請求的數(shù)據(jù)存儲在同一閃存晶圓內(nèi)時,由訪問沖突等造成的排隊延遲不應(yīng)計入請求開銷中,以確保預(yù)算消耗的公平性;當(dāng)不同大小的讀寫請求并發(fā)執(zhí)行時,考慮到閃存讀寫速度差異和請求大小等因素,其各自應(yīng)當(dāng)承擔(dān)不同的請求開銷.FIOS 通過預(yù)先對4KB 讀寫請求和128KB 讀寫請求的開銷成本進行校準,基于請求開銷與請求大小存在線性關(guān)系這一假設(shè),建立請求開銷線性模型,并在運行過程中基于該線性模型估算I/O 請求開銷.
考慮到并發(fā)讀寫請求之間的I/O 干擾對性能公平性的影響,TABS[39]在給讀寫請求分配公平帶寬預(yù)算的同時,通過周期性根據(jù)每類請求的實際帶寬和I/O 強度來設(shè)置公平的帶寬預(yù)算配置,動態(tài)調(diào)整預(yù)算分配,最終實現(xiàn)性能公平.
此外,SV[40]認為在基于閃存固態(tài)盤的緩存架構(gòu)下,多租戶間對固態(tài)盤壽命磨損的公平與性能公平同樣重要,因此將固態(tài)盤的寫入次數(shù)也作為一類主要資源,以寫預(yù)算的方式在租戶間進行公平分配(超過預(yù)算的數(shù)據(jù)寫入則由下一級存儲處理),在此基礎(chǔ)上,采用博弈論中的沙普利值[44]策略對共享租戶垃圾回收產(chǎn)生的寫開銷進行公平分攤,實現(xiàn)租戶間對閃存介質(zhì)的公平磨損.
3.1.2 基于隊列仲裁的I/O 請求調(diào)度策略
圖5 展示了基于隊列仲裁的I/O 請求調(diào)度策略.傳統(tǒng)公平隊列仲裁RR(round-robbin)方案輪詢調(diào)度每個租戶的請求隊列中的排隊I/O 請求,每調(diào)度完一個租戶的I/O 請求后就切換到下一個租戶的請求隊列中進行調(diào)度;WRR[45](weighted round-robbin)方案允許為各租戶賦予不同權(quán)重,以實現(xiàn)有差別的性能,調(diào)度完的一個租戶符合其權(quán)重的I/O 請求個數(shù)后才切換到其他租戶請求隊列中進行調(diào)度;DRR[46](deficit round-robbin)方案則在賦予租戶權(quán)重的同時,也為I/O 請求賦予權(quán)重,即每個I/O 請求的開銷與請求大小等特征相關(guān),調(diào)度完一個租戶符合其權(quán)重的I/O 總開銷后才切換請求隊列.然而,這3 種調(diào)度方案需要連續(xù)調(diào)度租戶多個I/O 請求直至滿足其當(dāng)前輪次的調(diào)度限制,當(dāng)租戶請求隊列中的I/O 請求個數(shù)不足時,其當(dāng)前輪次無法獲得足額性能,且也無法在后續(xù)輪次中被補償,因此在I/O 請求非勻速到達的場景下無法保障性能公平.
SFQ[47]方案則為每個租戶維護一個虛擬時間記錄該租戶歷史性能,不同于上述輪詢類調(diào)度方案只能保障每輪次的短期性能公平性,SFQ 方案可以保障各租戶長期性能的公平性.每完成一個I/O 請求,SFQ 將該租戶的虛擬時間向前推進該I/O 請求對應(yīng)的開銷L∕W(L代表I/O 請求長度,W代表租戶權(quán)重),通過優(yōu)先調(diào)度性能最差的租戶(其記錄的虛擬時間最小)的I/O 請求,最終保障各租戶的性能公平.SFQ(D)[48]則在SFQ 方案基礎(chǔ)上通過允許同時調(diào)度D個I/O 請求,充分利用閃存固態(tài)盤內(nèi)豐富的并行性能來提升固態(tài)盤性能.然而同時調(diào)度多個租戶的I/O請求帶來高并發(fā)行的同時,也引入了租戶間不公平的性能干擾,例如,隨機型負載和順序型負載并發(fā)運行時,隨機型負載的高垃圾回收開銷會嚴重干擾順序型負載的性能等.FlashFQ[49]在SFQ(D)的基礎(chǔ)上進行改進,通過阻塞性能過于超前的“激進”租戶的I/O 請求,避免其對其他租戶I/O 響應(yīng)的干擾,以此提升“滯后”租戶的性能,確保多租戶間的性能公平.
Fig.5 Evolution of I/O request scheduling strategy based on queue arbitration for multi-tenant SSDs圖5 多租戶固態(tài)盤基于隊列仲裁的I/O 請求調(diào)度策略演進
由于現(xiàn)代高速固態(tài)盤技術(shù)的快速發(fā)展,存儲系統(tǒng)的性能瓶頸逐漸從硬件性能轉(zhuǎn)移到I/O 棧軟件開銷.FLIN[11]因此將I/O 請求公平調(diào)度管理功能從主機端卸載到固態(tài)盤內(nèi)實現(xiàn),從而消除主機端操作系統(tǒng)管理I/O 請求調(diào)度的軟件棧開銷.通過“公平感知的隊列插入—優(yōu)先級感知的隊列仲裁—排隊均衡的調(diào)度選擇”3 層機制,F(xiàn)LIN 可以在設(shè)備端實現(xiàn)公平請求調(diào)度.同時由于在設(shè)備端可以確切地了解固態(tài)盤內(nèi)部狀態(tài),包括空閑并行度、是否觸發(fā)了垃圾回收等,F(xiàn)LIN 可以做出比主機端調(diào)度器更高效的調(diào)度決策,但也因此使得固態(tài)盤固件變得更為復(fù)雜,需要性能更強的盤內(nèi)處理器支持.
隨著多處理器等技術(shù)的進一步發(fā)展與普及,存儲系統(tǒng)逐漸發(fā)展出包括Linux 多隊列塊層[52]、NVMe驅(qū)動器以及多隊列固態(tài)盤[53]等在內(nèi)的多隊列架構(gòu)設(shè)計.在多隊列架構(gòu)下,每個租戶都擁有一個專用I/O隊列用于直接與固態(tài)盤設(shè)備進行發(fā)送和接收I/O 請求,以減少單隊列集中管理的軟件開銷.傳統(tǒng)基于單隊列集中管理的公平調(diào)度方案,由于其嚴格的公平性保障控制會帶來嚴重的集中管理軟件開銷,已不再適用于多隊列架構(gòu)設(shè)計.MQFQ[50]在多隊列架構(gòu)下改進FlashFQ 方案,當(dāng)激進租戶的虛擬時間超過滯后租戶T個單位時,通過可伸縮的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)激進租戶請求隊列的掛起及快速恢復(fù),保障松弛的性能公平.MQFQ 方案通過配置合適的參數(shù)T,既取得單隊列集中調(diào)度請求帶來的性能公平性,又獲得多隊列直通訪問設(shè)備帶來的高性能.
D2FQ[51]則移除主機端復(fù)雜的公平調(diào)度器,利用NVMe 協(xié)議提供的WRR 隊列仲裁功能,通過協(xié)同主機和設(shè)備的管理,實現(xiàn)輕量級的I/O 公平調(diào)度器,進一步減少主機端I/O 棧軟件開銷,在存儲設(shè)備并非性能瓶頸的系統(tǒng)中保障公平的同時實現(xiàn)更高的性能.具體而言,D2FQ 采取在主機端按照租戶虛擬時間的激進程度將請求插入設(shè)備端不同權(quán)重的優(yōu)先級隊列中,而由設(shè)備端完成WRR 隊列調(diào)度,同時主機端基于租戶間性能的不公平程度調(diào)整設(shè)備端優(yōu)先級隊列間的權(quán)重比,最終保障租戶間的性能公平.如圖6 所示,無公平I/O 調(diào)度的None 方案無法保障租戶間的性能公平(租戶間的性能比值不符合權(quán)重比值),而方案D2FQ,MQFQ 以及BFQ 則保障了租戶間的性能公平(權(quán)重為8,6,4 的租戶w8,w6,w4 的性能分別是權(quán) 重為2 的租戶w2 的性能 的4,3,2 倍),由 于MQFQ 及D2FQ 方案避免了集中式公平調(diào)度管理,利用了多隊列架構(gòu)下的直通訪問性能,極大降低了I/O棧軟件開銷,因此實現(xiàn)了2 倍于傳統(tǒng)BFQ 方案的性能.
Fig.6 Performance of different I/O request scheduling strategies for multi-tenant SSDs[51]圖6 多租戶固態(tài)盤不同I/O 請求調(diào)度策略的性能[51]
3.1.3 空間資源公平分配策略
特別地,不同于3.1.1 節(jié)和3.1.2 節(jié)從I/O 調(diào)度管理角度實現(xiàn)性能公平保障目標,OPS-Isolation[10]發(fā)現(xiàn)由于垃圾回收需要遷移有效數(shù)據(jù),造成寫入放大,會產(chǎn)生額外的數(shù)據(jù)讀寫從而影響性能,而OPS 大小與寫入放大密切相關(guān)[29].因此,實現(xiàn)在設(shè)備端內(nèi)的OPSIsolation 方案動態(tài)調(diào)控租戶間的OPS 資源分配從而實現(xiàn)對性能的控制,通過將超過公平比例性能的租戶的OPS 資源重新分配給低于公平比例性能的租戶,提高后者的性能,最終實現(xiàn)租戶間的性能公平.方案Justitia[54]則通過動態(tài)調(diào)整多租戶間盤內(nèi)緩存資源的分配,減少數(shù)據(jù)緩存爭用造成的性能不公平,預(yù)留部分緩存資源專用于低于公平比例性能的租戶,由此保障共享多租戶間的性能比例公平.不同于Justitia通過管理盤內(nèi)緩存資源分配實現(xiàn)塊級I/O 的性能公平,為避免主機端緩存對塊級I/O 公平性的扭曲,WaC[55]通過管理主機緩存資源分配,根據(jù)I/O 權(quán)重對等待獲取鎖的請求隊列進行重排序,在緩存分配中獲取鎖的過程里優(yōu)先考慮權(quán)重更高的應(yīng)用,并在緩存回收時保障每個應(yīng)用的緩存資源與I/O 權(quán)重成正比,最終實現(xiàn)了應(yīng)用級的I/O 比例公平.
3.1.4 小 結(jié)
多租戶固態(tài)盤通過I/O 請求公平調(diào)度策略和空間資源公平分配策略來保障共享多租戶間的性能公平,如表2 所示:
I/O 請求公平調(diào)度策略包括基于隊列仲裁和基于預(yù)算分配2 類策略.基于隊列仲裁的I/O 請求調(diào)度策略,通過控制I/O 請求的調(diào)度順序,優(yōu)先調(diào)度性能“滯后”租戶的I/O 請求,保障調(diào)度選擇的長期公平性;基于預(yù)算分配的I/O 請求調(diào)度策略則通過預(yù)算分配的形式限制租戶的最大性能,由此實現(xiàn)多租戶固態(tài)盤性能公平保障目標.然而由于基于預(yù)算分配的I/O請求調(diào)度策略僅保障周期內(nèi)的公平性,上一周期內(nèi)的性能不公平無法在下一周期中得到補償和糾正,因此長期來看,其性能公平性弱于基于隊列仲裁的I/O 請求調(diào)度策略.如圖7 所示,基于預(yù)算分配的BFQ方案性能公平性(即負載aerospike 和負載fio-4×4KB在并發(fā)運行時性能相比于其單獨運行時性能的減速程度的最大與最小的比值)優(yōu)于無公平保障的None方案,但弱于基于隊列仲裁的MQFQ 方案.
Fig.7 Performance slowdown fairness results of different I/O request scheduling strategies for multi-tenant SSDs[50]圖7 多租戶固態(tài)盤不同I/O 請求調(diào)度策略性能減速公平性測試結(jié)果[50]
空間資源公平分配則通過動態(tài)調(diào)整固態(tài)盤空間資源(包括緩存、OPS 資源)的分配來間接影響租戶的性能表現(xiàn),最終保障多租戶間的性能公平.然而,空間資源公平分配策略也存在著其局限性,例如,OPS 資源僅對寫性能產(chǎn)生影響,當(dāng)?shù)陀诠奖壤阅艿淖鈶魹樽x密集型租戶時,為其分配更多OPS 資源不僅不能提升其性能,反而會降低被減少OPS 資源的租戶的寫性能.而將有限的緩存資源更多地分配給讀密集型租戶以提升其性能公平性的同時,也會降低用于寫請求的緩存資源,由此增大了固態(tài)盤的寫入放大,降低了固態(tài)盤的使用壽命及整體性能.
面向性能隔離保障的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)通過空間隔離和I/O 隔離解決共享多租戶間的性能干擾問題,最終實現(xiàn)性能隔離保障目標.
3.2.1 空間隔離策略
從空間維度上的共享競爭而言,多租戶數(shù)據(jù)混合存儲在同一閃存塊內(nèi),使得固態(tài)盤執(zhí)行垃圾回收時閃存塊的擦除涉及到多個租戶的數(shù)據(jù)遷移,由此產(chǎn)生租戶間的GC 干擾問題;與此同時,多租戶可能同時訪問同一閃存晶圓(獨立執(zhí)行閃存操作的最小并行單元)執(zhí)行數(shù)據(jù)讀取或?qū)懭?,由此產(chǎn)生租戶間的訪問沖突.
多租戶固態(tài)盤面向性能隔離保障的空間管理策略,根據(jù)數(shù)據(jù)隔離粒度的大小,劃分成不同級別的數(shù)據(jù)隔離方案,旨在實現(xiàn)不同程度的性能隔離效果.數(shù)據(jù)隔離粒度包括通道級隔離、芯片級隔離、晶圓級隔離、分組級隔離以及塊級隔離,分別確保一個通道、芯片、晶圓、分組以及閃存塊內(nèi)只存儲單個租戶的數(shù)據(jù).其中通道級隔離、晶圓級隔離、塊級隔離如圖8 所示.由于閃存晶圓是閃存固態(tài)盤內(nèi)可以獨立執(zhí)行閃存命令的最小并行單元,因此將晶圓級及以上級別(芯片級、通道級)的隔離稱為硬隔離方案,而將分組級和塊級隔離稱為軟隔離方案.
Fig.8 Different levels of space isolation schemes for multi-tenant SSDs圖8 多租戶固態(tài)盤不同級別的空間隔離方案
相比于無隔離方案,軟隔離方案避免了不同租戶數(shù)據(jù)被存儲在同一閃存塊內(nèi)的情況,租戶觸發(fā)垃圾回收時僅選擇擦除存儲自身數(shù)據(jù)的閃存塊,因此固態(tài)盤每次垃圾回收只涉及單個租戶的數(shù)據(jù)遷移,實現(xiàn)了GC 隔離保障.特別地,針對鍵值存儲固態(tài)盤(key-value SSDs,KVSSDs)這類非傳統(tǒng)塊存儲固態(tài)盤而言,不僅數(shù)據(jù)在閃存物理介質(zhì)上的混合存儲會帶來性能干擾,其無隔離保障的日志結(jié)構(gòu)合并樹(logstructed merge-tree,LSM-tree)設(shè)計同樣會造成性能干擾,例如高強度寫負載會搶占更多的低層有序字符串表(sorted string table,SSTable)空間,使得低強度負載的數(shù)據(jù)被迫存儲在更高層的SSTable 中,造成其糟糕的讀性能.針對該問題,Iso-KVSSD[56]實現(xiàn)了一種支持多租戶命名空間和性能隔離的鍵值存儲固態(tài)盤,為每個租戶的命名空間配置專用LSM-tree,在第0層SSTable 中混合存儲多租戶數(shù)據(jù)以提高緩存資源利用率,在第0 層SSTable 數(shù)據(jù)往高層合并的過程中分離不同命名空間的數(shù)據(jù)并分別寫入其對應(yīng)的專用LSM-tree 中,最終保障多租戶間的性能隔離.
Table 1 Categories and Descriptions of Challenges in Multi-Tenant SSDs表1 多租戶固態(tài)盤面臨的挑戰(zhàn)類別及描述
Table 2 Summary of QoS Technical for Multi-Tenant SSDs Oriented to Performance Fairness表2 面向性能公平的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)總結(jié)
Table 3 Summary of QoS Technical for Multi-Tenant SSDs Oriented to Performance Isolation表3 面向性能隔離的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)總結(jié)
Table 4 Summary of Space Resource Allocation Schemes for Multi-Tenant SSDs表4 多租戶固態(tài)盤空間資源分配策略總結(jié)
相比于軟隔離方案,硬隔離方案不僅可以保障GC 隔離,同時也可以通過將不同租戶數(shù)據(jù)存儲在不同的閃存晶圓中,從而避免不同租戶訪問同一閃存晶圓,實現(xiàn)租戶間的調(diào)度隔離及訪問隔離.例如,VFlash[57]為每個租戶提供獨立的硬件資源,包括盤內(nèi)緩存、芯片級隔離的閃存資源等,從而完全避免租戶間的性能干擾,實現(xiàn)強隔離性.
硬隔離方案可以保障強隔離性,但也存在缺陷.首先,單個閃存晶圓容量可達數(shù)十GB 大小[14],如此粗粒度的數(shù)據(jù)隔離容易造成空間浪費及低利用率.其次,每個租戶只能訪問部分并行單元,其最大并行帶寬受限[43].如圖9 所示,PVR 負載在晶圓級硬隔離方案DLS 下的性能約為分組級軟隔離方案PLS 下性能的1∕3,約為塊級軟隔離方案BLS 下性能的1∕4,且一個租戶的空閑并行單元無法被其他租戶訪問,會造成性能損失[32].此外,為了提高盤內(nèi)數(shù)據(jù)可靠性,固態(tài)盤可能采用晶圓級獨立磁盤冗余陣列(redundant arrays of independent disks,RAID)技術(shù)[58]來避免數(shù)據(jù)丟失,而這與硬隔離方案相沖突,因為各租戶會產(chǎn)生對存儲校驗數(shù)據(jù)的晶圓的訪問沖突,破壞硬隔離方案的隔離性.最后,為延長固態(tài)盤使用壽命,避免部分閃存塊過早損壞,固態(tài)盤通常需要進行磨損均衡,例如將熱數(shù)據(jù)(擦除更頻繁)寫入磨損程度較低的閃存塊中,而硬隔離方案下各租戶閃存空間相互隔離,阻礙了租戶間的磨損均衡,為多租戶固態(tài)盤的壽命磨損帶來了新的挑戰(zhàn)[12].
Fig.9 Performance results for block-,plane-,and die-level isolation schemes[43]圖9 塊級、分組級和晶圓級隔離方案的性能測試結(jié)果[43]
考慮到硬隔離方案的上述缺陷,F(xiàn)lashBlox[12]在原有磨損均衡算法保障各租戶內(nèi)閃存塊公平磨損的基礎(chǔ)上,通過補充設(shè)計租戶間的磨損均衡算法,保障各租戶間的公平磨損,提升多租戶固態(tài)盤的使用壽命;CostPI[59]則考慮不同租戶的性能需求,僅為延遲敏感型租戶分配獨立的閃存和緩存資源,而為其他類型租戶(例如,帶寬需求型租戶、容量需求型租戶等)分配共享閃存和緩存資源,避免為其他類型租戶分配獨立資源而產(chǎn)生資源閑置,在為延遲敏感型租戶保障性能隔離的同時提升資源利用率及固態(tài)盤性能.LiveSSD[58]為解決硬隔離下盤內(nèi)RAID 奇偶校驗更新引入的性能干擾問題,將具有相同偏移量的閃存頁以RAID-4 的方式構(gòu)成一個條帶,通過采用高速非易失性隨機訪問存儲器(non-volatile random access memory,NVRAM)用于奇偶校驗存儲來避免奇偶校驗更新造成的性能瓶頸,同時通過利用盤內(nèi)空閑時間提前主動進行奇偶校驗更新來避免其造成的I/O干擾,最終保障在硬隔離固態(tài)盤中實現(xiàn)RAID 數(shù)據(jù)保護,并將奇偶校驗更新造成的性能干擾降到最低.
3.2.2 I/O 隔離策略
多租戶I/O 請求調(diào)度策略包括基于隊列仲裁的I/O 請求調(diào)度和基于預(yù)算分配的I/O 請求調(diào)度.由于基于隊列仲裁的I/O 請求調(diào)度方案會優(yōu)先調(diào)度性能“滯后”租戶的I/O 請求,其必然會影響性能“激進”租戶的性能,即存在性能干擾問題,因此無法保障共享多租戶間的性能隔離.通常而言,面向性能隔離保障的多租戶I/O 請求調(diào)度策略采用基于預(yù)算分配的I/O 請求調(diào)度方案(如圖3 所示),每租戶的性能取決于其分配到的性能預(yù)算,而非I/O 請求調(diào)度的先后順序,由此實現(xiàn)調(diào)度隔離.
Linux CFQ 和BFQ 采用互斥的調(diào)度策略,每次僅允許單個租戶進行I/O 調(diào)度,直至性能預(yù)算(時間片或帶寬)耗盡才切換到其他租戶進行I/O 調(diào)度,因此不同租戶間不存在I/O 干擾.隨著多隊列架構(gòu)的發(fā)展,同時調(diào)度多個租戶I/O 請求的策略逐漸成為了充分發(fā)掘閃存固態(tài)盤內(nèi)部并行性的必然選擇,但也引入了多租戶間的I/O 干擾,如何感知并區(qū)分干擾的影響成為了能否保障性能隔離的關(guān)鍵.
FIOS 觀察了讀寫請求間的性能干擾以及請求大小對固態(tài)盤并行性能利用率的影響,通過對4KB 讀寫請求和128KB 讀寫請求的開銷成本進行預(yù)統(tǒng)計及分析,構(gòu)建請求開銷與請求類型和請求大小的線性關(guān)系,在共享運行過程中基于該線性模型計算I/O 請求開銷,避免多租戶間的I/O 干擾造成錯誤的開銷計算及預(yù)算消耗.
然而請求開銷不僅與I/O 請求類型和大小相關(guān),還與訪問特性等其他因素相關(guān).例如,隨機寫負載的寫入放大通常高于順序?qū)懾撦d,隨機讀負載的并行性能通常低于順序讀負載等,因此隨機讀寫請求的開銷應(yīng)高于順序讀寫請求,F(xiàn)IOS 中僅基于I/O 請求類型和大小的離線開銷模型并不準確.BCQ[41]記錄每個調(diào)度周期內(nèi)完成的讀寫請求數(shù),通過歷史信息(如最近20 個周期的數(shù)據(jù))構(gòu)成讀寫請求數(shù)與總讀寫開銷關(guān)系的二元線性方程組,在線計算求解出讀寫平均開銷來擬合后續(xù)I/O 請求的預(yù)算開銷.
然而,上述實現(xiàn)在主機端的I/O 請求調(diào)度方案由于缺乏并發(fā)I/O 請求間資源共享情況等設(shè)備級知識,其請求開銷模型均無法解決由垃圾回收帶來的性能干擾,因此其隔離性較弱.在設(shè)備端實現(xiàn)的WABC[42]方案在BCQ 提出的請求開銷計算模型基礎(chǔ)上,結(jié)合空間軟隔離方案,保障GC 隔離的同時,考慮不同租戶間的GC 干擾.其在計算得到讀寫請求平均開銷后,基于各租戶的寫入放大將固態(tài)盤垃圾回收開銷分攤到各租戶寫開銷中,由此實現(xiàn)更強的性能隔離效果.VSSD[43]則將I/O 請求的開銷定義為所有子請求(閃存頁大?。嶋H占用閃存時間(即完成一個讀閃存頁或?qū)戦W存頁)之和,通過空間軟隔離方案,使得各租戶觸發(fā)的垃圾回收(有效頁遷移產(chǎn)生的讀請求和寫請求)由其自身承擔(dān)開銷,由此避免了租戶間I/O 沖突造成的調(diào)度干擾以及GC 干擾,實現(xiàn)了多租戶間的性能隔離保障.
3.2.3 小 結(jié)
面向性能隔離保障的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)通過空間隔離及I/O 隔離解決共享多租戶間的性能干擾問題,如表3 所示.空間硬隔離方案通過為不同租戶分配獨立的硬件資源,完全避免多租戶對固態(tài)盤資源的爭用,由此實現(xiàn)調(diào)度隔離、GC 隔離以及訪問隔離,表現(xiàn)出強性能隔離效果;空間軟隔離方案允許多租戶共享固態(tài)盤資源,但為不同租戶分配不同閃存塊,避免多租戶數(shù)據(jù)混合存儲在同一閃存塊中,由此實現(xiàn)GC 隔離;I/O 隔離方案采用基于預(yù)算分配的I/O 請求調(diào)度器,通過穩(wěn)定的預(yù)算分配及隔離的I/O 請求開銷模型,實現(xiàn)多租戶間的調(diào)度隔離.由于空間軟隔離方案和I/O 隔離方案各自只解決了部分性能干擾問題,因此其性能隔離效果均弱于空間硬隔離方案,但通過空間軟隔離方案和I/O 隔離方案的協(xié)同設(shè)計,其最終可實現(xiàn)等同于硬隔離方案的強性能隔離保障.
如圖10 所示,我們在廣泛用于模擬固態(tài)盤的實驗平臺SSDSim[60]中進行了不同級別的空間隔離方案的隔離性比較實驗.模擬的固態(tài)盤采用4 個通道,每通道連接4 個芯片,每芯片包含2 560 個閃存塊,每個閃存塊包含256 個4 KB 大小閃存頁,閃存讀、寫、擦除延遲分別為60 μs,800 μs,1.5 ms,總線數(shù)據(jù)傳輸速度為400 MBps,預(yù)留空間占比25%.實驗測試了2 個租戶并發(fā)運行時的性能,varmail(1),randwrite(1)代表共享租戶A和B分別運行varmail 和randwrite 負載,且二者權(quán)重比為1∶1,這2 個負載均通過文件系統(tǒng)測試工具Filebench[61]收集而成,varmail 為寫I/O 占比64.2%的隨機小型I/O 負載,randwrite 為寫I/O 占比100%的隨機4KB I/O 負載.“硬隔離”方案采用通道級空間隔離,“軟隔離”方案采用塊級空間隔離,“I/O 隔離”方案采用VSSD[43]實現(xiàn)的FACO 調(diào)度器,“無隔離”方案下多租戶數(shù)據(jù)可能混合存儲在同一閃存塊中且多租戶I/O 請求采用無隔離保障的先進先出(first in first out,F(xiàn)IFO)調(diào)度策略.從圖10 中可以發(fā)現(xiàn),“軟隔離+I/O 隔離”方案實現(xiàn)了等同于“硬隔離”方案的強隔離性,即varmail 負載的性能波動不會對randwrite 負載的性能產(chǎn)生干擾;而“軟隔離”“I/O 隔離”和“無隔離”方案均無法保障租戶間的性能隔離.通過該5 種隔離方案的性能表現(xiàn)可以發(fā)現(xiàn),保障了性能隔離的“硬隔離”和“軟隔離+I/O 隔離”方案總性能更高;而“軟隔離”和“I/O 隔離”方案各自忽視了共享多租戶間的I/O 干擾或GC 干擾,僅保障了部分性能隔離,最終導(dǎo)致其總性能弱于“硬隔離”和“軟隔離+I/O 隔離”方案;“無隔離”方案則完全忽視了共享多租戶間的性能干擾問題,因此其總性能表現(xiàn)最差.
面向性能優(yōu)化的服務(wù)質(zhì)量保障技術(shù)通過優(yōu)化固態(tài)盤資源分配來實現(xiàn)最大化資源利用效率和總體性能.固態(tài)盤資源可分為時間資源和空間資源2 個維度,時間資源即固態(tài)盤為租戶提供I/O 服務(wù)的總時間(表現(xiàn)為時間片、帶寬、吞吐量等資源),空間資源則包括緩存、OPS 等資源.
Fig.10 Performance results of different levels of spatial isolation schemes for multi-tenant SSDs圖10 多租戶固態(tài)盤不同級別的空間隔離方案的性能結(jié)果
時間資源的分配可通過I/O 請求調(diào)度策略實現(xiàn)控制,例如,在Linux Cgroup 框架中實現(xiàn)的基于預(yù)算分配的I/O 請求調(diào)度器WDT[62],通過跟蹤各租戶每周期的性能表現(xiàn)及時間資源(帶寬預(yù)算)消耗情況,動態(tài)調(diào)整租戶間的時間資源分配,以避免低強度租戶分配到超過其需求的時間資源而導(dǎo)致的性能損失,在保障性能公平的同時提升固態(tài)盤整體性能.
空間資源的分配則通過固態(tài)盤控制器來實現(xiàn)調(diào)控,包括靜態(tài)分區(qū)、共享競爭和動態(tài)分配3 類,如表4所示,其中靜態(tài)分區(qū)方案可以有效保障租戶間的性能隔離,然而低效的靜態(tài)分區(qū)配置和缺乏負載特性感知的共享競爭方案都無法最大化資源利用率,因此會造成性能損失.我們依舊在SSDSim 平臺上進行測試,測試結(jié)果如圖11 所示.圖11 中在前150 min 內(nèi),租戶A和租戶B以1∶3 的權(quán)重比分別運行varmail負載和randwrite 負載;在后150 min 內(nèi),租戶A和租戶B切換成以3∶1 的權(quán)重比分別運行randwrite 負載和varmail 負載.“最佳分區(qū)(左)”和“最佳分區(qū)(右)”分別是通過逐一測試不同分區(qū)配置下的性能,最終分析獲得在前150 min 和后150 min 內(nèi)的最佳靜態(tài)分區(qū)配置.“共享競爭”則是允許租戶A和租戶B自由競爭OPS 資源.從圖11 中,可以發(fā)現(xiàn),無論是“最佳分區(qū)(左)”還是“最佳分區(qū)(右)”配置均只能實現(xiàn)局部最優(yōu)性能,當(dāng)多租戶固態(tài)盤運行狀態(tài)發(fā)生變化后,原本的局部最佳分區(qū)配置不再適應(yīng)新的負載環(huán)境,因此空間資源的靜態(tài)分區(qū)方案無法最大化固態(tài)盤資源利用率,導(dǎo)致低性能.這表明靜態(tài)分區(qū)策略保障性能隔離的同時也失去了優(yōu)化資源分配以提升資源利用率及固態(tài)盤性能的機會,盡管可以讓管理人員手動更改分區(qū)配置,但隨著共享租戶數(shù)量的增多及運行負載特征的復(fù)雜變化,“最佳分區(qū)”配置難以通過人工分析確定并及時手動調(diào)整;同樣地,“共享競爭”方案的總體性能也遠低于固態(tài)盤可達到的最佳性能.因此,如何通過在運行時動態(tài)調(diào)整多租戶間的空間資源分配以實現(xiàn)最大化固態(tài)盤整體性能則成為了面向性能優(yōu)化的服務(wù)質(zhì)量保障技術(shù)的一個重要研究問題.
Fig.11 Performance results of different space resource allocation schemes for multi-tenant SSDs圖11 多租戶固態(tài)盤不同空間資源分配方案的性能測試結(jié)果
SSDKeeper[33]發(fā)現(xiàn)在數(shù)據(jù)通道級硬隔離方案下,多租戶間不同的通道資源分配策略會產(chǎn)生不同的性能結(jié)果,最大性能差(平均請求延遲)可高達10 倍,由此提出采用機器學(xué)習(xí)方法,通過人工神經(jīng)網(wǎng)絡(luò)離線訓(xùn)練,建立租戶間負載強度比、負載讀寫比與不同分配策略的性能關(guān)系模型,并基于該模型在線動態(tài)調(diào)整租戶間的通道資源分配,最終提升多租戶固態(tài)盤的整體性能.UPI[32]類似地采用數(shù)據(jù)芯片級硬隔離的動態(tài)分配方案,提出分配給各租戶的閃存芯片集合的利用率計算模型,并基于該模型周期性動態(tài)調(diào)整空間分配,最終實現(xiàn)多租戶固態(tài)盤空間資源整體利用率的優(yōu)化.然而,數(shù)據(jù)硬隔離方案下空間隔離粒度大(一個閃存晶圓容量可達數(shù)十GB 大小[14]),因此動態(tài)分配開銷極大,每次動態(tài)調(diào)整可能涉及GB 數(shù)量級的數(shù)據(jù)遷移,這既會加劇固態(tài)盤的寫入放大,同時也會使得動態(tài)調(diào)整速度極慢,存在滯后性,靈活性差.基于空間軟隔離方案實現(xiàn)低開銷的空間動態(tài)調(diào)整技術(shù)以提升多租戶固態(tài)盤性能尚有待進一步研究.
本文介紹了多租戶固態(tài)盤面臨的租戶間性能干擾、性能不公平以及總體性能損失3 大服務(wù)質(zhì)量問題.對應(yīng)地,現(xiàn)有工作圍繞性能隔離保障、性能公平保障以及總體性能優(yōu)化3 類目標對多租戶服務(wù)質(zhì)量保障技術(shù)展開研究.
具體而言,面向性能公平保障的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)通過I/O 請求公平調(diào)度策略(包括基于預(yù)算分配和基于隊列仲裁2 類I/O 請求調(diào)度方案)以及空間資源公平分配策略保障共享多租戶間的性能公平.然而基于預(yù)算分配的I/O 請求調(diào)度方案由于僅保障每周期內(nèi)的性能公平,因此其公平性弱于其他方案.此外,通過空間資源公平分配來實現(xiàn)性能公平也存在著局限性,例如.OPS 資源無法優(yōu)化讀密集型租戶的性能,緩存資源用于優(yōu)化讀密集型租戶性能的同時會增大固態(tài)盤的寫入放大,降低其使用壽命及性能等.
面向性能隔離保障的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)通過空間隔離方案(包括硬隔離和軟隔離2 類不同隔離級別)和基于預(yù)算分配的I/O 隔離方案保障共享多租戶間的性能隔離,其中硬隔離方案實現(xiàn)了強隔離效果,而軟隔離方案和I/O 隔離方案分別只實現(xiàn)了GC 隔離和調(diào)度隔離,因此其隔離效果弱于硬隔離方案,但軟隔離方案可以與I/O 隔離方案協(xié)同實現(xiàn)強隔離性效果.
面向性能優(yōu)化的多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)通過感知負載變化,動態(tài)調(diào)整共享多租戶間時間資源(表現(xiàn)為時間片、帶寬、吞吐量等資源)和空間資源(包括緩存、OPS 等資源)的分配,由此最大化資源利用率,最終實現(xiàn)固態(tài)盤的整體性能提升.
最后,各類多租戶固態(tài)盤服務(wù)質(zhì)量保障技術(shù)的實現(xiàn)層次包含主機端和設(shè)備端.由于在設(shè)備端內(nèi)才能感知閃存并行架構(gòu),控制閃存空間分配和I/O 調(diào)度,因此基于空間資源分配(包括隔離分配、公平分配及負載自適應(yīng)的動態(tài)分配)方案的服務(wù)質(zhì)量保障技術(shù)通常需要實現(xiàn)在設(shè)備端;而關(guān)于I/O 請求調(diào)度方案的服務(wù)質(zhì)量保障技術(shù),設(shè)備端實現(xiàn)相比于主機端實現(xiàn)具有設(shè)計空間更大、有效性更高等優(yōu)勢,但會增加固態(tài)盤控制器復(fù)雜度.
現(xiàn)有工作雖然對多租戶服務(wù)質(zhì)量保障技術(shù)進行了不少探索,但該領(lǐng)域仍存在諸多尚未解決的關(guān)鍵挑戰(zhàn),值得進一步研究.特別是,當(dāng)前固態(tài)盤技術(shù)發(fā)展趨勢包括采用更高密度閃存介質(zhì)(如quad-level cell,QLC)、構(gòu)建基于高速持久性內(nèi)存和大容量閃存的混合架構(gòu)以及轉(zhuǎn)向新型分區(qū)命名空間接口(zoned namespace,ZNS),這些新型介質(zhì)、架構(gòu)以及接口會給多租戶服務(wù)質(zhì)量保障帶來新的挑戰(zhàn).
1)現(xiàn)有工作沒有綜合考慮固態(tài)盤時間和空間2個維度上的資源分配,即如何建立時間資源和空間資源分配的統(tǒng)一模型,結(jié)合服務(wù)質(zhì)量要求和I/O 負載特征,為多個租戶分別選擇最佳的時間和空間資源分配,從而在保證服務(wù)質(zhì)量的基礎(chǔ)上最大化資源利用效率和總體性能.例如,在保證性能公平的基礎(chǔ)上,為以讀請求為主的租戶分配更多I/O 時間預(yù)算,為包含大量隨機寫請求的租戶分配更多空間資源(以降低垃圾回收開銷).
2)現(xiàn)有的以總體性能優(yōu)化為目標的閃存空間動態(tài)分配方案都是基于硬隔離策略,存在空間分配粒度和重分配性能開銷過大、單個租戶并行帶寬受限、不兼容固態(tài)盤內(nèi)RAID 保護技術(shù)等問題.如何基于軟隔離策略在多租戶之間實現(xiàn)細粒度和低開銷的動態(tài)空間分配,以最大化存儲空間利用效率和總體性能,有待進一步研究.
3)高密度閃存技術(shù)發(fā)展為固態(tài)盤的多租戶支持和可靠性帶來挑戰(zhàn).固態(tài)盤需要為每個租戶打開至少一個獨立的閃存塊進行數(shù)據(jù)寫入,以保證性能隔離,而且為租戶分配更多開放閃存塊能夠有效提高冷熱數(shù)據(jù)分離和垃圾回收的效率.然而,出于可靠性因素,固態(tài)盤支持同時打開的閃存塊最大數(shù)量受限[63].3D 堆疊和多比特單元等閃存技術(shù)不斷發(fā)展,推動存儲密度提升和成本下降的同時,也導(dǎo)致介質(zhì)可靠性變差,這將進一步減少固態(tài)盤支持,同時打開的閃存塊最大數(shù)量.因此,開放的閃存塊也成為一種稀缺資源,對固態(tài)盤能夠支持的最大租戶數(shù)量以及租戶性能都具有關(guān)鍵影響.如何優(yōu)化固態(tài)盤可靠性機制以提供更多的開放閃存塊資源,以及如何在多租戶之間分配開放閃存塊資源以保證公平性和提高總體性能,都將成為重要挑戰(zhàn).
4)高速持久性內(nèi)存技術(shù)和高密度閃存技術(shù)不斷發(fā)展,使得構(gòu)建混合存儲架構(gòu)的固態(tài)盤成為一種趨勢,例如持久性內(nèi)存作為閃存的緩存,或持久性內(nèi)存和閃存分別存儲不同數(shù)據(jù)集.持久性內(nèi)存具有支持字節(jié)尋址和讀寫速度不對稱等特征,其加入將增加固態(tài)盤存儲資源多樣性和資源分配復(fù)雜性.如何綜合考慮2 類存儲資源的分配,并利用它們的介質(zhì)訪問特征,解決性能干擾、性能不公平以及總體性能損失等服務(wù)質(zhì)量問題,將是一個重要的研究方向.
5)傳統(tǒng)塊接口將存儲設(shè)備抽象為一個可隨機寫入和就地更新的邏輯塊地址空間,這與需要順序?qū)懭牒拖炔梁髮懙拈W存介質(zhì)特性不符,使得固態(tài)盤需要采用復(fù)雜的控制器算法來匹配塊接口抽象,因此面臨性能波動大和成本較高等問題[63].為解決這些問題,ZNS 接口被提出,它將存儲設(shè)備抽象為連續(xù)的、固定大小的、只允許順序?qū)懭氲倪壿嫹謪^(qū).該接口不僅能大幅簡化固態(tài)盤控制器設(shè)計,而且允許主機控制垃圾回收操作和閃存上數(shù)據(jù)布局.然而,ZNS 接口為多租戶固態(tài)盤設(shè)計和服務(wù)質(zhì)量保障帶來新的問題.例如,邏輯分區(qū)到閃存的映射方式?jīng)Q定了分區(qū)的訪問性能和隔離性,面向多租戶的分區(qū)映射算法需要綜合考慮各租戶服務(wù)質(zhì)量要求和閃存并行存儲架構(gòu)等因素;出于可靠性考慮,ZNS 接口固態(tài)盤只能支持有限的開放分區(qū)資源(類似于傳統(tǒng)固態(tài)盤的開放閃存塊資源),因此需要考慮該類資源在多租戶之間分配的公平性和利用效率;ZNS 接口固態(tài)盤的邏輯分區(qū)尺寸通常大且固定,而不同租戶可能需求不同大小的分區(qū),以支持靈活的數(shù)據(jù)布局和降低垃圾回收開銷,如何解決該矛盾將是一個研究點難點.
綜上所述,構(gòu)建多租戶固態(tài)盤已經(jīng)成為提高存儲資源利用率和降低成本的常見手段,但在服務(wù)質(zhì)量保障方面仍存在諸多重要挑戰(zhàn),值得進一步深入探索.
作者貢獻聲明:文宇鴻完成了相關(guān)文獻的梳理、論文撰寫等工作;周游完成了方案討論、技術(shù)支持、論文修改等工作;吳秋霖參與了論文相關(guān)的技術(shù)討論等工作;吳非完成了論文框架、整體內(nèi)容規(guī)劃等工作;謝長生參與了論文指導(dǎo)等工作.