linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Bayduraev, Alexey V" <alexey.v.bayduraev@linux.intel.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Andi Kleen <ak@linux.intel.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Alexander Antonov <alexander.antonov@linux.intel.com>,
	Alexei Budankov <abudankov@huawei.com>,
	Riccardo Mancini <rickyman7@gmail.com>
Subject: Re: [PATCH v8 12/22] perf report: Output data file name in raw trace dump
Date: Fri, 2 Jul 2021 01:46:19 +0300	[thread overview]
Message-ID: <00079cfd-9524-9427-9817-4f1c2eacf89f@linux.intel.com> (raw)
In-Reply-To: <YNy5xERHrtldjIM8@kernel.org>


On 30.06.2021 21:36, Arnaldo Carvalho de Melo wrote:
> Em Wed, Jun 30, 2021 at 06:54:51PM +0300, Alexey Bayduraev escreveu:
<SNIP>
>> @@ -2116,9 +2127,9 @@ static int __perf_session__process_decomp_events(struct perf_session *session)
>>  			break;
>>  
>>  		size = event->header.size;
>> -
>> -		if (size < sizeof(struct perf_event_header) ||
>> -		    (skip = perf_session__process_event(session, event, file_pos)) < 0) {
> 
> 
> The call to perf_session__process_event() will not be made if
> 
>   (size < sizeof(struct perf_event_header)
> 
> evaluates to true, with your change it is being made unconditionally,
> also before it was using that file_pos variable, set to zero and
> possibly modified by the logic in this function.
> 
> And I read just "perf report: Output data file name in raw trace", so
> when I saw this separate change to pass 'decomp->file_pos' and remove
> that 'file_pos = 0' part I scratched my head, then I read again the
> commit log messsage and there it says it also does this separate change.
> 
> Please make it separate patch where you explain why this has to be done
> this way and what previous cset this fixes, so that the
> stable@kernel.org guys pick it as it sounds like a fix.

As I understand it, file_pos is mostly used to show file offset
in dump_event(), like:

_0x17cf08_ [0x28]: event: 9

In current implementation file_pos is always 0 for _uncompressed_ events:

0 [0x28]: event: 9

Also file_pos is used to do lseek() for some user events:
PERF_RECORD_HEADER_TRACING_DATA, PERF_RECORD_AUXTRACE. etc.

As long as the compressed event container does not contain user events,
everything is fine. Currently only CPU events are compressed.

We can only fix zero offset for uncompressed events in dump_event(),
unfortunately we cannot show the original file offset because we
uncompress the entire compressed container and do not know compressed
size of each event in the container.

Thus we have 3 options:

1. Show for each uncompressed event decomp->file_pos: offset to 
   compressed container event:

    We will see a series of CPU events with the same file offset.
    This is done by this patch.

2. Show decomp->file_pos + offset in uncompressed buffer.

    We will see a series of CPU events with overlapping file offsets.
    Better is to show something like file_pos:uncompressed_pos,
    but this would require changing all calls to dump_event(). 

3. Keep 0

What in your opinion is more preferable?

> 
>> +		skip = perf_session__process_event(session, event, decomp->file_pos,
>> +						   decomp->file_path);
>> +		if (size < sizeof(struct perf_event_header) || skip < 0) {
>>  			pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
>>  				decomp->file_pos + decomp->head, event->header.size, event->header.type);
>>  			return -EINVAL;

Also checking of

  (size < sizeof(struct perf_event_header))

after perf_session__process_event() is incorrect.

Thanks,
Alexey

>> @@ -2149,10 +2160,12 @@ struct reader;
<SNIP>

  reply	other threads:[~2021-07-01 22:46 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-30 15:54 [PATCH v8 00/22] Introduce threaded trace streaming for basic perf record operation Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 01/22] perf record: Introduce thread affinity and mmap masks Alexey Bayduraev
2021-06-30 16:17   ` Arnaldo Carvalho de Melo
2021-06-30 16:28     ` Arnaldo Carvalho de Melo
2021-07-01 13:05     ` Bayduraev, Alexey V
2021-07-01 14:23       ` Arnaldo Carvalho de Melo
2021-06-30 15:54 ` [PATCH v8 02/22] perf record: Introduce thread specific data array Alexey Bayduraev
2021-06-30 16:26   ` Arnaldo Carvalho de Melo
2021-06-30 17:18   ` Arnaldo Carvalho de Melo
2021-06-30 15:54 ` [PATCH v8 03/22] perf record: Introduce thread local variable Alexey Bayduraev
2021-06-30 17:16   ` Arnaldo Carvalho de Melo
2021-07-01 17:22     ` Bayduraev, Alexey V
2021-06-30 15:54 ` [PATCH v8 04/22] perf record: Stop threads in the end of trace streaming Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 05/22] perf record: Start threads in the beginning " Alexey Bayduraev
2021-06-30 17:21   ` Arnaldo Carvalho de Melo
2021-06-30 15:54 ` [PATCH v8 06/22] perf record: Introduce data file at mmap buffer object Alexey Bayduraev
2021-06-30 17:23   ` Arnaldo Carvalho de Melo
2021-07-01 16:41     ` Bayduraev, Alexey V
2021-07-01 17:28       ` Arnaldo Carvalho de Melo
2021-06-30 15:54 ` [PATCH v8 07/22] perf record: Introduce data transferred and compressed stats Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 08/22] perf record: Init data file at mmap buffer object Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 09/22] tools lib: Introduce bitmap_intersects() operation Alexey Bayduraev
2021-06-30 17:24   ` Arnaldo Carvalho de Melo
2021-06-30 17:33     ` Bayduraev, Alexey V
2021-06-30 17:42     ` Arnaldo Carvalho de Melo
2021-06-30 15:54 ` [PATCH v8 10/22] perf record: Introduce --threads=<spec> command line option Alexey Bayduraev
2021-06-30 17:28   ` Arnaldo Carvalho de Melo
2021-06-30 18:54     ` Bayduraev, Alexey V
2021-07-01 11:50       ` Bayduraev, Alexey V
2021-07-01 14:26         ` Arnaldo Carvalho de Melo
2021-07-01 18:14           ` Bayduraev, Alexey V
2021-06-30 15:54 ` [PATCH v8 11/22] perf record: Document parallel data streaming mode Alexey Bayduraev
2021-06-30 17:28   ` Arnaldo Carvalho de Melo
2021-06-30 15:54 ` [PATCH v8 12/22] perf report: Output data file name in raw trace dump Alexey Bayduraev
2021-06-30 18:36   ` Arnaldo Carvalho de Melo
2021-07-01 22:46     ` Bayduraev, Alexey V [this message]
2021-06-30 15:54 ` [PATCH v8 13/22] perf session: Move reader structure to the top Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 14/22] perf session: Introduce reader_state in reader object Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 15/22] perf session: Introduce reader objects in session object Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 16/22] perf session: Introduce decompressor into trace reader object Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 17/22] perf session: Move init into reader__init function Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 18/22] perf session: Move map/unmap into reader__mmap function Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 19/22] perf session: Load single file for analysis Alexey Bayduraev
2021-06-30 15:54 ` [PATCH v8 20/22] perf session: Load data directory files " Alexey Bayduraev
2021-07-02 10:30   ` Jiri Olsa
2021-07-02 12:04     ` Bayduraev, Alexey V
2021-06-30 15:55 ` [PATCH v8 21/22] perf session: Introduce READER_NODATA state Alexey Bayduraev
2021-07-01 10:08   ` Bayduraev, Alexey V
2021-06-30 15:55 ` [PATCH v8 22/22] perf record: Introduce record__bytes_written and fix --max-size option Alexey Bayduraev

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=00079cfd-9524-9427-9817-4f1c2eacf89f@linux.intel.com \
    --to=alexey.v.bayduraev@linux.intel.com \
    --cc=abudankov@huawei.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.antonov@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 \
    --cc=rickyman7@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).