Re: [PATCH v11 1/3]: perf util: map data buffer for preserving collected data

From: Jiri Olsa
Date: Mon Oct 08 2018 - 06:50:54 EST


On Mon, Oct 08, 2018 at 09:14:29AM +0300, Alexey Budankov wrote:
>
> The map->data buffer is used to preserve map->base profiling data
> for writing to disk. AIO map->cblock is used to queue corresponding
> map->data buffer for asynchronous writing.
>
> Signed-off-by: Alexey Budankov <alexey.budankov@xxxxxxxxxxxxxxx>
> ---
> Changes in v10:
> - moved specific code to perf_mmap__aio_mmap(), perf_mmap__aio_munmap()
> - adjusted error reporting by using %m
> Changes in v9:
> - implemented NO_AIO and HAVE_AIO_SUPPORT defines to cover cases of
> libc implementations without Posix AIO API support
> Changes in v7:
> - implemented handling record.aio setting from perfconfig file
> Changes in v6:
> - adjusted setting of priorities for cblocks;
> Changes in v5:
> - reshaped layout of data structures;
> - implemented --aio option;
> Changes in v4:
> - converted mmap()/munmap() to malloc()/free() for mmap->data buffer management
> Changes in v2:
> - converted zalloc() to calloc() for allocation of mmap_aio array,
> - cleared typo and adjusted fallback branch code;
> ---
> tools/perf/Makefile.config | 5 +++++
> tools/perf/Makefile.perf | 7 ++++++-
> tools/perf/util/evlist.c | 4 +++-
> tools/perf/util/mmap.c | 48 +++++++++++++++++++++++++++++++++++++++++++++-
> tools/perf/util/mmap.h | 11 +++++++++++
> 5 files changed, 72 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index f6d1a03c7523..2e90f4ce9214 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -355,6 +355,11 @@ endif # NO_LIBELF
>
> ifeq ($(feature-glibc), 1)
> CFLAGS += -DHAVE_GLIBC_SUPPORT
> + ifndef NO_AIO

hum, do we need NO_AIO? we have the --aio option to enable that right?
I guess BIONIC does not support aio, but but will it fail when it's
compiled in there?

jirka

> + ifndef BIONIC
> + CFLAGS += -DHAVE_AIO_SUPPORT
> + endif
> + endif
> endif

SNIP