Re: [PATCH bpf-next v3 0/1] libbpf: perfbuf expose ring buffer

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

 





On 7/15/22 7:18 AM, Jon Doron wrote:
From: Jon Doron <jond@xxxxxx>

Add support for writing a custom event reader, by exposing the ring
buffer.

Few simple examples where this type of needed:
1. perf_event_read_simple is allocating using malloc, perhaps you want
    to handle the wrap-around in some other way.
2. Since perf buf is per-cpu then the order of the events is not
    guarnteed, for example:
    Given 3 events where each event has a timestamp t0 < t1 < t2,
    and the events are spread on more than 1 CPU, then we can end
    up with the following state in the ring buf:
    CPU[0] => [t0, t2]
    CPU[1] => [t1]
    When you consume the events from CPU[0], you could know there is
    a t1 missing, (assuming there are no drops, and your event data
    contains a sequential index).
    So now one can simply do the following, for CPU[0], you can store
    the address of t0 and t2 in an array (without moving the tail, so
    there data is not perished) then move on the CPU[1] and set the
    address of t1 in the same array.
    So you end up with something like:
    void **arr[] = [&t0, &t1, &t2], now you can consume it orderely
    and move the tails as you process in order.
3. Assuming there are multiple CPUs and we want to start draining the
    messages from them, then we can "pick" with which one to start with
    according to the remaining free space in the ring buffer.

Jon Doron (1):
   libbpf: perfbuf: Add API to get the ring buffer

  tools/lib/bpf/libbpf.c   | 26 ++++++++++++++++++++++++++
  tools/lib/bpf/libbpf.h   |  2 ++
  tools/lib/bpf/libbpf.map |  1 +
  3 files changed, 29 insertions(+)


This is a patch set with a single patch. There is no need for
the cover letter. Further the cover letter description is
identical to the commit message of the first patch.



[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