為什麼我的 SC1 或 ST1 EBS 磁碟區無法達到額定的輸送量效能?

2 分的閱讀內容
0

我的 ST1 或 SC1 Amazon Elastic Block Store (Amazon EBS) 磁碟區未達到 AWS 文件中列出的輸送量效能。

簡短描述

使用 HDD Amazon EBS 磁碟區 (例如 SC1 和 ST1) 時,請檢閱下列各點:

  • 無論執行個體上工作負載使用的實際 I/O 大小為何,這些磁碟區一律使用 1024 KiB I/O 字符。如果應用程式工作負載的實際 I/O 大小設定為 16 KiB,磁碟區仍會使用 I/O 字符的整個 1024 KiB 大小。這樣會浪費字符的大部分空間。為了最大限度地提高效率,請填滿整個 1024 KiB。
  • 當連續工作負載的 I/O 大小大於 32 KiB 時,Amazon EBS 一律會將 I/O 合併為 1024 KiB 的單一 I/O 操作。這種合併填充了整個字符大小。
  • 當 I/O 大小小於 32 KiB 時,或者如果工作負載是隨機的,Amazon EBS 不會將 I/O 合併到 1024 KiB。但是,Amazon EBS 仍會使用整個 1024 KiB 字符大小。這會使字符內的大部分空間都為空。由於 I/O 並未合併,因此執行個體會使用更多 IOPS,將相同數量的資料傳送至磁碟區。即使輸送量低於其基準值,也會減少爆量額度。

解決方法

若要讓 ST1 和 SC1 EBS 磁碟區達到最大額定輸送量,請遵循下列步驟:

  • 將您的應用程式設定為使用大於 32 KiB 的 I/O 大小。
  • 確認您的應用程式使用循序工作負載。

範例

當您計算輸送量時,請使用下列公式:

輸送量 = I/Osize * IOPS

如果 I/O 大小小於 32 KiB,則磁碟區會達到 IOPS 限制,並對輸送量節流。發生這種情況時,磁碟區永遠無法達到其額定的輸送量效能。

例如,假設您將 I/O 大小設定為 16 KiB 並傳送 3 MiB/秒的資料:

3MiB/秒/16KiB = 192 IOPS

當您將 I/O 大小設定為 32 KiB,並使用循序/連續工作負載,Amazon EBS 將合併到最高 1024 KiB。在這種情況下,Amazon 僅傳送 3 IOPS,如下列計算所示:

3 MiB/秒/1024 KiB = 3 IOPS

但是,假設您使用 ST1 磁碟區的 0.5 TiB (500 GiB)。在此情況下,磁碟區最理想地提供 20 MiB/秒的基準輸送量效能,而且最高可達 125 MiB/秒。

如果磁碟區以 125 MiB/秒爆量,而應用程式的 I/O 大小為 1024 KiB,則理論上限 IOPS 等於 125 IOPS。

輸送量 / IO 大小 = 125 MiB/秒 / 1024 KiB = 125 IOPS。

不過,如果應用程式使用 16 KiB 的 I/O 大小,則傳送 3 MiB 的資料會使用 192 IOPS。因為磁碟區只能達到理論上限 125 IOPS,應用程式無法推送 192 IOPS。在這種情況下,磁碟區將 IOPS 節流為 125:

實際輸送量 = 16 KiB * 125 = 1.95 MiB/秒

如上述計算顯示,IOPS 會節流為 125 IOPS,且 Amazon EBS 將輸送量節流為 1.95 MiB/秒。即使應用程式使用 1024 KiB I/O 大小,磁碟區的爆量理論輸送量為 125 IOPS,也會發生此節流。

相關資訊

I/O 特性和監控

Amazon EBS 磁碟區類型

AWS 官方
AWS 官方已更新 8 個月前