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

遊戲 Lag 白皮書 › L6 伺服器網路卡

中斷合併過度 Interrupt coalescing

原因 ID nic-coalesce · 主要負責 基礎設施團隊(伺服器基礎設施)

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

為了減輕 CPU 負擔,NIC 把封包累積起來再一次通知 CPU(中斷合併,interrupt coalescing)時,累積多久就會晚多久。

為什麼 NIC 累積一定時間或一定數量的封包後才通知 → 於是 累積期間,封包只能等待 → 畫面上 延遲些微增加。通常很小,設定過度時會達到 ms 等級

症狀
輸入延遲
因素
延遲
誰會遇到
整個伺服器
何時
一直都有
負責單位
主要負責 基礎設施團隊(伺服器基礎設施)
基礎設施團隊要做的事
使用自適應合併,調整成適合遊戲伺服器的數值(ethtool -C)。
數值參考
通常為數十~數百 µs。對遊戲來說大多可以忽略,但設定過度時會放大到 ms 等級。
圖表上
一開始就一直偏高 · 同一資料中心內的往返時間
查看位置
用 ethtool -c 查看目前的合併設定(adaptive-rx、rx-usecs、rx-frames),並在修改設定前後,比較與同一資料中心其他伺服器之間的 ping 往返時間
符合的跡象
rx-usecs 設得很大(數百 µs 以上),調小後同一資料中心內的往返時間也縮短相同幅度
不符合的跡象
調小後往返時間仍沒有變化時,就不是這個原因
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. Linux Driver for Intel(R) Ethernet Network Connection (e1000e) Linux kernel
    預設使用自適應中斷調節,每秒 4,000~20,000 次(間隔 50~250µs),減少中斷可以節省 CPU,但延遲會增加
  2. Linux Base Driver for Intel(R) Ethernet Network Connection (e1000) Linux kernel
    RxIntDelay 能以 1.024µs 為單位把接收中斷延後最多 65,535(約 67ms),數值越大,接收延遲越長
  3. ethtool(8) — Linux manual page ethtool
    ethtool -C 的 adaptive-rx、rx-usecs、rx-frames 設定

相關原因

同一層:L6 伺服器網路卡

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

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