OCI E6ゲームサーバーのラグを極限まで減らす sysctlネットワークバッファ調整
OCI E6ゲームサーバーのレスポンスを高めるカーネルパラメータ最適化
OCIの最新E6インスタンス(AMD EPYC)は高いネットワーク処理能力を持っています。しかし、FiveMやRustといった、プレイヤーの座標データやインベントリのパケットがミリ秒単位で大量に往来するマルチプレイゲームサーバーでは、OS(Linuxカーネル)側のネットワークバッファが初期値のままだと、急激なトラフィックを捌ききれずにパケットドロップ(破棄)によるラグや同期ズレが発生することがあります。
ハードウェア(E6)の持つポテンシャルを100%引き出し、大規模接続でもパケットロスを極限まで減らすための /etc/sysctl.conf のチューニング設定をまとめます。
sysctl.conf の編集手順
設定を変更するには、/etc/sysctl.conf ファイルにパラメータを追記します。まずは以下のコマンドでファイルを開きます。
sudo nano /etc/sysctl.conf
ファイルの末尾に、以下の最適化設定をコピー&ペーストして保存します。
# カーネルのネットワーク受信キューの最大値を拡張(パケットの溢れを防止)
net.core.netdev_max_backlog = 5000
# ソケットごとの最大接続数(バックログ)の上限を引き上げる
net.core.somaxconn = 1024
# TCPの受信/送信バッファの最大サイズ(バイト単位)を拡張
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# TCPバッファの自動割り当て範囲(最小、初期、最大)の最適化
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# E6の高い処理能力を活かし、BBR混雑制御アルゴリズムとfq(Fair Queueing)を有効化
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
設定の反映と確認
保存が完了したら、以下のコマンドを実行して設定をカーネルに即時反映させます。
sudo sysctl -p
正しく bbr が有効化されているかは、以下のコマンドで確認できます。
sysctl net.ipv4.tcp_congestion_control
# 出力結果が「net.ipv4.tcp_congestion_control = bbr」となれば成功
効果
これらのネットワークチューニングを施すことで、特にプレイヤーが急激に動いたり、車両などでマップを高速移動した際の「大量のデータパケットが瞬間的にサーバーへ流れ込むシーン」において、カーネルによる不要なパケット破棄を完全に防ぐことができます。
E6の強力なプロセッサ性能と組み合わせることで、ラグのない極めて快適なマルチプレイサーバーの運用が可能になります。