linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Veronika Molnarova <vmolnaro@redhat.com>
Cc: Michael Petlan <mpetlan@redhat.com>,
	linux-perf-users@vger.kernel.org, irogers@google.com,
	peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
	mark.rutland@arm.com, alexander.shishkin@linux.intel.com,
	jolsa@kernel.org, adrian.hunter@intel.com,
	kan.liang@linux.intel.com
Subject: Re: [PATCH] perf trace: Keep exited threads for summary
Date: Wed, 2 Oct 2024 15:27:32 -0700	[thread overview]
Message-ID: <Zv3I1OIxrfIDtaH1@google.com> (raw)
In-Reply-To: <2ac467a9-065f-4da2-858c-04e72ce70b55@redhat.com>

On Mon, Sep 30, 2024 at 11:07:45AM +0200, Veronika Molnarova wrote:
> 
> 
> On 9/27/24 17:19, Michael Petlan wrote:
> > Since 9ffa6c7512ca ("perf machine thread: Remove exited threads by
> > default") perf cleans exited threads up, but as said, sometimes they
> > are necessary to be kept. The mentioned commit does not cover all the
> > cases, we also need the information to construct the summary table in
> > perf-trace.
> > 
> > Before:
> >     # perf trace -s true
> > 
> >      Summary of events:
> > 
> > After:
> >     # perf trace -s -- true
> > 
> >      Summary of events:
> > 
> >      true (383382), 64 events, 91.4%
> > 
> >        syscall            calls  errors  total       min       avg       max       stddev
> >                                          (msec)    (msec)    (msec)    (msec)        (%)
> >        --------------- --------  ------ -------- --------- --------- ---------     ------
> >        mmap                   8      0     0.150     0.013     0.019     0.031     11.90%
> >        mprotect               3      0     0.045     0.014     0.015     0.017      6.47%
> >        openat                 2      0     0.014     0.006     0.007     0.007      9.73%
> >        munmap                 1      0     0.009     0.009     0.009     0.009      0.00%
> >        access                 1      1     0.009     0.009     0.009     0.009      0.00%
> >        pread64                4      0     0.006     0.001     0.001     0.002      4.53%
> >        fstat                  2      0     0.005     0.001     0.002     0.003     37.59%
> >        arch_prctl             2      1     0.003     0.001     0.002     0.002     25.91%
> >        read                   1      0     0.003     0.003     0.003     0.003      0.00%
> >        close                  2      0     0.003     0.001     0.001     0.001      3.86%
> >        brk                    1      0     0.002     0.002     0.002     0.002      0.00%
> >        rseq                   1      0     0.001     0.001     0.001     0.001      0.00%
> >        prlimit64              1      0     0.001     0.001     0.001     0.001      0.00%
> >        set_robust_list        1      0     0.001     0.001     0.001     0.001      0.00%
> >        set_tid_address        1      0     0.001     0.001     0.001     0.001      0.00%
> >        execve                 1      0     0.000     0.000     0.000     0.000      0.00%
> > 
> > Fixes: 9ffa6c7512ca ("perf machine thread: Remove exited threads by default")
> > 
> > Reported-by: Veronika Molnarova <vmolnaro@redhat.com>
> > Signed-off-by: Michael Petlan <mpetlan@redhat.com>
> 
> The -S and -s option works after this patch, but --errno-summary ends with
> segfault for some reason.
> 
> Before:
> 	# perf trace --errno-summary -- true
> 
> 
>  	Summary of events:
> 
> After:
> 	# perf trace --errno-summary -- true
> 
> 	 Summary of events:
> 	
> 	 true (11386), 60 events, 90.9%
> 	
>    	   syscall            calls  errors  total       min       avg       max       stddev
>         	                             (msec)    (msec)    (msec)    (msec)        (%)
>  	   --------------- --------  ------ -------- --------- --------- ---------     ------
>    	   mmap                   8      0     0.044     0.003     0.006     0.010     15.17%
>    	   mprotect               3      0     0.014     0.004     0.005     0.005      4.56%
>    	   openat                 2      0     0.009     0.004     0.004     0.005      5.14%
>    	   munmap                 1      0     0.007     0.007     0.007     0.007      0.00%
>   	   access                 1      1     0.004     0.004     0.004     0.004      0.00%
> 	perf: Segmentation fault
> 	Obtained 12 stack frames.
> 	./perf() [0x5ae123]
> 	./perf() [0x5ae1cb]
> 	/lib64/libc.so.6(+0x3dbb0) [0x7f633845fbb0]
> 	./perf() [0x56e2fb]
> 	./perf() [0x4850b3]
> 	./perf() [0x48ee89]
> 	./perf() [0x493042]
> 	./perf() [0x49334b]
> 	./perf() [0x40ee8c]
> 	/lib64/libc.so.6(+0x27b8a) [0x7f6338449b8a]
> 	/lib64/libc.so.6(__libc_start_main+0x8b) [0x7f6338449c4b]
> 	./perf() [0x40f4b5]
> 	Segmentation fault
> 
> Will try to check what is causing this issue.

It seems like a different bug and shoul not be affected by this change.

  Program received signal SIGSEGV, Segmentation fault.
  0x000055555574cf67 in perf_env__arch_strerrno (env=0x0, err=110) at util/env.c:475
  475		if (env->arch_strerrno == NULL)
  (gdb) bt
  #0  0x000055555574cf67 in perf_env__arch_strerrno (env=0x0, err=110) at util/env.c:475
  #1  0x000055555563fc0b in thread__dump_stats (ttrace=0x55555661a220, trace=0x7fffffffaaf0, fp=0x7fffee3f24e0 <_IO_2_1_stderr_>) at builtin-trace.c:4674
  #2  0x000055555563fef8 in trace__fprintf_thread (fp=0x7fffee3f24e0 <_IO_2_1_stderr_>, thread=0x5555560f75d0, trace=0x7fffffffaaf0) at builtin-trace.c:4709
  #3  0x0000555555640112 in trace__fprintf_thread_summary (trace=0x7fffffffaaf0, fp=0x7fffee3f24e0 <_IO_2_1_stderr_>) at builtin-trace.c:4748
  #4  0x000055555563eba7 in trace__run (trace=0x7fffffffaaf0, argc=2, argv=0x7fffffffe390) at builtin-trace.c:4457
  #5  0x0000555555642a61 in cmd_trace (argc=2, argv=0x7fffffffe390) at builtin-trace.c:5484
  #6  0x0000555555648a37 in run_builtin (p=0x5555560185e8 <commands+648>, argc=5, argv=0x7fffffffe390) at perf.c:351
  #7  0x0000555555648cde in handle_internal_command (argc=5, argv=0x7fffffffe390) at perf.c:404
  #8  0x0000555555648e37 in run_argv (argcp=0x7fffffffe18c, argv=0x7fffffffe180) at perf.c:448
  #9  0x0000555555649185 in main (argc=5, argv=0x7fffffffe390) at perf.c:562

It needs to pass a non-NULL 'env' when --errno-summary is given.

Anyway, I'll pick this up.

Thanks,
Namhyung


> 
> > ---
> >  tools/perf/builtin-trace.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
> > index f6e847529073..1a12ed71c809 100644
> > --- a/tools/perf/builtin-trace.c
> > +++ b/tools/perf/builtin-trace.c
> > @@ -5449,6 +5449,10 @@ int cmd_trace(int argc, const char **argv)
> >  	if (trace.summary_only)
> >  		trace.summary = trace.summary_only;
> >  
> > +	/* Keep exited threads, otherwise information might be lost for summary */
> > +	if (trace.summary || trace.summary_only)
> > +		symbol_conf.keep_exited_threads = true;
> > +
> >  	if (output_name != NULL) {
> >  		err = trace__open_output(&trace, output_name);
> >  		if (err < 0) {
> 

  reply	other threads:[~2024-10-02 22:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-27 15:19 [PATCH] perf trace: Keep exited threads for summary Michael Petlan
2024-09-30  6:55 ` Namhyung Kim
2024-09-30  9:07 ` Veronika Molnarova
2024-10-02 22:27   ` Namhyung Kim [this message]
2024-10-03 10:36     ` Michael Petlan
2024-10-04 19:29 ` Namhyung Kim

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=Zv3I1OIxrfIDtaH1@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=mpetlan@redhat.com \
    --cc=peterz@infradead.org \
    --cc=vmolnaro@redhat.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).