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