All of lore.kernel.org
 help / color / mirror / Atom feed
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 16:34:55 -0300	[thread overview]
Message-ID: <20200717193455.GD77866@kernel.org> (raw)
In-Reply-To: <20200717135351.5fb1ce95@oasis.local.home>

Em Fri, Jul 17, 2020 at 01:53:51PM -0400, Steven Rostedt escreveu:
> On Fri, 17 Jul 2020 14:40:53 -0300 Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
 
> > 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 ~]#

> "ftrace" is inside the kernel. But you could specify all those PIDs in
> the set_ftrace_pid and set_event_pid files, and they will be traced. If
> you want to trace the children of those PIDs, you would need to set the
> options function function-fork and event-fork respectively. And then
> any time a process with a pid in the set_ftrace_pid or set_event_pid
> file forks, its child will also be added to that file and it too will
> be traced. If the fork options are set, then when a task exits, its pid
> will be removed from the file.

>  echo 1 > options/function-fork
>  echo 1 > options/event-fork

cool, so its possible to have the same sort of behaviour one expects
using --pid or --tid and --inherit with perf record/trace/top/etc

Its just some confusion about what perf understands by --pid and --tid
and the jargon used by ftrace, we can make 'perf ftrace' use the knobs
you mentioned and achieve the expected results as with other perf
subcommands, good.
 
> > 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
 
> The above can somewhat be done in trace-cmd, but not fully. But that's
> all userspace commands, nothing with the kernel.
 
> > [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?
 
> As described above, yes. :-)

Changbin, you can take from here :-)

And to reiterate, for me the value of 'perf ftrace' is to allow people
used to perf to be able to switch to ftrace quickly, just changing:

   perf record/top/stat/trace/report/script/etc --pid 1234

by:

   perf ftrace --pid 1234

And have the tracefs ftrace knobs set up to have what is expected in
terms of targets to trace as the other perf tools.

And not just --pid and --tid, but --cgroup, --cpu, etc.

i.e., 'perf ftrace' being _a_ front-end aplication to ftrace.

:-)

- Arnaldo

  reply	other threads:[~2020-07-17 19:35 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
2020-07-17 17:53           ` Steven Rostedt
2020-07-17 19:34             ` Arnaldo Carvalho de Melo [this message]
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=20200717193455.GD77866@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.