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

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

過剰な割り込みコアレッシング Interrupt coalescing

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

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

CPUの負担を減らすために、パケットをまとめてから一度に知らせると、まとめる時間の分だけ遅れます。

なぜ 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 サーバーのネットワークカード

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

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