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

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

GRO/LRO 合并等待延迟 GRO/LRO batching

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

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

这是把多个数据包合并成一个、以减轻 CPU 负担的功能。视配置而定,较小的游戏数据包可能要短暂等待下一个可合并的包。

起因 网卡和内核把到达的数据包合并处理 → 结果 开启了硬件合并(LRO)或合并等待时间设置时,会为等下一个包而短暂停留 → 画面表现 延迟略有增加(一般不超过几十 µs)

症状
操作延迟
因素
延迟
谁会遇到
全服
何时出现
一直
负责方
主责 运维团队·系统运维
运维团队要做的事
按游戏流量调整(关闭 LRO,检查合并等待时间设置);影响通常较小,排在其他原因之后再查。
监控图上
一直偏高 · 同一数据中心内的往返时间
查看位置
用 ethtool -k 查看 lro、gro 状态,查看设备 sysfs 配置中的 gro_flush_timeout 值,并比较修改前后同一数据中心内小包的往返时间
确认依据
LRO 已开启或 gro_flush_timeout 大于 0,关闭或设为 0 后小包的往返时间缩短
排除依据
修改后差异在几 µs 以内,则不是这个原因
确认手段
运维工具即可确认(无需游戏代码)

出处

  1. NAPI Linux kernel
    gro_flush_timeout 设得较大时能合并处理,代价是负载低时会产生延迟
  2. Linux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters (ixgbe) Linux kernel
    GRO 把接收流量合并成大块以节省 CPU,是由 LRO 改进而来的功能
  3. ethtool(8) — Linux manual page ethtool
    ethtool -K 的 gro、lro on|off 设置

相关原因

同一层:L6 服务器网卡

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

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