• Alexey Budankov's avatar
    perf record: Implement compression for AIO trace streaming · ef781128
    Alexey Budankov authored
    Compression is implemented using the functions from zstd.c. As the memory
    to operate on the compression uses mmap->aio.data[] buffers. If Zstd
    streaming compression API fails for some reason the data to be compressed
    are just copied into the memory buffers using plain memcpy().
    
    Compressed trace frame consists of an array of PERF_RECORD_COMPRESSED
    records. Each element of the array is not longer that PERF_SAMPLE_MAX_SIZE
    and consists of perf_event_header followed by the compressed chunk
    that is decompressed on the loading stage.
    
    perf_mmap__aio_push() is replaced by perf_mmap__push() which is now used
    in the both serial and AIO streaming cases. perf_mmap__push() is extended
    with positive return values to signify absence of data ready for
    processing.
    Signed-off-by: default avatarAlexey Budankov <alexey.budankov@linux.intel.com>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/77db2b2c-5d03-dbb0-aeac-c4dd92129ab9@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ef781128
mmap.c 13.1 KB