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

遊戲 Lag 白皮書 › L5 資料中心網路設備

交換器 microburst Switch microburst drops

原因 ID dc-microburst · 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(網路基礎設施), 基礎設施團隊(伺服器基礎設施)

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

多台伺服器在同一瞬間同時對數千人送出封包時,這些流量匯集的交換器 port 上的小緩衝區,不到 1ms 就會滿溢。

為什麼 世界王出現、大範圍技能,或多台伺服器的 tick 在同一瞬間對齊,同時送出封包 → 於是 多個 port 匯入一個 port,或從快速 port 轉到慢速 port 的地方,緩衝區(每個 port 數百 KB~數 MB)瞬間塞滿 → 畫面上 部分封包被丟棄,許多人同時瞬移、技能被吃

症狀
瞬移, 吃指令/回檔
因素
遺失
誰會遇到
特定地點/頻道
何時
人潮湧入時
負責單位
主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(網路基礎設施), 基礎設施團隊(伺服器基礎設施)
遊戲開發團隊要做的事
在一個 tick 內平均分散傳送(pacing),讓各伺服器的 tick 開始時間稍微錯開。
基礎設施團隊要做的事
網路:採用緩衝區較大的交換器,分散流量(把伺服器分散接到多台交換器、多個 port),監看各交換器 port 的丟棄計數器。伺服器設備/OS:為整台伺服器設定傳送速率上限(Linux tc shaper)。
數值參考
10Gbps 的 port 在 1ms 內能送出的量約為 1.25MB。兩個 port 的流量同時湧入一個 port 時,每 1ms 就會累積 1.25MB。即使 1 秒平均使用率只有 10%,以 1ms 為單位來看仍可能滿溢。
圖表上
隨人數/負載上升 · 交換器 port 輸出丟棄數
查看位置
以盡可能短的間隔收集伺服器所接交換器 port,以及其流量匯集 port 的輸出丟棄計數器(ifOutDiscards,依設備可能為 output drops),對照世界王出現、大規模戰鬥的時間點。只看 1 秒、1 分鐘平均使用率圖表是看不出來的
符合的跡象
平均使用率很低,但每當人潮集中到一處的瞬間輸出丟棄就增加,同時多位玩家回報瞬移、技能被吃
不符合的跡象
丟棄在平均使用率高的時段持續增加時是「資料中心線路飽和」。輸入錯誤(CRC)增加時是「纜線不良與 port 錯誤」
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. High-Resolution Measurement of Data Center Microbursts (IMC 2017) ACM
    資料中心突發流量有 70% 以上在數十 µs 內結束,平均使用率約 9% 的 port 也會因突發流量丟棄封包
  2. Data Center TCP (DCTCP) (SIGCOMM 2010) ACM
    一般商用交換器的緩衝區很淺(48 個 port 共用 4MB,單一 port 最多約用到 700KB),多條 flow 在極短時間內湧入同一個 port 時就會遺失
  3. RFC 2863: The Interfaces Group MIB IETF
    ifOutDiscards:沒有錯誤,卻因為要騰出緩衝區空間等原因而無法送出、被丟棄的封包數

相關原因

同一層:L5 資料中心網路設備

同一症狀(瞬移)在其他層的原因

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