Messages in this thread | | | Date | Tue, 1 Feb 2022 11:08:49 +0300 | Subject | Re: [PATCH v13 10/16] perf record: Introduce compressor at mmap buffer object | From | "Bayduraev, Alexey V" <> |
| |
On 01.02.2022 0:56, Arnaldo Carvalho de Melo wrote: > Em Mon, Jan 17, 2022 at 09:34:30PM +0300, Alexey Bayduraev escreveu: >> Introduce compressor object into mmap object so it could be used to >> pack the data stream from the corresponding kernel data buffer. >> Initialize and make use of the introduced per mmap compressor.
SNIP
>> --- a/tools/perf/util/mmap.c >> +++ b/tools/perf/util/mmap.c >> @@ -230,6 +230,10 @@ void mmap__munmap(struct mmap *map) >> { >> bitmap_free(map->affinity_mask.bits); >> >> +#ifndef PYTHON_PERF >> + zstd_fini(&map->zstd_data); >> +#endif >> + > > Exposing this build detail in the main source code seems ugly, casual > readers will scratch their heads trying to figure this out, so either > we should have this behind some macro that hides these deps on a header > file or add a comment stating why this is needed.
This is quick fix for the fact that the perf.so library for Python is not compiled with -lzstd, but it includes mmap.c. Probably adding stub macro to mmap.h would be better.
Regards, Alexey
> > >> perf_mmap__aio_munmap(map); >> if (map->data != NULL) { >> munmap(map->data, mmap__mmap_len(map)); >> @@ -292,6 +296,12 @@ int mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, struct perf_cpu >> map->core.flush = mp->flush; >> >> map->comp_level = mp->comp_level; >> +#ifndef PYTHON_PERF >> + if (zstd_init(&map->zstd_data, map->comp_level)) { >> + pr_debug2("failed to init mmap commpressor, error %d\n", errno); >> + return -1; >> + } >> +#endif >> >> if (map->comp_level && !perf_mmap__aio_enabled(map)) { >> map->data = mmap(NULL, mmap__mmap_len(map), PROT_READ|PROT_WRITE, >> diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h >> index 62f38d7977bb..cd8b0777473b 100644 >> --- a/tools/perf/util/mmap.h >> +++ b/tools/perf/util/mmap.h >> @@ -15,6 +15,7 @@ >> #endif >> #include "auxtrace.h" >> #include "event.h" >> +#include "util/compress.h" >> >> struct aiocb; >> >> @@ -46,6 +47,7 @@ struct mmap { >> void *data; >> int comp_level; >> struct perf_data_file *file; >> + struct zstd_data zstd_data; >> }; >> >> struct mmap_params { >> -- >> 2.19.0 >
| |