Что такое eBPF и для чего его используют?

eBPF позволяет подключать ограниченные программы к событиям Linux. Разбираем точки подключения, maps, verifier и ограничения технологии.

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

eBPF — механизм программируемого расширения поведения Linux: небольшие программы загружаются в ядро и выполняются в поддерживаемых точках подключения. Можно собирать метрики, исследовать задержки, обрабатывать сетевые пакеты и реализовывать наблюдение за событиями без внесения собственного изменения в исходный код ядра.

Типичный цикл состоит из подготовки программы, проверки ядром при загрузке и подключения к выбранному событию. Это могут быть tracepoints, точки трассировки функций, сетевые или cgroup-механизмы. Пользовательская часть приложения управляет загрузкой и получает результаты. Такой жизненный цикл описан в документации libbpf.

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

Перед принятием программы ядро применяет verifier: анализирует состояния регистров, доступ к памяти и допустимость вызовов. Нельзя произвольно обратиться к любой памяти или вызвать любую функцию. Правила и примеры отказа описаны в документации verifier.

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

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку