Comments 5
Отличная серия, спасибо за продолжение. Собирать clang для BPF обычно надобности нет, в Debian 10 точно. GCC 10 — пришлось бы (и binutils заодно), но нет смысла: он пока сырой и генерирует код заметно хуже clang.
Да, в нормальном случае последний clang не нужен (но для того, чтобы нормально работало BPF CO-RE точно нужен clang 10, лучше — 11).
Можно и древнее, но тогда нужно быть аккуратным, например, с определением мапов, чтобы они не генерировали BTF (т.е. не использовать макросы __type, etc.), как, например, это сделано в xdp-tutorial:
Можно и древнее, но тогда нужно быть аккуратным, например, с определением мапов, чтобы они не генерировали BTF (т.е. не использовать макросы __type, etc.), как, например, это сделано в xdp-tutorial:
struct bpf_map_def SEC("maps") xdp_stats_map = {
.type = BPF_MAP_TYPE_PERCPU_ARRAY,
.key_size = sizeof(__u32),
.value_size = sizeof(struct datarec),
.max_entries = XDP_ACTION_MAX,
};
В дополнение к ссылкам, на днях наткнулся на неплохой новый ресурс, посвященный eBPF: https://ebpf.io/
Да, он только на днях и появился. Этот сайт поддерживается компанией Isovalent, в основе бизнеса которой лежит Kubernetes CNI cilium, основанный на BPF. У них есть еще хороший slack канал #ebpf, в котором можно задавать вопросы про BPF. Товарищи опытные — Daniel Borkman (один из создателей BPF), два кофаундера в сетевом сообществе Linux с начала двухтысячных, и плюс еще довольно много очень хороших инженеров.
Sign up to leave a comment.
BPF для самых маленьких, часть первая: extended BPF