perf record: Implement compression for AIO trace streaming
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: Alexey Budankov <alexey.budankov@linux.intel.com> Reviewed-by: Jiri 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.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
5d7f411649
commit
ef781128e4
@ -101,18 +101,6 @@ union perf_event *perf_mmap__read_event(struct perf_mmap *map);
|
||||
|
||||
int perf_mmap__push(struct perf_mmap *md, void *to,
|
||||
int push(struct perf_mmap *map, void *to, void *buf, size_t size));
|
||||
#ifdef HAVE_AIO_SUPPORT
|
||||
int perf_mmap__aio_push(struct perf_mmap *md, void *to, int idx,
|
||||
int push(void *to, struct aiocb *cblock, void *buf, size_t size, off_t off),
|
||||
off_t *off);
|
||||
#else
|
||||
static inline int perf_mmap__aio_push(struct perf_mmap *md __maybe_unused, void *to __maybe_unused, int idx __maybe_unused,
|
||||
int push(void *to, struct aiocb *cblock, void *buf, size_t size, off_t off) __maybe_unused,
|
||||
off_t *off __maybe_unused)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
size_t perf_mmap__mmap_len(struct perf_mmap *map);
|
||||
|
||||
|
Reference in New Issue
Block a user