bpftune - eBPF を使用した自動 カーネル チューニング チートシート
bpftune (Oracle 製) は eBPF を使用して Linux カーネル パラメータを自動的にチューンする軽量デーモン。管理者が sysctl 値を推測する必要はなく、eBPF プローブを通じて実際のシステム動作を観察 — TCP バッファ 圧力、接続テーブル飽和、メモリ リクレレーション — と、負荷が変更するときに関連するパラメータを継続的に調整。その指導原則は目立たないこと:ほぼゼロのオーバーヘッド、構成不要、そして、管理者が手動で設定したパラメータから意図的にバック オフ。
自動チューニングはライブ システムのカーネル動作を変更。広範なロールアウト前に非クリティカル ホストで試行し、ログを確認。
要件
- eBPF と BTF サポート (5.15+ 推奨) を持つ Linux カーネル
- ルート 権限 (eBPF プログラム をロード、sysctl を書き込む)
インストール
| プラットフォーム | コマンド |
|---|
| Oracle Linux / Fedora | sudo dnf install bpftune |
| ソースから | git clone https://github.com/oracle/bpftune && make && sudo make install |
| サービス | sudo systemctl enable --now bpftune |
| 確認 | bpftune -h |
実行
| コマンド | 説明 |
|---|
sudo bpftune | フォアグラウンドで実行 |
sudo bpftune -d | デーモンとして実行 |
sudo systemctl start bpftune | systemd 経由で開始 |
sudo bpftune -s | チューナー とその現在の状態の概要を表示 |
journalctl -u bpftune -f | チューニング 決定をライブで見る |
キー オプション
| フラグ | 効果 |
|---|
-d | デーモン モード |
-s | 概要/ステータス 出力 |
-S | 抑制 (ドライ ラン) — 変更するもの をログに記録 |
-L | 学習モード / レガシー 動作 |
-r | 終了時に変更 をロールバック |
-l LEVEL | ログ 詳細度 |
# 何かを変更せずにチューン することかを確認
sudo bpftune -S -l debug
チューンするもの
| チューナー | 調整 |
|---|
| TCP バッファ | スループット 圧力下でtcp_rmem / tcp_wmem |
| TCP 輻輳 | 輻輳制御アルゴリズム 選択 |
| 接続制限 | キュー オーバーフロー時somaxconn、バックログ サイズ |
| ネイバー テーブル | エントリ がドロップされたときの ARP/ND テーブル サイズ |
| ルート テーブル | ルート キャッシュ サイジング |
| Netns / sysctl | 適用可能な名前空間 等価物 |
フィードバック ループ がどのように機能するか
| ステップ | 詳細 |
|---|
| 監視 | eBPF プローブ ドロップ、オーバーフロー、圧力 イベント をカウント |
| 決定 | しきい値が繰り返しヒットされた場合、パラメータ はボトルネック |
| 調整 | 制限を段階的に上げ (決して無制限ではない) |
| 再監視 | 症状 がクリア されたことを確認 |
| バック オフ | 管理者が値を手動で設定した場合、それを一人にする |
この「監視、ナッジ、検証」サイクルが、それが発振することなく継続的に実行できる理由。
その影響を検証する
# bpftune は何を変更したか?
sudo bpftune -s
# それが報告した調整を確認 sysctl
sysctl net.ipv4.tcp_rmem net.core.somaxconn
# それが修正していた症状 と相関
ss -s # ソケット/キュー 統計
netstat -s | grep -i drop # チューニング をトリガー した削除
いつ使用するか
| シナリオ | フィット |
|---|
| 変数/不明なワークロード | 強い — 負荷が変更 されると適応 |
| 異なるサイズのクラウド インスタンス | 強い — インスタンス単位のチューニング なし |
| 高度にチューン 済み、固定ワークロード | 弱い — 手動値はおそらくより良い |
| 厳格な変更制御 | ドライ ラン用に-Sを使用するか、スキップ |
bpftune vs 手動/プロファイル チューニング
| 側面 | bpftune | TuneD | 手動 sysctl |
|---|
| モデル | 継続的、フィードバック駆動 | 静的プロファイル | ワンタイム 値 |
| 負荷に適応 | はい | いいえ | いいえ |
| 構成 必要 | なし | プロファイルを選択 | 完全な 専門知識 |
| 手動設定 を尊重 | はい (バック オフ) | 上書き | N/A |
TuneD (幅広い静的プロファイル)を補完し、cpupowerのような直接ツール;bpftune はネットワーク/カーネル 制限を特に対象。
リソース