lkml.org 
[lkml]   [2022]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v13 10/16] perf record: Introduce compressor at mmap buffer object
    From
    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
    >

    \
     
     \ /
      Last update: 2022-02-01 09:09    [W:3.116 / U:1.852 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site