Re: [PATCH bpf-next 0/3] bpf: introduce BPF_MAP_TYPE_RELAY

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Dec 22, 2023 at 08:21:43PM +0800, Philo Lu wrote:
> The patch set introduce a new type of map, BPF_MAP_TYPE_RELAY, based on
> relay interface [0]. It provides a way for persistent and overwritable data
> transfer.
> 
> As stated in [0], relay is a efficient method for log and data transfer.
> And the interface is simple enough so that we can implement and use this
> type of map with current map interfaces. Besides we need a new helper
> bpf_relay_output to output data to user, similar with bpf_ringbuf_output.
> 
> We need this map because currently neither ringbuf nor perfbuf satisfies
> the requirements of relatively long-term consistent tracing, where the bpf
> program keeps writing into the buffer without any bundled reader, and the
> buffer supports overwriting. For users, they just run the bpf program to
> collect data, and are able to read as need. The detailed discussion can be
> found at [1].
> 
> The buffer is exposed to users as per-cpu files in debugfs, supporting read
> and mmap, and it is up to users how to formulate and read it, either
> through a program with mmap or just `cat`. Specifically, the files are
> created as "/sys/kerenl/debug/<dirname>/<mapname>#cpu", where the <dirname>
> is defined with map_update_elem (Note that we do not need to implement
> actual elem operators for relay_map).
> 
> If this map is acceptable, other parts including docs, libbpf support,
> selftests, and benchmarks (if need) will be added in the following version.

looks useful, selftests might be already helpful to see the usage

jirka

> 
> [0]
> https://github.com/torvalds/linux/blob/master/Documentation/filesystems/relay.rst
> [1]
> https://lore.kernel.org/bpf/20231219122850.433be151@xxxxxxxxxxxxxxxxxx/T/
> 
> Philo Lu (3):
>   bpf: implement relay map basis
>   bpf: implement map_update_elem to init relay file
>   bpf: introduce bpf_relay_output helper
> 
>  include/linux/bpf.h       |   1 +
>  include/linux/bpf_types.h |   3 +
>  include/uapi/linux/bpf.h  |  17 +++
>  kernel/bpf/Makefile       |   3 +
>  kernel/bpf/helpers.c      |   4 +
>  kernel/bpf/relaymap.c     | 213 ++++++++++++++++++++++++++++++++++++++
>  kernel/bpf/syscall.c      |   1 +
>  kernel/bpf/verifier.c     |   8 ++
>  kernel/trace/bpf_trace.c  |   4 +
>  9 files changed, 254 insertions(+)
>  create mode 100644 kernel/bpf/relaymap.c
> 
> --
> 2.32.0.3.g01195cf9f
> 




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux