한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › L11 磁碟

IOPS 上限與佇列飽和 IOPS limit / queue saturation

原因 ID dk-iops · 主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發), 基礎設施團隊(DB 基礎設施)

在含圖解與實驗的完整版中開啟卡片 →

請求數超過磁碟每秒能處理的數量時,佇列會變長,延遲急遽增加。

為什麼 讀寫請求接近磁碟的處理能力 → 於是 佇列變長(通常在使用率 90% 以上時急遽增加) → 畫面上 存檔、載入變慢;若是同步呼叫則會定格

症狀
輸入延遲, 定格
因素
延遲, 停滯
誰會遇到
整個伺服器
何時
人潮湧入時, 晚間尖峰時段
負責單位
主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發), 基礎設施團隊(DB 基礎設施)
遊戲開發團隊要做的事
合併請求、經常讀取的資料放進快取、改為非同步,讓遊戲執行緒不必等待磁碟。
基礎設施團隊要做的事
伺服器設備/OS:換用更快的磁碟、確認各執行個體類型的磁碟頻寬與 IOPS 上限、設定磁碟使用率與佇列警示、大檔案複製排在離峰時段。DB 設備:DB 磁碟也設定 IOPS 與處理量使用率警示,確認 DB 執行個體規格的磁碟上限。
數值參考
HDD 約 150 IOPS、SATA SSD 數萬、NVMe 數十萬 IOPS。雲端預設磁碟(AWS gp3)為 3,000 IOPS、每秒 125MiB;每秒傳輸量上限與 IOPS 是分開的,大檔案複製把它占滿時,連小筆寫入也會被卡住。
圖表上
碰到上限後持平 · IOPS、磁碟佇列長度
查看位置
看 iostat -x 1 的 r/s、w/s、rkB/s、wkB/s、aqu-sz、r_await、w_await。雲端則看 EBS 的 VolumeReadOps、VolumeWriteOps、VolumeQueueLength,是否超過上限的 VolumeIOPSExceededCheck、VolumeThroughputExceededCheck,以及執行個體端的 InstanceEBSIOPSExceededCheck、InstanceEBSThroughputExceededCheck
符合的跡象
每秒請求數或傳輸量在上限值處持平,aqu-sz 與 await 一起暴衝。雲端上超限檢查指標為 1
不符合的跡象
%util 即使是 100%,await 低時可能仍有餘裕。在平行處理請求的 SSD、RAID 上,%util 不代表已達上限。未達上限、只有 await 偏高時,是磁碟本身的延遲(dk-hdd)或 fsync(dk-fsync)
確認方式
用基礎設施工具確認(不需要遊戲程式碼)
深入了解
在雲端上,除了磁碟本身的上限,每種伺服器規格(執行個體類型)也各有磁碟頻寬與 IOPS 上限。即使掛上昂貴的磁碟,伺服器規格太小時,仍會卡在執行個體的上限。

出處

  1. Exos X18 Data Sheet Seagate
    7,200rpm 伺服器用 HDD 的 4K 隨機讀取為 170 IOPS(QD16)
  2. D3-S4520 SSD Solidigm
    伺服器用 SATA SSD 的 4KB 隨機讀取/寫入最高 92K/48K IOPS
  3. Solidigm™ D7-P5520 and D7-P5620 Product Brief Solidigm
    伺服器用 NVMe SSD 的隨機讀取/寫入為 1,000K/200K IOPS
  4. Amazon EBS General Purpose SSD volumes AWS
    gp3 的基本效能為 3,000 IOPS 與 125MiB/s,兩者是可以分別調高的獨立上限
  5. Amazon EBS-optimized instance types AWS
    每種執行個體類型各自有 EBS 頻寬、處理量、IOPS 的基準與最大上限
  6. iostat(1) — Linux manual page sysstat
    -x:r/s、w/s、rkB/s、wkB/s、aqu-sz(舊名 avgqu-sz)、r_await、w_await、%util。在平行處理請求的 RAID 與新型 SSD 上,%util 無法反映效能上限
  7. Amazon CloudWatch metrics for Amazon EBS AWS
    VolumeIOPSExceededCheck、VolumeThroughputExceededCheck:磁碟區試圖超過 IOPS 或處理量上限時為 1(Nitro 執行個體);VolumeQueueLength
  8. CloudWatch metrics that are available for your instances AWS
    InstanceEBSIOPSExceededCheck、InstanceEBSThroughputExceededCheck:執行個體試圖超過 EBS IOPS 或處理量上限時為 1

相關原因

同一層:L11 磁碟

同一症狀(輸入延遲)在其他層的原因

查看含圖解與實驗的完整版卡片