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

ゲームラグ白書 › L6 サーバーのネットワークカード

GRO/LROの結合待ちによる遅延 GRO/LRO batching

原因ID nic-offload · 主担当 インフラチーム・サーバーインフラ

図と実験のあるメインページでこのカードを開く →

複数のパケットを1つにまとめてCPUの負担を減らす機能です。設定によっては、小さなゲームのパケットが、一緒にまとめる次のパケットを少し待つことがあります。

なぜ NIC・カーネルが到着したパケットをまとめて処理 → すると ハードウェアによる結合(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 サーバーのネットワークカード

同じ症状(入力遅延)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る