bpftune, новая система автоматической оптимизации BPF для Linux

bpftune

bpftune стремится обеспечить легкую, постоянную автоматическую настройку поведения системы.

Недавно Представлен Oracle опубликовав свою новую систему «бпфтьюн» который из предназначен для автоматической оптимизации конфигурации ядра на основе выполняемых задач, активности системы и шаблонов нагрузки.

bpftune работает в фоновом режиме и отслеживает использование системы и сетевой стек. Причиной создания проекта является необходимость оптимизации автономных систем, рассчитанных на работу с минимальным вмешательством администратора, а также возрастающая сложность современного ядра, увеличивающая трудоемкость ручных оптимизаций.



И это ядро предоставляет более 1500 параметров которые влияют на производительность и потребление ресурсов, и зачастую администратор просто копирует готовые рецепты, не вникая подробно в их суть и не надеясь, что они помогут).



Bpftune автоматически и постоянно корректирует конфигурацию ядра. Мониторинг системы осуществляется с помощью соответствующих функций Berkeley Packet Filter (BPF).

Ядро Linux содержит более 1500 настраиваемых параметров, и правильная установка этих параметров может значительно улучшить производительность и использование системы! В течение многих лет мы пытались предоставить правильные подсказки для этих настраиваемых параметров с помощью примечаний к выпуску программного обеспечения и улучшенных значений по умолчанию, но многие системные нагрузки выиграют от динамической настройки этих значений.

Представляем bpftune, автоматический конфигуратор, который отслеживает ваши рабочие нагрузки и устанавливает правильные значения параметров ядра! bpftune — это проект с открытым исходным кодом, доступный в репозиториях Oracle Linux.

О Bpftune

Bpftune постоянно отслеживает состояние системы, адаптивно настраивает параметры ядра, влияющие на производительность, и оценивает изменение поведения для получения оптимальных результатов. Благодаря БНФ, учитывается не только статистика всей системы, но и детали поведения отдельных компонентов, который, например, позволяет настроить параметры на уровне отдельных розеток и устройств.



Реализация отдельные оптимизации переносятся на плагины которые загружаются при запуске процесса в виде библиотек. Каждый подключаемый модуль, реализующий конкретную оптимизацию, содержит драйвер BPF, работающий в ядре, и компонент, работающий в пользовательском пространстве.

Основные преимущества, которые он обеспечивает:

  • Непрерывный мониторинг и настройка поведения системы с помощью функций наблюдения BPF (Berkeley Packet Filter).
  • Настройка поведения системы на мелкозернистом уровне стала возможной благодаря тому, что мы можем наблюдать за более подробной информацией о состоянии системы с помощью BPF.


Все подключаемые модули используют общий глобальный кольцевой буфер BPF для передачи событий ядра в пространство пользователя. Плагины могут быть выбраны в соответствии с потребностями администратора и их также можно отключить автоматически, если администратор вручную изменит конфигурацию ядра, связанную с ними.

В процессе автоматической настройки bpftune пытается достичь оптимального баланса между подачей и потреблением ресурсов, с учетом косвенного влияния изменений. Например, для повышения производительности нужно увеличить размер сетевого буфера, но его увеличение приводит к большему потреблению памяти и большим задержкам передачи данных, поэтому эти параметры необходимо учитывать при увеличении размера буфера.



Плагины, доступные для использования, включают:

  • bpftune-tcp-cong: автоматический выбор оптимального алгоритма управления перегрузкой сети
  • bpftune-neigh: автоматический выбор размера таблицы MAC-адресов соседних хостов
  • bpftune-route: автоматический выбор размера таблицы маршрутизации.
  • bpftune-sysctl — отслеживает настройки sysctl и отключает связанный тюнер, если он конфликтует с ручными настройками.
  • bpftune-tcp-buffer: автоматический выбор начального и максимального размера буферов TCP
  • bpftune-net-buffer: автоматическая настройка базовых сетевых буферов
  • bpftune-netns — Отслеживает добавление и удаление сетевых пространств имен (net namespace).

В конце концов если вам интересно узнать об этом больше, вы должны знать, что код проекта написан на языке C и распространяется под лицензией GPLv2 и вы можете проверить подробности в по следующей ссылке.




2023-07-02T01:46:11
приложений