mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-08 01:29:06 +08:00
libbpf: Add sample_period to creation options
Add option to set when the perf buffer should wake up, by default the perf buffer becomes signaled for every event that is being pushed to it. In case of a high throughput of events it will be more efficient to wake up only once you have X events ready to be read. So your application can wakeup once and drain the entire perf buffer. Signed-off-by: Jon Doron <jond@wiz.io> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20230207081916.3398417-1-arilou@gmail.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
6333ea6a3a
commit
8c8243a409
@@ -11673,17 +11673,22 @@ struct perf_buffer *perf_buffer__new(int map_fd, size_t page_cnt,
|
||||
const size_t attr_sz = sizeof(struct perf_event_attr);
|
||||
struct perf_buffer_params p = {};
|
||||
struct perf_event_attr attr;
|
||||
__u32 sample_period;
|
||||
|
||||
if (!OPTS_VALID(opts, perf_buffer_opts))
|
||||
return libbpf_err_ptr(-EINVAL);
|
||||
|
||||
sample_period = OPTS_GET(opts, sample_period, 1);
|
||||
if (!sample_period)
|
||||
sample_period = 1;
|
||||
|
||||
memset(&attr, 0, attr_sz);
|
||||
attr.size = attr_sz;
|
||||
attr.config = PERF_COUNT_SW_BPF_OUTPUT;
|
||||
attr.type = PERF_TYPE_SOFTWARE;
|
||||
attr.sample_type = PERF_SAMPLE_RAW;
|
||||
attr.sample_period = 1;
|
||||
attr.wakeup_events = 1;
|
||||
attr.sample_period = sample_period;
|
||||
attr.wakeup_events = sample_period;
|
||||
|
||||
p.attr = &attr;
|
||||
p.sample_cb = sample_cb;
|
||||
|
||||
Reference in New Issue
Block a user