В состав GCC принят бэкенд для компиляции в eBPF

9 сентября 2019 года

В состав набора компиляторов GCC принят код для компиляции программ для встроенного в ядро Linux интерпретатора байткода eBPF. Благодаря применению JIT-компиляции, в ядре байткод на лету транслируется в машинные инструкции и выполняется с производительностью нативного кода. Патчи с поддержкой eBPF приняты в ветку, на основе которой развивается выпуск GCC 10.

Помимо бэкенда для генерации байткода в GCC включён порт libgcc для eBPF и средства для формирования ELF-файлов, дающих возможность выполнить код в виртуальной машине eBPF с использованием предоставляемых ядром загрузчиков. Патчи для поддержи eBPF в GCC подготовлены инженерами из компании Oracle, которые до этого уже обеспечили поддержку eBPF в GNU binutils. В разработке также находится симулятор и патчи для GDB, которые позволят отлаживать eBPF-программы без загрузки в ядро.

Программы для eBPF могут определяться на подмножестве языка C, компилироваться и загружаться в ядро. Перед выполнением интерпретатор eBPF проверяет байткод на предмет применения разрешённых инструкций и налагает определённые правила на код (например, отсутствие циклов). Изначально для компиляции eBPF в Linux применялся инструментарий на базе LLVM. Поддержка eBPF в GCC представляет интерес тем, что позволяет использовать один инструментарий для сборки ядра Linux и eBPF-программ, без установки дополнительных зависимостей.

В форме программ eBPF можно создавать обработчики сетевых операций, фильтровать трафик, управлять пропускной способностью, отслеживать работу систем, перехватывать системные вызовы, контролировать доступ, подсчитывать частоту и время выполнения операций, выполнять трассировку с использованием kprobes/uprobes

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «В состав GCC принят бэкенд для компиляции в eBPF», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.