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

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

NIC 驅動程式/韌體問題 NIC hang / reset

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

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

驅動程式 bug 或功能異常讓網路卡停住並重新啟動,這段期間所有收發都會中斷。

為什麼 驅動程式 bug、offload 功能異常 → 於是 NIC 停住後重新啟動(數秒) → 畫面上 那台伺服器上所有人的畫面一起停住,接著瞬移或斷線

症狀
定格, 斷線
因素
遺失
誰會遇到
整個伺服器
何時
偶爾隨機發生, 開越久越嚴重
負責單位
主要負責 基礎設施團隊(伺服器基礎設施)
基礎設施團隊要做的事
確認 kernel log 中的「transmit queue … timed out」、「Link is Down」紀錄並設定警示,更新驅動程式與韌體,關閉有問題的功能(offload 等)。
圖表上
中斷後一次湧入 · 伺服器收發封包數
查看位置
用 dmesg 在 kernel log 中找「NETDEV WATCHDOG … transmit queue N timed out」、驅動程式的重設,以及「Link is Down」、「Link is Up」紀錄,並查看該時間點伺服器的收發封包數
符合的跡象
停住的時間點 kernel log 中有傳送佇列逾時或鏈路 down/up 紀錄,且那幾秒內收發封包數為 0
不符合的跡象
kernel log 很乾淨、交換器端的 port 也正常時,是遊戲伺服器處理程序的停頓(「伺服器 GC 全面暫停」、「死結」)或「網路設備容錯移轉(failover)」
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. net/sched/sch_generic.c (Linux v6.12) Linux kernel
    傳送佇列停住時,kernel 看門狗會留下「NETDEV WATCHDOG … transmit queue N timed out」,並呼叫驅動程式的重設函式
  2. drivers/net/ethernet/intel/ixgbe/ixgbe_main.c (Linux v6.12) Linux kernel
    ixgbe 驅動程式在傳送停住時重設介面卡,鏈路中斷時記錄「NIC Link is Down」
  3. ethtool(8) — Linux manual page ethtool
    用 ethtool -K 逐一關閉 offload 功能的選項

相關原因

同一層:L6 伺服器網路卡

同一症狀(定格)在其他層的原因

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