From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Changbin Du <changbin.du@gmail.com>,
Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
Jiri Olsa <jolsa@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Namhyung Kim <namhyung@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 03/17] perf ftrace: add option -t/--tid to filter by thread id
Date: Fri, 17 Jul 2020 14:40:53 -0300 [thread overview]
Message-ID: <20200717174053.GE712240@kernel.org> (raw)
In-Reply-To: <20200717130124.54e85349@oasis.local.home>
Em Fri, Jul 17, 2020 at 01:01:24PM -0400, Steven Rostedt escreveu:
> On Fri, 17 Jul 2020 21:26:50 +0800
> Changbin Du <changbin.du@gmail.com> wrote:
>
> > On Thu, Jul 16, 2020 at 12:36:30PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Em Sat, Jul 11, 2020 at 08:40:21PM +0800, Changbin Du escreveu:
> > > > This allows us to trace single thread instead of the whole process.
> > > >
> > > > Signed-off-by: Changbin Du <changbin.du@gmail.com>
> > > > ---
> > > > tools/perf/Documentation/perf-ftrace.txt | 4 ++++
> > > > tools/perf/builtin-ftrace.c | 2 ++
> > > > 2 files changed, 6 insertions(+)
> > > >
> > > > diff --git a/tools/perf/Documentation/perf-ftrace.txt b/tools/perf/Documentation/perf-ftrace.txt
> > > > index d79560dea19f..e204bf6d50d8 100644
> > > > --- a/tools/perf/Documentation/perf-ftrace.txt
> > > > +++ b/tools/perf/Documentation/perf-ftrace.txt
> > > > @@ -38,6 +38,10 @@ OPTIONS
> > > > --pid=::
> > > > Trace on existing process id (comma separated list).
> > > >
> > > > +-t::
> > > > +--tid=::
> > > > + Trace on existing thread id (comma separated list).
> > > > +
> > > Humm, I just tried:
> > > [root@five ~]# yes > /dev/null &
> > > [1] 18265
> > > [root@five ~]# perf ftrace --tid 18265
> > > ^C[root@five ~]#
> > > After waiting for a while, nothing, what am I doing wrong?
> > I got it wrong. Currently ftrace only can filter by pid. If the pid is not
> > the main thread it won't work.
> Wait what?
> The "pid" for ftrace is really a "task id" which is a thread id.
> [root@bxtest ~]# yes > /dev/null &
> [1] 6799
> [root@bxtest ~]# trace-cmd record -e all -P 6799
> Hit Ctrl^C to stop recording
> ^CCPU 0: 3573031 events lost
> CPU0 data recorded at offset=0x838000
> 627675136 bytes in size
> CPU1 data recorded at offset=0x25ed1000
> 0 bytes in size
> CPU2 data recorded at offset=0x25ed1000
> 0 bytes in size
> CPU3 data recorded at offset=0x25ed1000
> 0 bytes in size
> CPU4 data recorded at offset=0x25ed1000
> 0 bytes in size
> CPU5 data recorded at offset=0x25ed1000
> 0 bytes in size
> CPU6 data recorded at offset=0x25ed1000
> 0 bytes in size
> CPU7 data recorded at offset=0x25ed1000
> 0 bytes in size
> [root@bxtest ~]# trace-cmd report | head
> CPU 1 is empty
> CPU 2 is empty
> CPU 3 is empty
> CPU 4 is empty
> CPU 5 is empty
> CPU 6 is empty
> CPU 7 is empty
> cpus=8
> yes-6799 [000] 67825.580902: sys_exit: NR 1 = 8192
> yes-6799 [000] 67825.580903: sys_exit_write: 0x2000
>
>
> What's different about tid vs pid?
Say you use:
^C[root@ssdandy ~]# cyclictest --smp -um -p95
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.05 0.03 0.06 2/409 29072
T: 0 (29065) P:95 I:1000 C: 518 Min: 2 Act: 2 Avg: 2 Max: 6
T: 1 (29066) P:95 I:1500 C: 343 Min: 2 Act: 2 Avg: 2 Max: 5
T: 2 (29067) P:95 I:2000 C: 256 Min: 2 Act: 2 Avg: 2 Max: 7
T: 3 (29068) P:95 I:2500 C: 203 Min: 2 Act: 2 Avg: 2 Max: 5
T: 4 (29069) P:95 I:3000 C: 168 Min: 2 Act: 2 Avg: 3 Max: 6
T: 5 (29070) P:95 I:3500 C: 143 Min: 2 Act: 2 Avg: 2 Max: 6
T: 6 (29071) P:95 I:4000 C: 124 Min: 2 Act: 2 Avg: 2 Max: 7
T: 7 (29072) P:95 I:4500 C: 110 Min: 2 Act: 2 Avg: 2 Max:
Then we do:
# pidof cyclictest
29064
#
If we use:
[root@ssdandy ~]# perf record --pid 29064
^C[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.052 MB perf.data (866 samples) ]
[root@ssdandy ~]# perf report --task
# pid tid ppid comm
0 0 -1 |swapper
29064 29064 -1 |cyclictest
29064 29065 -1 |cyclictest
29064 29066 -1 |cyclictest
29064 29067 -1 |cyclictest
29064 29068 -1 |cyclictest
29064 29069 -1 |cyclictest
29064 29070 -1 |cyclictest
29064 29071 -1 |cyclictest
29064 29072 -1 |cyclictest
[root@ssdandy ~]#
If we are interested only on the thread running on CPU3 we can do:
[root@ssdandy ~]# perf report --task
# pid tid ppid comm
0 0 -1 |swapper
29064 29064 -1 |cyclictest
29064 29068 -1 |cyclictest
[root@ssdandy ~]#
The first 29064 is just to have info on who created 29068, i.e.:
Its just the synthesized info for 29068 creator:
[root@ssdandy ~]# perf report -D | grep -w 29064/29064
0 0x4690 [0x30]: PERF_RECORD_COMM: cyclictest:29064/29064
0 0x46c0 [0x70]: PERF_RECORD_MMAP2 29064/29064: [0x400000(0xa000) @ 0 fd:00 136246288 0]: r-xp /usr/bin/cyclictest
0 0x4730 [0x80]: PERF_RECORD_MMAP2 29064/29064: [0x7f990f505000(0x15000) @ 0 fd:00 201479398 0]: r-xp /usr/lib64/libgcc_s-4.8.5-20150702.so.1
0 0x47b0 [0x70]: PERF_RECORD_MMAP2 29064/29064: [0x7f990f71b000(0x1c3000) @ 0 fd:00 201334455 0]: r-xp /usr/lib64/libc-2.17.so
0 0x4820 [0x78]: PERF_RECORD_MMAP2 29064/29064: [0x7f990fae9000(0xa000) @ 0 fd:00 204604380 0]: r-xp /usr/lib64/libnuma.so.1.0.0
0 0x4898 [0x78]: PERF_RECORD_MMAP2 29064/29064: [0x7f990fcf5000(0x17000) @ 0 fd:00 201335636 0]: r-xp /usr/lib64/libpthread-2.17.so
0 0x4910 [0x78]: PERF_RECORD_MMAP2 29064/29064: [0x7f990ff11000(0x7000) @ 0 fd:00 201335640 0]: r-xp /usr/lib64/librt-2.17.so
0 0x4988 [0x70]: PERF_RECORD_MMAP2 29064/29064: [0x7f9910119000(0x22000) @ 0 fd:00 203595299 0]: r-xp /usr/lib64/ld-2.17.so
0 0x49f8 [0x60]: PERF_RECORD_MMAP2 29064/29064: [0x7fff0b52d000(0x2000) @ 0 00:00 0 0]: r-xp [vdso]
0 0x4a58 [0x68]: PERF_RECORD_MMAP2 29064/29064: [0xffffffffff600000(0x1000) @ 0 00:00 0 0]: r-xp [vsyscall]
[root@ssdandy ~]#
No PERF_RECORD_SAMPLEs.
Those are only for:
[root@ssdandy ~]# perf report -D | grep PERF_RECORD_SAMPLE | head -5
147224656598815 0x4ac0 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4001): 29064/29068: 0xffffffffa8e5b568 period: 1 addr: 0
147224656606270 0x4ae8 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4001): 29064/29068: 0xffffffffa8e5b568 period: 1 addr: 0
147224656611284 0x4b10 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4001): 29064/29068: 0xffffffffa8e5b568 period: 5 addr: 0
147224656616225 0x4b38 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4001): 29064/29068: 0xffffffffa8e5b568 period: 35 addr: 0
147224656621152 0x4b60 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4001): 29064/29068: 0xffffffffa8e5b568 period: 252 addr: 0
[root@ssdandy ~]#
[root@ssdandy ~]# perf report -D | grep PERF_RECORD_SAMPLE | cut -d: -f3 | sort -u
29064/29068
[root@ssdandy ~]#
Is there a way in ftrace to ask for a pid and its children? Pre-existing
and and new ones the --pid specified will create after we start
monitoring?
- Arnaldo
next prev parent reply other threads:[~2020-07-17 17:40 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-11 12:40 [PATCH v5 00/17] perf: ftrace enhancement Changbin Du
2020-07-11 12:40 ` [PATCH v5 01/17] perf ftrace: select function/function_graph tracer automatically Changbin Du
2020-07-11 12:40 ` [PATCH v5 02/17] perf ftrace: add option '-F/--funcs' to list available functions Changbin Du
2020-07-13 1:49 ` Namhyung Kim
2020-07-16 15:21 ` Arnaldo Carvalho de Melo
2020-07-17 13:58 ` Changbin Du
2020-07-17 15:05 ` Steven Rostedt
2020-07-17 16:21 ` Arnaldo Carvalho de Melo
2020-07-17 16:27 ` Steven Rostedt
2020-07-17 16:37 ` Arnaldo Carvalho de Melo
2020-07-18 7:06 ` Changbin Du
2020-07-17 17:39 ` Ian Rogers
2020-07-11 12:40 ` [PATCH v5 03/17] perf ftrace: add option -t/--tid to filter by thread id Changbin Du
2020-07-16 15:36 ` Arnaldo Carvalho de Melo
2020-07-17 13:26 ` Changbin Du
2020-07-17 16:44 ` Arnaldo Carvalho de Melo
2020-07-17 17:01 ` Steven Rostedt
2020-07-17 17:40 ` Arnaldo Carvalho de Melo [this message]
2020-07-17 17:53 ` Steven Rostedt
2020-07-17 19:34 ` Arnaldo Carvalho de Melo
2020-07-17 19:44 ` Steven Rostedt
2020-07-21 13:44 ` Namhyung Kim
2020-07-18 5:47 ` Changbin Du
2020-07-11 12:40 ` [PATCH v5 04/17] perf ftrace: factor out function write_tracing_file_int() Changbin Du
2020-07-11 12:40 ` [PATCH v5 05/17] perf ftrace: add option '-m/--buffer-size' to set per-cpu buffer size Changbin Du
2020-07-11 12:40 ` [PATCH v5 06/17] perf ftrace: show trace column header Changbin Du
2020-07-11 12:40 ` [PATCH v5 07/17] perf ftrace: add option '--inherit' to trace children processes Changbin Du
2020-07-13 1:59 ` Namhyung Kim
2020-07-17 14:27 ` Changbin Du
2020-07-11 12:40 ` [PATCH v5 08/17] perf: util: add general function to parse sublevel options Changbin Du
2020-07-11 12:40 ` [PATCH v5 09/17] perf ftrace: add support for tracing option 'func_stack_trace' Changbin Du
2020-07-11 12:40 ` [PATCH v5 10/17] perf ftrace: add support for trace option sleep-time Changbin Du
2020-07-11 12:40 ` [PATCH v5 11/17] perf ftrace: add support for trace option funcgraph-irqs Changbin Du
2020-07-11 12:40 ` [PATCH v5 12/17] perf ftrace: add support for tracing option 'irq-info' Changbin Du
2020-07-11 12:40 ` [PATCH v5 13/17] perf ftrace: add option 'verbose' to show more info for graph tracer Changbin Du
2020-07-13 2:07 ` Namhyung Kim
2020-07-17 14:13 ` Changbin Du
2020-07-11 12:40 ` [PATCH v5 14/17] perf ftrace: add support for trace option tracing_thresh Changbin Du
2020-07-11 12:40 ` [PATCH v5 15/17] perf: ftrace: allow set graph depth by '--graph-opts' Changbin Du
2020-07-11 12:40 ` [PATCH v5 16/17] perf ftrace: add option -D/--delay to delay tracing Changbin Du
2020-07-11 12:40 ` [PATCH v5 17/17] perf ftrace: add change log Changbin Du
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=20200717174053.GE712240@kernel.org \
--to=acme@kernel.org \
--cc=arnaldo.melo@gmail.com \
--cc=changbin.du@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.