為什麼 IOPS 很重要?
我了解 IOPS 和吞吐量是什麼。吞吐量以 MB/s 衡量數據流,而 IOPS 表示每秒發生了多少 I/O 操作。
我不明白為什麼許多儲存服務只顯示它們提供的 IOPS。我真的看不到任何我寧願知道 IOPS 而不是吞吐量的場景。
為什麼 IOPS 很重要?為什麼 AWS 主要以 IOPS 顯示其儲存規定?IOPS 在哪些方面比吞吐量 (MB/s) 更相關?
編輯:
有些人正在研究這個問題,就好像我在問什麼是隨機訪問以及它如何影響性能或 HDD 和 SSD 的工作原理……雖然我認為這些資訊對儲存行為的新手很有用,但很多關注點正在被應用對此,這不是問題的目標,問題是關於**“當我看到 IOPS 數字時,我會得到哪些新資訊,而我不會看到吞吐量 (MB/s) 數字?”**
吞吐量
當您執行複製文件等操作時,吞吐量很有用。當你在做幾乎任何其他事情時,它會限制你在磁碟上的隨機讀寫。
IOPS
IOPS 通常指定每個數據包的大小。例如,AWS gp2 可以使用 16 KiB的負載大小執行 10,000 IOPS。乘以 160MiB/秒。但是,您可能不太可能一直使用完整的有效負載大小,因此實際吞吐量可能會更低。NB KiB 是 1024 字節,KB 是 1000 字節。
因為 IOPS 指定的數據包大小也可以為您提供總吞吐量。而高吞吐量並不意味著您具有高 IOPS。
場景
考慮以下場景:
- 啟動你的電腦。考慮一下電腦中 SSD 和旋轉磁碟之間的區別,這是許多人親身體驗過的東西。使用旋轉磁碟,啟動時間可以是一分鐘,而使用 SSD 可以減少到 10 - 15 秒。這是因為更高的 IOPS 會導致請求資訊時的延遲更低。旋轉磁碟的吞吐量非常好,為 150MB/秒,雖然 SSD 可能更高,但這並不是它更快的原因 - 這是返回資訊的更低延遲。
- 執行作業系統更新。它遍及整個磁碟,添加和修補文件。如果您的 IOPS 較低,那麼無論吞吐量如何,它都會很慢。
- 執行數據庫,例如從大型數據庫中選擇少量數據。它將從索引中讀取,從多個文件中讀取,然後返回結果。它再次遍歷磁碟以收集資訊。
- 在您的 PC 上玩遊戲。它可能會從整個磁碟載入大量紋理。在這種情況下,可能需要 IOPS 和吞吐量。
LTO 磁帶
考慮一下磁帶備份系統。LTO6 可以達到 400MB/秒,但是(我在這裡猜)可能甚至無法進行一次隨機 IOP,它可能低至每個 IOP 秒數。另一方面,如果 IOPS 被定義為讀取或寫入數據包到磁帶,它可能會執行大量順序 IOPS。
如果您嘗試從磁帶上啟動作業系統,則需要很長時間,如果它確實有效的話。這就是為什麼 IOPS 通常比吞吐量更有幫助。
要了解儲存設備,您可能想知道它是隨機 IOPS 還是順序 IOPS,以及 IO 大小。從中您可以得出吞吐量。
AWS
請注意,AWS 確實在此頁面上發布了所有儲存類型的 IOPS 和吞吐量數據。通用 SSD (gp2) 可以執行 10,000 16KiB IOPS,最大速度為 160MB/秒。預置 IOPS (io1) 為 20,000 16KiB IOPS,最大速度為 320MB/秒。
請注意,使用 gp2 卷,每 GB 預置可獲得 3 IOPS,因此要獲得 10,000 IOPS,您需要 3.33TB 卷。我不記得 io1 卷是否有類似的限制(我已經有一段時間沒有參加測試這類事情的副考試了),但我懷疑他們有,如果是這樣,它可能是每 GB 60IOPS。
結論
高順序吞吐量很有用,在某些情況下是性能的限制因素,但在大多數情況下,高 IOPS 可能更重要。不管 IOPS 是多少,您當然仍然需要合理的吞吐量。