遊戲 Lag 白皮書 › L6 伺服器網路卡
NIC 頻寬飽和 NIC bandwidth saturation
原因 ID nic-saturate · 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(伺服器基礎設施)
在含圖解與實驗的完整版中開啟卡片 →
把 1Gbps、10Gbps 網路卡用到極限時,傳送佇列會變長,最後封包被丟棄。
為什麼 廣播增加,使傳輸量達到網路卡的極限 → 於是 傳送佇列變長,滿了就丟棄 → 畫面上 整個伺服器出現延遲與封包遺失(輸入延遲、瞬移)
- 症狀
- 輸入延遲, 瞬移
- 因素
- 延遲, 遺失
- 誰會遇到
- 整個伺服器
- 何時
- 人潮湧入時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(伺服器基礎設施)
- 遊戲開發團隊要做的事
- 減少傳輸量(AOI、壓縮、只送變更的部分)。
- 基礎設施團隊要做的事
- 升級網路卡(更快的 NIC,雲端則換更大的執行個體),設定 NIC 使用率警示。
- 圖表上
- 碰到上限後持平 · NIC 傳送量、傳送丟棄
- 查看位置
- 把 sar -n DEV 1 的 txkB/s 與 %ifutil(相對於介面速度的使用率)和 NIC 速度、執行個體頻寬比較,並一起查看 ip -s link 的 TX dropped
- 符合的跡象
- 傳送量在 NIC 或執行個體頻寬附近持平,從那時起傳送丟棄與整個伺服器的延遲增加
- 不符合的跡象
- 頻寬還有餘裕時,就不是這個原因。小封包很多且有遺失時,是「超過雲端 PPS 上限」
- 確認方式
- 用基礎設施工具確認(不需要遊戲程式碼)
出處
- Interface statistics Linux kernel
tx_dropped:因資源不足,在傳送途中被丟棄的封包數 - Amazon EC2 instance network bandwidth AWS
執行個體可用的頻寬由 vCPU 數(執行個體大小)決定 - sar(1) — Linux manual page sysstat
-n DEV 的 rxkB/s、txkB/s 與 %ifutil(相對於介面速度的使用率)
相關原因
同一層:L6 伺服器網路卡
同一症狀(輸入延遲)在其他層的原因
查看含圖解與實驗的完整版卡片