Pull to refresh

Comments 5

UFO landed and left these words here

Отличная серия, спасибо за продолжение. Собирать clang для BPF обычно надобности нет, в Debian 10 точно. GCC 10 — пришлось бы (и binutils заодно), но нет смысла: он пока сырой и генерирует код заметно хуже clang.

Да, в нормальном случае последний clang не нужен (но для того, чтобы нормально работало BPF CO-RE точно нужен clang 10, лучше — 11).

Можно и древнее, но тогда нужно быть аккуратным, например, с определением мапов, чтобы они не генерировали 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 с начала двухтысячных, и плюс еще довольно много очень хороших инженеров.
Only those users with full accounts are able to leave comments. Log in, please.