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

游戏卡顿白皮书 › L6 服务器网卡

中断合并过度 Interrupt coalescing

原因 ID nic-coalesce · 主责 运维团队·系统运维

在含图示和实验的完整版中打开此卡片 →

为减轻 CPU 负担,网卡把数据包攒一批再一次性通知 CPU,攒包花了多少时间,就会晚多少。

起因 网卡攒够一定时间或一定数量后再发中断 → 结果 攒包期间数据包在等待 → 画面表现 延迟略有增加。通常很小,设置过度时可达 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 个单位(约 67 ms),值越大接收延迟越大
  3. ethtool(8) — Linux manual page ethtool
    ethtool -C 的 adaptive-rx、rx-usecs、rx-frames 设置

相关原因

同一层:L6 服务器网卡

其他层中同样导致“操作延迟”的原因

查看含图示和实验的原卡片