Re: [PATCH bpf-next RFC 2/3] bpf: devmap dynamic map-value storage area based on BTF
From: Jesper Dangaard Brouer <hidden>
Date: 2020-05-30 14:36:57
Also in:
bpf
On Sat, 30 May 2020 00:19:50 -0700 Andrii Nakryiko [off-list ref] wrote:
On Fri, May 29, 2020 at 8:59 AM Jesper Dangaard Brouer [off-list ref] wrote:quoted
The devmap map-value can be read from BPF-prog side, and could be used for a storage area per device. This could e.g. contain info on headers that needIf BPF program needs a storage area per device, why can't it just use a separate map or just plain array (both keyed by ifindex) to store whatever it needs per-device? It's not clear why this flexibility and complexity is needed from the description above.
Sorry I though it was obvious, it is for performance reasons and to reduce the number of maps needed. We do a lookup in the devmap anyhow, thus this memory will be cache-hot. Doing another lookup in a separate map, which is not guaranteed to be cache-hot, will be wasting cycles.
quoted
to be added when packet egress this device. This patchset adds a dynamic storage member to struct bpf_devmap_val. More importantly the struct bpf_devmap_val is made dynamic via leveraging and requiring BTF for struct sizes above 4. The only mandatory struct member is 'ifindex' with a fixed offset of zero. Signed-off-by: Jesper Dangaard Brouer <redacted> --- kernel/bpf/devmap.c | 216 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 185 insertions(+), 31 deletions(-)[...]
-- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer