Запуск программ ядра eBPF продолжает становиться все более популярным и используется для различных сценариев использования в производственных средах, но одна из проблем связана с необходимостью компиляции программ (e) BPF для данного ядра, в то время как BPF CO-RE имеет работал над тем, чтобы это изменить. Компилятор LLVM Clang уже поддерживает возможность BPF «Компилировать один раз, запускать везде», а теперь инженеры Oracle работают над тем, чтобы обеспечить такой же уровень поддержки для GCC.
BPF CO-RE позволяет программам BPF работать с разными версиями ядра и избавляет от необходимости, в свою очередь, наличия LLVM/Clang (или GCC) в каждой системе или заголовков ядра для компиляции программ BPF на лету с помощью обычных подход. BPF CO-RE позволяет адаптировать программу во время загрузки в зависимости от ядра с динамической корректировкой различий в используемых структурах данных ядра. Во время компиляции записывается дополнительная информация об используемых структурах данных ядра, поэтому при загрузке во время выполнения на другом ядре, в идеале необходимые изменения могут быть внесены автоматически.
LLVM Clang поддерживает BPF CO-RE, в то время как Дэвид Фауст из Oracle сегодня разослал набор исправлений для поддержки этой поддержки”Compile Once, Run Everywhere”для серверной части BPF GNU Compiler Collection.
Предлагаемые на данный момент исправления GCC можно найти в списке рассылки .
Более подробную информацию о BPF CO-RE в целом можно найти в этой презентации на Facebook и блог BPF .