public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Alexey Budankov <alexey.budankov@linux.intel.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andi Kleen <ak@linux.intel.com>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v7 10/12] perf report: implement record trace decompression
Date: Wed, 13 Mar 2019 18:55:29 +0300	[thread overview]
Message-ID: <fee1ca34-eaa4-75c4-60bb-72a7b18fdd1a@linux.intel.com> (raw)
In-Reply-To: <20190313143719.GF6676@krava>


On 13.03.2019 17:37, Jiri Olsa wrote:
> On Tue, Mar 12, 2019 at 08:36:18AM +0300, Alexey Budankov wrote:
> 
> SBIP
> 
>> +#ifdef HAVE_ZSTD_SUPPORT
>> +static int perf_session__process_compressed_event(struct perf_session *session,
>> +					union perf_event *event, u64 file_offset)
>> +{
>> +	void *src;
>> +	size_t decomp_size, src_size;
>> +	u64 decomp_last_rem = 0;
>> +	size_t decomp_len = session->header.env.comp_mmap_len;
>> +	struct decomp *decomp, *decomp_last = session->decomp_last;
>> +
>> +	decomp = mmap(NULL, sizeof(struct decomp) + decomp_len, PROT_READ|PROT_WRITE,
>> +		      MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
>> +	if (decomp == MAP_FAILED) {
>> +		pr_err("Couldn't allocate memory for decompression\n");
>> +		return -1;
>> +	}
> 
> ok, I see the need to keep this decomp around, we need the event
> to be there the whole time, like the mmap for the standard events
> 
> we know the total uncompressed size when record is done, right?
> could we save it in the COMPRESSED feature and alloc all the
> needed uncompressed data in single mmap?

It can be not that good idea. The required contiguous memory 
region can be really huge to be allocated. Plain malloc()'s are 
also not good. I was observing OOM in perf report process when 
loading traces of several GiBs. So smaller, page size granularity,
linked memory regions performed the best in my experiments.

~Alexey

> 
> jirka
> 

  reply	other threads:[~2019-03-13 15:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-12  4:57 [PATCH v7 00/12] perf: enable compression of record mode trace to save storage space Alexey Budankov
2019-03-12  5:03 ` [PATCH v7 01/12] feature: implement libzstd check, LIBZSTD_DIR and NO_LIBZSTD defines Alexey Budankov
2019-03-12  5:12 ` [PATCH v7 02/12] perf record: implement -f,--mmap-flush=<threshold> option Alexey Budankov
2019-03-13 14:36   ` Jiri Olsa
2019-03-13 15:00     ` Alexey Budankov
2019-03-12  5:15 ` [PATCH v7 03/12] perf session: define bytes_transferred and bytes_compressed metrics Alexey Budankov
2019-03-12  5:17 ` [PATCH v7 04/12] perf record: implement COMPRESSED event record and its attributes Alexey Budankov
2019-03-12  5:20 ` [PATCH v7 05/12] perf mmap: implement dedicated memory buffer for data compression Alexey Budankov
2019-03-12  5:23 ` [PATCH v7 06/12] perf util: introduce Zstd based streaming compression API Alexey Budankov
2019-03-13 14:37   ` Jiri Olsa
2019-03-13 15:06     ` Alexey Budankov
2019-03-12  5:25 ` [PATCH v7 07/12] perf record: implement compression for serial trace streaming Alexey Budankov
2019-03-12  5:30 ` [PATCH v7 08/12] perf record: implement compression for AIO " Alexey Budankov
2019-03-13 14:36   ` Jiri Olsa
2019-03-13 15:33     ` Alexey Budankov
2019-03-13 14:37   ` Jiri Olsa
2019-03-12  5:32 ` [PATCH v7 09/12] perf record: implement -z,--compression_level=n option Alexey Budankov
2019-03-12  5:36 ` [PATCH v7 10/12] perf report: implement record trace decompression Alexey Budankov
2019-03-13 14:37   ` Jiri Olsa
2019-03-13 15:55     ` Alexey Budankov [this message]
2019-03-14  9:01       ` Jiri Olsa
2019-03-12  5:37 ` [PATCH v7 11/12] perf inject: enable COMPRESSED records decompression Alexey Budankov
2019-03-12  5:38 ` [PATCH v7 12/12] perf tests: implement Zstd comp/decomp integration test Alexey Budankov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fee1ca34-eaa4-75c4-60bb-72a7b18fdd1a@linux.intel.com \
    --to=alexey.budankov@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox