Nvme
是什麼讓 NVMe SSD 的 Fio 基準測試中的完成延遲各不相同?
我正在嘗試使用 NVMe SSD 計算 fio 基準測試的完成延遲。
我製作了以下 fio 腳本來測試 fio 中的基準。
我使用了以下選項。
rw=read, ioengine=sync, direct=1
所以,我認為沒有太多事情可以使完成時間不同。
然而,結果並不是我想的那樣。
結果是 1th : 11us 到 99.99th : 111 us。
同步讀取不會產生未完成的 IO,因此所有 I/O 都按順序處理,
而直接選項可以繞過作業系統中的緩衝區。
我認為大多數延遲是相同的。
對這個結果有什麼想法嗎?
您在這裡談論的是微秒和 11 微秒與 111 微秒。擾亂如此敏感的閱讀並不需要太多:
- fio 程序關閉 CPU,因為您的伺服器決定是時候執行定期 cron 作業並且無法像其他 I/O 那樣快速處理某些 I/O
- 一些 I/O 位於某種 SSD 記憶體中,但後來 I/O 實際上必須從記憶體外部獲取
- 某些 I/O 讀取碰巧以不同的順序寫入,然後再讀回(是的,按寫入順序讀回對 SSD 來說更好)
- 其他東西決定 I/O 到同一設備
等等
您沒有包括完整的工作(我可以看到您設置
iodepth=16
了這讓我想知道您在工作中設置了哪些其他內容),因此您對任何答案的要求都很高。但是我要指出,您 95% 的讀數都在 3微秒內,因此您不會在不到 100 萬個 I/O 中看到很多異常值。您期望從非實時系統中獲得多少確定性?