# Налаштування продуктивності OBI

> Налаштуйте, як компонент eBPF трейсер інструментує HTTP та GRPC сервіси зовнішніх процесів і створює трейси для передачі на наступний етап конвеєра.

---

LLMS index: [llms.txt](/llms.txt)

---

Ви можете використовувати eBPF трейсер для тонкої настройки продуктивності OBI.

Ви можете налаштувати компонент у секції `ebpf` вашої YAML конфігурації або за допомогою змінних середовища.

| YAML<br>змінна середовища                                         | Опис                                                                                                                                                                                                                                             | Тип     | Стандартно |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | ---------- |
| `wakeup_len`<p>`OTEL_EBPF_BPF_WAKEUP_LEN`</p>                     | Встановлює, скільки повідомлень OBI накопичує в eBPF буфері викликів перед надсиланням запиту на пробудження в простір користувача. Див. [довжина пробудження](#wake-up-length).                                                                 | init    | 500        |
| `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 у ступенях двійки. Позитивні значення збільшують розміри мап, негативні значення зменшують розміри, а 0 залишає стандартне значення. Див. розділ [зміна розмірів мап eBPF](#ebpf-map-resizing) для отримання деталей. | int     | 0          |

## Тривалість пробудження {#wake-up-length}

OBI накопичує повідомлення в eBPF буфері викликів та надсилає запит на пробудження в простір користувача, коли досягає цього значення.

Для сервісів з високим навантаженням встановіть цю опцію на більше значення, щоб зменшити навантаження на ЦП.

Для сервісів з низьким навантаженням високі значення можуть затримати момент, коли OBI подає метрики і коли вони стають видимими.

## Бекенд контролю трафіку {#traffic-control-backend}

Ця опція вибирає бекенд для підключення проб трафіку. Linux 6.6 додає підтримку TCX, підключення контролю трафіку на основі файлових дескрипторів. TCX є більш надійним, не вимагає явного управління qdisc і складає ланцюг проб детерміновано. Ми рекомендуємо бекенд `tcx` для ядер >= 6.6. Коли встановлено в `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** збільшують розміри мап у ступенях двійки (наприклад, `1` означає 2x, `2` означає 4x).
- **Значення < 0** зменшують розміри мап у ступенях двійки (наприклад, `-1` означає 1/2x, `-2` означає 1/4x).
- **Стандартне значення: `0`** залишає стандартні розміри мап.
- Діапазон допустимих значень: `-3` до `3`.

Приклад конфігурації:

```yaml
ebpf:
  maps_config:
    global_scale_factor: 1 # Подвоїти стандартні розміри мап
```

Це особливо корисно в контейнеризованих або Kubernetes середовищах, де обмеження ресурсів можуть вимагати ретельного налаштування використання памʼяті eBPF.
