有用的儲存測試會將操作大小、存取模式、並行性與耐久性需求,與應用程式相互對應。記錄測試條件與延遲分布,然後用應用程式量測確認結果。
從儲存問題開始,而不是從分數開始
在執行基準測試之前,先決定你需要知道什麼。你可能正在調查緩慢的資料庫提交、檔案散布輸送量,或會產生許多小檔案的建置流程。這些工作負載對磁碟的要求並不相同。大型循序複製可能看起來很亮眼,卻幾乎無法說明服務進行小型隨機讀取時所經歷的延遲。
NVMe 是為非揮發性媒體與高效率平行 I/O 所設計,但其協定名稱並不能描述代管儲存路徑的每一個部分。虛擬化、檔案系統、資源競爭與應用程式仍然重要。請寫下測試假設,例如儲存延遲是否正在拖慢某項特定操作,而不是試圖產生一個能證明整台伺服器很快的數字。
以可重現的方式描述工作負載
記錄操作大小、循序或隨機模式、讀寫比例、作業數與佇列深度。納入資料集大小與測試持續時間。fio 文件說明了這些工作負載控制項與可用的 I/O 引擎。並非每個引擎或設定都能達到預期的深度,因此除了你要求的設定,也要閱讀實際回報的行為。
在結果旁保留一份測試描述。記下作業系統、檔案系統、掛載選項、服務活動與可用容量。如果你要比較不同設定,請一次只改變一項相關條件。使用不同存取模式或並行性的測試,不能公平地呈現得好像只有儲存媒體改變。
| 應用程式模式 | 要描述的測試面向 | 要檢視的結果 |
|---|---|---|
| 大型檔案傳遞 | 循序讀取與並行用戶端 | 持續輸送量與 CPU 使用量 |
| 紀錄查詢 | 小型隨機讀取與具代表性的並行性 | 延遲分布與完成的作業數 |
| 耐久交易 | 寫入與同步需求 | 與提交相關的延遲,而不只是緩衝寫入速度 |
| 建置或解壓縮 | 混合小型檔案操作 | 端到端作業時間與 I/O 等待 |
控制快取,但不要假裝它不重要
能放入記憶體的資料集,在第一輪之後可能主要是在衡量快取行為。如果應用程式通常也受益於相同的快取,這可能有用,但不應標示為原始裝置效能。請刻意選擇測試要檢視的是暖機後的應用程式路徑、較冷的資料集,或旨在降低作業系統緩衝效果的 I/O 模式。
直接 I/O 支援與對齊取決於平台與引擎。它也不會自動表達應用程式的耐久性需求,或消除堆疊中的每一個快取。請清楚說明所選模式,並避免將緩衝測試與非緩衝測試當成代表相同工作來比較。在有助於解讀時,將暖機與量測區間分開。
除了輸送量,也要看延遲尾端
平均延遲可能掩蓋影響實際請求的緩慢操作。檢視回報的百分位數,以及其背後的樣本數。高百分位數描述的是在該次測試中,所述比例的觀察操作低於此界線;它不是永久的服務保證。過短或不具代表性的執行,對繁忙的生產時段只能提供有限證據。
較高的佇列深度可以提高完成的輸送量,同時增加等待時間。這種取捨可能適合批次處理,卻傷害互動式服務。請在類似應用程式的並行性下比較結果,並同時監控 CPU 與 I/O 壓力。在測試對共用環境中的其他工作負載造成不必要干擾之前停止。
確保測試獲得授權且不具破壞性
使用專用測試目錄或準備好的可丟棄磁碟區,並確保有足夠可用空間與明確的清理計畫。切勿將寫入基準測試指向未經驗證的原始裝置或生產資料集。開始前檢查工具的目標與寫入行為,並先進行有限度的執行。合成 I/O 可能消耗容量並干擾服務,即使它沒有覆寫有用的檔案。
若要進行類似生產環境的評估,請約定維護時段並保留應用程式監控。盡可能使用虛構資料。不要從速度測試推斷儲存可靠性:完整性檢查、備份與還原是各自獨立的工作。完成基準測試的裝置仍需要一套因應刪除、軟體錯誤或機器遺失的復原策略。
以應用程式證據完成驗證循環
假設某個報表服務大部分時間都在等待隨機讀取。團隊測試具代表性的讀取模式,然後對可比資料重複執行實際報表。如果報表有所改善,而其他工作維持穩定,結果就支持儲存假設。如果沒有改善,應調查查詢設計、記憶體或其他相依項目,而不是重複更廣泛的合成測試。
Pulse NVMe 與精選的專用設定在 SwissOctet 目錄中列出 NVMe 儲存。它們的標籤是規格,不是已發布的應用程式基準測試。請使用受控方法評估實際交付的環境,並將條件與發現一併保留。當儲存量測與使用者可見的結果回答同一個問題時,決策會更有依據。
您的實用檢查清單。
- 先定義應用程式問題。
- 記錄模式、區塊大小、並行性與持續時間。
- 說明快取與 I/O 模式假設。
- 除了輸送量,也要檢視延遲百分位數。
- 使用已驗證的可丟棄目標與有限度的初始負載。
- 用應用程式測試確認發現。
重要細節。
循序複製足以比較資料庫儲存嗎?+
通常不足。資料庫存取可能涉及小型隨機讀取、寫入與同步。請模擬相關模式並驗證實際應用程式。
直接 I/O 能證明寫入具耐久性嗎?+
不能。緩衝與耐久性是各自獨立的考量。請配合應用程式所需的同步行為。
我可以發布一次測試作為保證的方案速度嗎?+
不能。請發布其條件與範圍。單次執行的量測結果不是服務等級或未來效能的保證。
前往來源。
這些參考資料支持本指南中的技術概念。在變更生產系統之前,請遵循最新文件。
- fio:彈性 I/O 測試工具文件 fio.readthedocs.io
- NVM Express:規格概觀與常見問題 nvmexpress.org
- Linux 核心:壓力停滯資訊 docs.kernel.org
由 SwissOctet 提供的編輯指引。範例僅供說明。服務規格、可用選項與合約條件必須另行驗證。