ゲームラグ白書 › 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以上と大きく設定されていて、値を小さくすると同じデータセンター内の往復時間がその分だけ短くなる
- 該当しない場合
- 小さくしても往復時間が変わらなければこの原因ではない
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- Linux Driver for Intel(R) Ethernet Network Connection (e1000e) Linux kernel
デフォルトは適応型の割り込み調整で毎秒4,000〜20,000回(間隔50〜250µs)、割り込みを減らすとCPUは節約できるが遅延が増える - Linux Base Driver for Intel(R) Ethernet Network Connection (e1000) Linux kernel
RxIntDelayで受信割り込みを1.024µs単位で最大65,535まで(約67ms)遅らせることができ、値を大きくすると受信遅延が増える - ethtool(8) — Linux manual page ethtool
ethtool -Cのadaptive-rx・rx-usecs・rx-frames設定
あわせて読みたい原因
同じ層:L6 サーバーのネットワークカード
同じ症状(入力遅延)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る