衛星天線

白皮書

NVMe 固態硬碟寫入性能

概述

BittWare的數據 記錄器參考設計 可捕獲高達200 Gb/s的高速感測器數據到NVMe固態硬碟(SSD)。這為使用者提供了一個開放式架構來構建他們需要的任何數據記錄器系統,但我們聽到的一個常見問題是 “給定的持續數據速率需要多少個驅動器?

我們想解決這個問題,因為人們通常認為計算很簡單:查看 SSD 供應商的驅動器寫入速度規格,並劃分應用程式所需的最大持續頻寬,添加一點餘量,即可獲得所需的 RAID0(條帶化)驅動器數量。挑戰在於,SSD 規格表上的寫入數位對於我們高性能客戶的長期創紀錄時間來說永遠無法持續。

讓我們看一些使用常見 SSD 驅動器類型的實際性能數據,並深入瞭解持續寫入不像讀取速度那麼簡單的原因。然後,我們將使用我們的數據記錄儀參考設計對給定速度的驅動器陣列提出一些建議。好消息是,我們的設計可以使用我們的 TeraBox 伺服器和 250-SoC FPGA 卡輕鬆擴展。

本白皮書的 PDF 版本

帶 U2 模組的伺服器

固態硬碟信譽

具有 NVMe 介面的固態硬碟以速度非常快而聞名。事實上,對於特定的工作負載,它們比傳統的硬碟驅動器 (HDD) 更快。具體來說,SSD 針對比寫入和隨機訪問更多的讀取進行了優化。當然,對於數據記錄儀,重點恰恰相反: 順序寫入

另一個挑戰是 NVMe SSD 通常具有最大「流寫入」帶寬的規格,在進行持續寫入時,該頻寬僅限於驅動器容量的一小部分。長時間持續寫入的大部分操作將明顯低於此數字,並且隨著驅動器變大,情況會變得更糟。為了瞭解原因,讓我們簡要瞭解一下位是如何存儲在 SSD 上的。

較大的 SSD 往往會降低持續寫入性能

增加 SSD 密度意味著轉向更新的技術,這些技術恰好也會使持續寫入速度變慢。這些SSD技術代被稱為SLC,MLC,TLC,最後是QLC,按照它們在市場上出現的順序,這也是從最低密度到最高密度的順序。SSD設計人員非常清楚,隨著時間的推移,他們正在使流寫入變慢。因此,他們通常會保留一部分即使是最新、最密集的 SSD 以在舊的 SLC 模式下運行。這允許以舊的、更快的速度進行寫入流式傳輸,直到該部分驅動器被填滿。之後,寫入流會減慢到驅動器其餘部分支援的速度。

SSD 驅動器性能下降閾值

前三個閾值將在我們的基準部分中進一步研究。

  • 只有在 SLC 快取填滿之前,才能提供最佳性能。有關一系列驅動器何時發生這種情況的詳細資訊,請參閱基準測試部分。
  • 然後,我們看到性能下降,直到驅動器達到 容量閾值 ,因為它開始減小SLC緩存的大小。
  • 縮小 SLC 快取需要一個 背景副本 ,這會進一步減慢速度。

當記錄器開始用新數據 覆蓋舊數據 時,還會發生另一種減少。我們將在下一節中介紹這一點。

覆蓋數據性能下降

為什麼覆蓋數據會降低性能

  • SSD 必須先將頁面歸零,然後才能寫入頁面。
  • 因此,如果您只更改一個字節,SSD 控制器會查找過去已歸零的頁面,然後將整個頁面複製到該頁面上,並更改該一個字節。
  • SSD 不能將單個頁面歸零。該操作使用頁面塊。
    • 每個SSD都是不同的,但例如,三星840 EVO有2048 Kb頁面。一個塊中有 256 個這樣的頁面。
  • 將頁面歸零是一種相對較慢的操作,當 NVMe 修剪命令告訴 SSD 某些塊不再使用時,它會在後台發生。
  • 在磁碟記錄器中,數據通常被捕獲到環形數據結構中,該結構在磁碟已滿時環繞。
    • 在這種情況下,沒有機會提前修剪。此外,即使應用程式確實發出修剪,SSD 記錄器也可能太忙而無法找到空閒時間來執行歸零。
    • 如果每隔幾頁寫入后就暫停一次,而另一頁塊清零,則性能將顯著下降。

如何在FPGA中避免這種情況

  • 當磁碟已滿而不是環繞時,應用程式可能會停止。
  • 或者,您可以發出修剪命令並提供足夠的 NVMe 驅動器,使每個驅動器都有一點性能以騰出零塊。

固態硬碟基準測試

驅動基準測試方法

  • 我們使用SPDK對NVMe驅動器性能進行基準測試
  • 消除任何文件系統開銷
  • 通過將緩衝區與緩存行對齊來最大化 DMA 效率
  • 使用專用線程盡可能快地完全填充空驅動器,並確保NVME DMA控制器始終具有要處理的寫入命令

測試類別

我們的目標不是對特定的驅動器進行基準測試,而是從消費者和企業市場中選擇範例:

  • 消費市場:TLC與SLC
  • 消費市場:無SLC的MLC
  • 企業市場:沒有SLC的TLC
  • 企業市場:3D XPoint

消費市場:TLC與SLC

測試的驅動器示例: 三星 970 Plus,1 TB

這是具有 SLC 快取的典型 TLC 消費者級驅動器。

  • 數據表稱流寫入速度為“最大 3.3 GB/秒”
  • 我們測量了 2.7-2.8 GB/秒,直到 SLC 緩存填滿
  • 然後它下降到大約 1.6 GB/秒
  • 當我們開始覆蓋過時的數據時,驅動器設法以相同的速度寫入

實現 100G 錄像機性能:

RAID 0 配置至少需要 8 個驅動器

970 Plus 1TB 空載

重寫全驅動器

970 Plus 1TB-–-重寫全硬碟

消費市場:無SLC的MLC

驅動器測試示例: 三星 970 Pro,512 GB

這是一個面向沒有 SLC 快取的消費者市場的 MLC 驅動器。

  • 數據表稱流寫入速度為“最大 2.3 GB/秒”
  • 此驅動器中沒有 SLC 快取。我們測量了大約 2.2 GB/秒,沒有下降
  • 當我們開始覆蓋過時的數據時,驅動器設法以相同的速度寫入

實現 100G 錄像機性能:

RAID 0 配置至少需要 6 個驅動器

970 專業版 512GB

企業市場:沒有SLC的TLC

測試的驅動器示例: 三星 1725b,1.6 掘進侖

這是一個面向沒有 SLC 快取的消費者市場的 MLC 驅動器。

  • 數據表顯示流寫入速度為“2.0 GB/秒”
  • 大多數情況下,此驅動器提供 1.7 GB/秒;但是,它偶爾會下降到 1.3 GB/秒
  • 這是一個針對企業市場的 TLC 驅動器,顯然沒有 SLC 緩存;它被戴爾作為“NVMe混合用途快速快閃記憶體”出售;“企業”標籤意味著更長的使用壽命規格。

實現 100G 錄像機性能:

RAID 0 配置至少需要 10 個驅動器

三星 1752b 1.6TB

企業市場:3D XPoint

測試的驅動器示例: 英特爾傲騰,480 GB

傲騰驅動器使用 3D XPoint 記憶體技術,與傳統 SSD 驅動器相比,耐用性明顯更好。但是,它們無法提供與傳統NVMe驅動技術相同的高容量。

  • 數據表指定 2.2 GB/s 的順序寫入頻寬
  • 始終如一地交付 2.2 GB/s 或更高

實現 100G 錄像機性能:

RAID 0 配置至少需要 6 個驅動器

英特爾傲騰 480 GB

企業市場:第 4 代 3D TLC

測試的驅動器示例: 英特爾固態盤 D7-P5510 3.84TB

使用PCIe Gen4的驅動器顯著提高了性能。為了利用優化的數據移動引擎,我們使用了 256KB 或更大的大緩衝區大小。

  • 數據表指定 3.3 GB/s 順序寫入頻寬
  • 始終如一地交付 3.2 GB/s 或更高

實現 100G 錄像機性能:

RAID 0 配置至少需要 5 個驅動器

NVMe 性能圖表

基準摘要

使用多單元體系結構來獲得更大的驅動器大小是以長時間持續寫入為代價的。最大的影響來自消費級SSD。與聲稱的最大數位相匹配的最佳實際流式寫入速度來自英特爾傲騰驅動器;但是,這些驅動器大小也是最有限的。

對於那些為持續寫入指定系統的用戶,關鍵是在目標驅動器上獲取或執行實際基準測試。我們上面關於 100 Gb/s 持續寫入的建議基於此類實際測試數據。

即便如此,在向 SSD 撰寫書面檔時仍應考慮進一步的注意事項,我們將在下面介紹這些注意事項。

驅動器壽命

寫入性能的最後一個考慮因素是驅動器的存留期。寫入 SSD 會消耗它,特別是數據記錄器應用程式可能會給驅動器的使用壽命帶來壓力。

  • SSD 生命週期指定為保修期內的每日驅動器寫入數 (DWPD)。
    • SSD 的使用壽命差異很大,但為了建立預期,請注意,額定值為 1 DWPD 的驅動器可以被覆蓋 1,800 次。

“企業”SSD 包括額外的快閃記憶體單元(過度配置),以允許更長的使用壽命(更大的 DWPD)。

  • 100 GbE 磁碟燒錄機可以生成高達12.5 GB/秒的數據包數據。
    • 這不包括元數據(PcapNg 數據包標頭)
  • 如果您的數據包記錄器使用12個昂貴的30 TB企業級SSD,這意味著您的陣列可以容納大約8小時的100 GbE流量。如果 DWPD 為 1,陣列將在 1.5 年內磨損。

但是,這個例子是說明性的,不是現實的。

  • 任何 100 GbE 鏈路都不會 24/7 全天候飽和運行。
  • 商業網路安全裝置希望保持 7-10 天的流量,而不僅僅是 8 小時。

結論

雖然SSD比傳統硬碟驅動器帶來了令人印象深刻的性能,但這些改進是特定於應用程式的,在某些情況下,性能會降低。

對於具有持續寫入的應用程式,例如我們的數據採集和記錄器專案所針對的應用程式,除了最大持續寫入規範之外,還有許多因素需要考慮。

與BittWare聯繫,瞭解有關我們的存儲加速和感測器處理產品和解決方案的更多資訊。