彈性資料放置 (FDP) 是 Google 和 Meta 提出的 NVMe™ 規格1的一項功能。此功能的目的是在多個應用程式在同一個 NVMe SSD 上寫入和修改資料時,減少寫入放大 (WA)。WA 降低對這些公司的好處包括可用容量增加(由於需要的過度配置較少),以及裝置壽命可能更長(由於磨損減少)。
我們建議進行一項實驗,以確定 FDP 的幫助程度。在此測試中,我們使用了 7.68TB 美光® 7450 PRO SSD,分成四個相等 (1.92TB) 的命名空間,並執行 Aerospike NoSQL 資料庫的平行執行個體。Aerospike 已針對 SSD 使用量進行高度最佳化,並嘗試僅循序寫入裝置。這為單一執行個體提供了極低的寫入放大係數 (WAF),但是當在相同的實體裝置上執行多個執行個體時,這些交易會一起混亂,導致工作負載隨機。
每個 Aerospike 執行個體都設定為以不同的區塊大小(32KB、64KB、128KB、256KB)寫入,以模擬虛擬環境中共用空間的不同客戶。我們亦將這些工作負載分別執行到 4x 1.92TB 的美光 7450 PRO SSD,我們認為這是 FDP 的最佳實作,所有應用程式資料都會接收專用 NAND 空間,因此資料不會在裝置上交錯,如圖 1 所示。
由於 Aerospike 的最佳化,我們預期在自己的專用儲存裝置上執行單一應用程式執行個體時,WA 係數會接近 1。執行 YCSB 工作負載 A(50% 讀取/50% 更新)直到硬碟填滿多次,可以確認這一點。在理想情況下,大型裝置上的四個命名空間會與四個單一裝置相同。此情境的版面配置如圖 2 所示。
如果沒有 FDP 並在 7.68TB 裝置上執行多個工作負載,硬碟不會透過命名空間分隔 NAND,也無法確定在執行實例的情況下應將哪些 Aerospike 資料分組在一起。交錯意味著從硬碟的角度來看,即使每個工作負載都是連續的,工作負載還是會變得更加隨機,如圖 1 所示。 隨著隨機性增加,我們看到,對於共同位於非 FDP 裝置上的四個實例,WA 相應增加至 1.84,而對於位於其專用裝置上的單一實例,WA 從 1.08 開始增加,如圖 3 所示。
雖然這是一項基本實驗,但它顯示了在未來裝置中實施 FDP 的潛在益處。我們亦可以看到,在爭奪相同的硬碟資源時,一些設計為盡可能循序寫入的應用程式會如何從 FDP 中受益。
1 有關 Chris Sabol (Google) 和 Ross Stenfort (Meta) 向 NVMExpress 簡報中提供的其他詳細資訊,請參閱 https://nvmexpress.org/wp-content/uploads/Hyperscale-Innovation-Flexible-Data-Placement-Mode-FDP.pdf。