[PATCH 0/6] perf core: Read from overwrite ring buffer

From: Wang Nan
Date: Tue Jan 19 2016 - 06:19:06 EST


This patchset introduces two methods to support reading from overwrite.

1) Tailsize: write the size of an event at the end of it
2) Backward writing: write the ring buffer from the end of it to the
beginning.

Patch 1/6 introduces a new ioctl operation to pause and resume ring
buffer since reading from a overwrite ring buffer is not reliable.

To reduce overhead as much as possible, force setting overflow_handler
and create specific function for backward writing and onward writing.

Cc: He Kuang <hekuang@xxxxxxxxxx>
Cc: Alexei Starovoitov <ast@xxxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
Cc: Brendan Gregg <brendan.d.gregg@xxxxxxxxx>
Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Zefan Li <lizefan@xxxxxxxxxx>
Cc: pi3orama@xxxxxxx

Wang Nan (6):
perf core: Introduce new ioctl options to pause and resume ring buffer
perf core: Set event's default overflow_handler
perf core: Prepare writing into ring buffer from end
perf core: Add backwork attribute to perf event
perf core: Reduce perf event output overhead by setting overwrite
handler
perf/core: Put size of a sample at the end of it by
PERF_SAMPLE_TAILSIZE

include/linux/perf_event.h | 39 +++++++---
include/uapi/linux/perf_event.h | 7 +-
kernel/events/core.c | 155 +++++++++++++++++++++++++++++++---------
kernel/events/internal.h | 11 +++
kernel/events/ring_buffer.c | 65 ++++++++++++++---
5 files changed, 223 insertions(+), 54 deletions(-)

--
1.8.3.4