Perf buffer lost events not reaching callback

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

 



Hello!

I have recently encountered some strange behavior regarding perf
buffer lost events (the percpu kind, not the newer ring buffer). In
libbpfgo, we pass a callback written in go into the libbpf
perf_buffer__new constructor, which, when a lost event count is
generated, passes it into a channel exported for consumers. This has
been working well for a while now. However, we’ve recently encountered
cases where bpf_perf_event_output will return a negative errno (ENOSPC
in this case), and no lost event will be reported. Further, when
adding some prints into that callback, none of them show up, which
indicates that the callback isn’t being triggered at all.
We only found this since we’ve introduced a separate counting map
which handles negative returns from the output call. Curiously, from
the source code I’ve found, this is just the errno currently returned
when submit fails, also due to reasons of a full buffer (but also
sometimes when the rcu pointer dereference fails). But in any case,
the counter for lost events is always updated, at least as far as the
source code shows.

Has anyone encountered this kind of behavior before?

Thanks in advance!
Nadav Strahilevitz





[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