---
title: OBI のパフォーマンスを設定する
linkTitle: パフォーマンスチューニング
description: eBPF トレーサーコンポーネントが外部プロセスの HTTP および GRPC サービスを計装し、パイプラインの次のステージに転送するトレースを作成する方法を設定します。
weight: 90
default_lang_commit: 4c8d57fea0147ce76633951315c40a27c55fad2e
cSpell:ignore: qdisc
---

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

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

| YAML<br>環境変数                                                    | 説明                                                                                                                                                                                                           | 型      | デフォルト |
| ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------- |
| `wakeup_len`<p>`OTEL_EBPF_BPF_WAKEUP_LEN`</p>                       | ユーザー空間へのウェイクアップ要求を送信する前に、OBI が eBPF リングバッファに蓄積するメッセージ数を設定します。[ウェイクアップ長](#wake-up-length) を参照してください。                                       | int     | 500        |
| `stats_wakeup_data_bytes`<p>`OTEL_EBPF_STATS_WAKEUP_DATA_BYTES`</p> | TCP 統計リングバッファがユーザー空間のコンシューマーを起動する前にキューに入る最小バイト数を設定します。詳細は [統計ウェイクアップ閾値](#stats-wake-up-threshold) を参照してください。                         | int     | 4096       |
| `traffic_control_backend`<p>`OTEL_EBPF_BPF_TC_BACKEND`</p>          | トラフィック制御プローブをアタッチするためのバックエンドを選択します。詳細は [トラフィック制御バックエンド](#traffic-control-backend) セクションを参照してください。                                           | string  | `auto`     |
| `http_request_timeout`<p>`OTEL_EBPF_BPF_HTTP_REQUEST_TIMEOUT`</p>   | OBI が HTTP リクエストをタイムアウトと判断するまでの時間間隔を設定します。詳細は [HTTP リクエストタイムアウト](#http-request-timeout) セクションを参照してください。                                           | string  | (0ms)      |
| `high_request_volume`<p>`OTEL_EBPF_BPF_HIGH_REQUEST_VOLUME`</p>     | OBI がレスポンスを検出したらすぐにテレメトリーイベントを送信します。詳細は [高リクエストボリューム](#high-request-volume) セクションを参照してください。                                                       | boolean | (false)    |
| `maps_config.global_scale_factor`                                   | eBPF マップのサイズを 2 のべき乗でスケーリングします。正の値はマップサイズを拡大し、負の値はマップサイズを縮小し、0 はデフォルトを維持します。[eBPF マップのリサイズ](#ebpf-map-resizing) を参照してください。 | int     | 0          |

## ウェイクアップ長 {#wake-up-length}

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

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

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

## 統計ウェイクアップ閾値 {#stats-wake-up-threshold}

`stats_wakeup_data_bytes` は `wakeup_len` とは独立して TCP 統計リングバッファを制御します。
値を大きくすると、負荷時のユーザー空間のウェイクアップが減少しますが、メトリクス配信のレイテンシーが増加します。
すべての送信イベントでコンシューマーを起動するには `0` に設定してください。
キューに入ったイベントがバッファが満杯になる前にドレインされるよう、リングバッファのサイズよりも十分に小さい値にしてください。

## トラフィック制御バックエンド {#traffic-control-backend}

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

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

## HTTP リクエストタイムアウト {#http-request-timeout}

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

## 高リクエストボリューム {#high-request-volume}

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

## eBPF マップのリサイズ {#ebpf-map-resizing}

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

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

設定例:

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

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