• Brenden Blanco's avatar
    Add ability to consume perf events in python · 8207d10e
    Brenden Blanco authored
    This adds the ability to consume perf events in libbpf/python using the
    ring buffer. For now, this is the only way to get access to the function
    call graph. Only kernel functions are supported.
    
    It does this by introducing a new set of libbpf helper functions that
    can open the perf fd, mmap it, and poll over the events as they are
    submitted by the kernel. This allow for faster event processing than
    trace_printks, but has not been tested.
    
    The functionality is disabled by default, the user can enable it by
    passing a non-empty cb parameter into the BPF constructor. That cb
    function will be invoked for each event that is read from the buffer.
    Buffers are per-fd, so each event is distinct as well as separated from
    other processes that may be running simultaneously.
    
    The initial test case uses this functionality to build a histogram of
    events keyed by the callchain.
    Signed-off-by: default avatarBrenden Blanco <bblanco@plumgrid.com>
    8207d10e
libbpf.c 7.48 KB