Создать исполняемый файл из скрипта bcc python

bcc использует python для компиляции программ ebpf, есть ли удобный способ сгенерировать исполняемый файл из этих сценариев python чтобы я мог запускать эти программы трассировки на серверах, на которых не установлены среды clang и llvm?


person Cauchy Schwarz    schedule 27.02.2020    source источник


Ответы (1)


TL; DR. Нет, не с BCC. Возможно, вы захотите проверить BPF CO-RE хотя.


Есть две части, чтобы решить эту проблему для bcc. Во-первых, вам нужно скомпилировать объектный файл с программой BPF и карты, которые будут работать в вашей целевой системе (та же версия ядра / заголовки и те же соглашения, что и загрузчик BPF Linux). Во-вторых, вам понадобится компонент пользовательского пространства BCC для распознавания и работы с этой программой и картами.

В настоящее время BCC не поддерживает ни один из них. Моя ветвь имеет (несколько устаревшую) ветку, в которой я реализовал поддержку сброса объектный файл на диск с соглашениями, которые позволяют загружать его в ядро ​​Linux. Это, вероятно, неполно для вашей цели, так как я только пытался загрузить программу в ядро; Что случилось потом, меня не волновало. Также была проделана некоторая работа по запуску инструментов BCC в удаленных системах, но я не знаю, что текущее состояние этого есть.

Одно из предпринимаемых усилий, направленных на решение вашей проблемы, - это BPF CO-RE. BPF CO-RE позволяет разрабатывать программы трассировки BPF, переносимые между версиями Linux. Поэтому вам не нужно компилировать с заголовками Linux целевой системы и больше не требуется LLVM / Clang . Команда, стоящая за этой работой, недавно опубликовала две статьи на принципы и внутреннее устройство BPF CO-RE и как это применимо к инструментам BCC.

person pchaigno    schedule 28.02.2020