NVMe協會在FMS2018上透過一系列的演講對NVMe、NVMe-oF、NVMe-MI、JBOF以及NVMe基準測試等方面做了介紹。並且釋出了NVMe後續的演進方案的Roadmap。
從NVMe Roadmap來開,NVMe 1.4將會是NVMe協會接下來的主要工作。此次NVMe1.4的更新主要包含以下幾大方面:
- IO Determinism;
- Persistent memory Region;
- Multipathing;
- IO Determinism是為了最佳化latency提供更好的QoS而生。
- Persistent memory Region的特點是掉電不丟資料,為系統提供一種高效的Non-Volatile儲存空間。從目前市場應用來看最可能的應用是儲存一些系統的log檔案,以及一些metadata等。
- Multipathing提供了更加高效便捷的data share解決方案。其中IO Determinism應該是此次NVMe 1.4更新的重點內容。本文也主要針對IO Determinism做一些分析。
What is NVMe IO Determinism?
- 提供相對獨立的訪問空間;
- 提高IOPS,降低延時;
- 提供更加優秀的QoS;
為了做到以上幾點,IO Determinism包含以下幾部分內容,一個是NVM Sets,一個是PLM(Predictable Latency Mode),還有RRL(Read Recovery Level)。
NVM Sets
NVMe 1.4中透過NVM Sets實現了對SSD物理資源的精細劃分,每個Set可以獨立佔用一部分SSD的資源,每部分資源可以包含多個Flash channel以及多個Flash die,可以獨立的進行read,write,erase等操作,如下圖所示,在沒有NVM Set之前多個application share所有的SSD資源,會出現一個application在執行的時候會block另一個application的操作,降低系統的QoS,在有NVM Sets之後每個一個application可以使用一個獨立的NVM Set,這樣application之間不會存在相互block的情況,提高了系統的QoS。
PLM
PLM是IO determinism中另外一個組成部分,主要用於最佳化系統的讀寫延時,提高系統的QoS。在PLM有效之後系統劃分為DTWIN(Deterministic Window)以及NDWIN(Non-Deterministic Window)兩種時間視窗,在DTWIN時間視窗內,SSD系統提供為讀寫指令提供deterministic latency,以提高系統的QoS,在NDWIN時間視窗內,SSD系統不需要提供deterministic latency,以完成SSD系統內部的GC等操作。
有了這兩種時間視窗系統可以靈活排程對SSD的讀寫,以保證儘量將read/write執行放在DTWIN的時間段內執行,以減少latency,提高系統的QoS。
在DTWIN內有兩個值需要註意,一個是typical value,這個值表示SSD系統可以在DTWIN時間視窗內可以執行的command數量(rand 4K read or Optimal Write Unit Size write)。另一個是reliable estimate value,這個值表示在DTWIN時間視窗內剩餘的可執行的command數量值。以上兩個值Host可以透過Get log page得到。
下圖為大家展示了一個read DTWIN的typical value與estimate value之間的關係圖。
隨著reliable estimate value的減少,當小於某一threshold之後,SSD會自動從DTWIN跳到NDWIN。當然Host也可以透過set Features指令直接配置SSD處於DTWIN還是NDWIN時間視窗內。
在DTWIN以及NDWIN內有幾個時間引數也需要註意:
- NDWIN Time Minimum Low:SSD controller在收到請求進入DTWIN的set Feature指令之後需要在這個時間之內完成從NDWIN到DTWIN的轉換。
- NDWIN Time Minimum High:表示Host在上一個DTWIN Time Maximum之後需要在NDWIN視窗內需要花費的時間。
- DTWIN Time Maximum:表示SSD系統可以保持在Deterministic Window的最大時間。
DTWIN Time Maximum與NDWIN Time Minimum High提供了一個系統在DTWIN與NDWIN的比例,例如Host在Deterministic Window保持了DTWIN Time Maximum的一半時間,那麼host只需要在接下來的Non-Deterministic Window保持NDWIN Time Minimum High的一半時間。
RRL
由於在read過程中會出現資料錯誤,而資料出錯的比例不同造成data recovery的時間也會不同,所以為了實現PLM,NVMe協議規定在支援PLM的時候需要同時支援Read Recovery Level Config。不同的Read Recovery Level對應不同的read latency。Recovery Level 0代表需要SSD盡最大努力去恢復資料,同時read latency也會更高,Recovery Level 15代表需要SSD儘快完成資料恢復工作,盡可能降低read latency,但是同時也有可能帶來資料無法正確恢復。Host根據不同的需求可以配置不同的recovery level。
隨著SSD的不斷發展,SSD系統的峰值效能已經不再是客戶追求的主要標的。客戶需要效能更加穩定,延時更低的解決方案,NVMe IO determinism的出現將會在這兩方面發揮重要作用。相信隨著後續NVMe 1.4的正式釋出會有越來越多的廠商關註NVMe IO determinism技術。
推薦閱讀: