OBI のパフォーマンスを設定する

eBPF トレーサーコンポーネントが外部プロセスの HTTP および GRPC サービスを計装し、パイプラインの次のステージに転送するトレースを作成する方法を設定します。

eBPF トレーサーを使用して、OBI のパフォーマンスを細かく調整できます。

このコンポーネントは、YAML 設定ファイルの ebpf セクション、または環境変数を使用して設定できます。

YAML
環境変数
説明デフォルト
wakeup_len

OTEL_EBPF_BPF_WAKEUP_LEN

ユーザー空間へのウェイクアップ要求を送信する前に、OBI が eBPF リングバッファに蓄積するメッセージ数を設定します。ウェイクアップ長 を参照してください。int500
traffic_control_backend

OTEL_EBPF_BPF_TC_BACKEND

トラフィック制御プローブをアタッチするためのバックエンドを選択します。詳細は トラフィック制御バックエンド セクションを参照してください。stringauto
http_request_timeout

OTEL_EBPF_BPF_HTTP_REQUEST_TIMEOUT

OBI が HTTP リクエストをタイムアウトと判断するまでの時間間隔を設定します。詳細は HTTP リクエストタイムアウト セクションを参照してください。string(0ms)
high_request_volume

OTEL_EBPF_BPF_HIGH_REQUEST_VOLUME

OBI がレスポンスを検出したらすぐにテレメトリーイベントを送信します。詳細は 高リクエストボリューム セクションを参照してください。boolean(false)
maps_config.global_scale_factoreBPF マップのサイズを 2 のべき乗でスケーリングします。正の値はマップサイズを拡大し、負の値はマップサイズを縮小し、0 はデフォルトを維持します。eBPF マップのリサイズ を参照してください。int0

ウェイクアップ長

OBI は eBPF リングバッファにメッセージを蓄積し、この値に達したときにユーザー空間にウェイクアップ要求を送信します。

高負荷のサービスでは、CPU オーバーヘッドを削減するためにこのオプションを高めに設定してください。

低負荷のサービスでは、高い値は OBI がメトリクスを送信して可視化されるタイミングを遅延させる可能性があります。

トラフィック制御バックエンド

このオプションは、トラフィック制御プローブをアタッチするためのバックエンドを選択します。 Linux 6.6 では、ファイルディスクリプタベースのトラフィック制御アタッチメントである TCX のサポートが追加されました。 TCX はより堅牢で、明示的な qdisc 管理を必要とせず、プローブを決定的にチェーンします。 カーネル 6.6 以上では tcx バックエンドを推奨します。 auto に設定すると、OBI はあなたのカーネルに最適なバックエンドを選択します。

受け付けるバックエンド: tctcxauto。 この値を空にするか未設定にすると、OBI は auto を使用します。

HTTP リクエストタイムアウト

このオプションは、OBI が HTTP リクエストをタイムアウトと判断するまでの待機時間を設定します。 OBI は、タイムアウトして戻ってこない HTTP トランザクションを報告できます。 HTTP リクエストの自動タイムアウトを有効にするには、このオプションをゼロ以外の値に設定してください。 リクエストがタイムアウトすると、OBI は HTTP ステータスコード 408 を報告します。 切断はタイムアウトのように見える可能性があるため、この値を設定するとリクエストの平均値が増加する可能性があります。

高リクエストボリューム

このオプションは、OBI がレスポンスを検出したらすぐにテレメトリーイベントを送信するようにします。 大きなレスポンスを持つリクエストのタイミング精度は低下しますが、大量のリクエストが発生するシナリオでは、ドロップされるトレースイベントを削減するのに役立ちます。

eBPF マップのリサイズ

maps_config.global_scale_factor オプションを使用すると、ワークロードの特性に基づいてパフォーマンスを調整するために、実行時に eBPF マップのサイズを動的に変更できます。

  • 0 より大きい値 は、マップのサイズを 2 のべき乗で増加させます(たとえば、1 は 2 倍、2 は 4 倍を意味します)。
  • 0 より小さい値 は、マップのサイズを 2 のべき乗で減少させます(たとえば、-1 は 1/2 倍、-2 は 1/4 倍を意味します)。
  • デフォルト値: 0 は、標準のマップサイズを維持します。
  • 有効範囲: -3 から 3 まで。

設定例:

ebpf:
  maps_config:
    global_scale_factor: 1 # デフォルトのマップサイズを2倍にする

これは、リソース制約のために eBPF メモリ使用量の慎重なチューニングが必要となるコンテナ化された環境や Kubernetes 環境で特に有用です。