public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jiri Olsa <jolsa@redhat.com>, LKML <linux-kernel@vger.kernel.org>,
	David Ahern <dsahern@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Andi Kleen <andi@firstfloor.org>, Wang Nan <wangnan0@huawei.com>
Subject: Re: [RFC/PATCHSET 0/6] perf tools: Support dynamic sort keys for tracepoints (v1)
Date: Mon, 14 Dec 2015 14:47:23 -0300	[thread overview]
Message-ID: <20151214174723.GT6843@kernel.org> (raw)
In-Reply-To: <1450107973-2447-1-git-send-email-namhyung@kernel.org>

Em Tue, Dec 15, 2015 at 12:46:07AM +0900, Namhyung Kim escreveu:
> Hello,
> 
> This is an attempt to improve perf to deal with tracepoint events
> better.  The perf tools can handle tracepoint events but perf report
> on them is less useful since they're always sampled in a fixed
> location and not provide event specific info.  We can use perf script
> but I always wishes there's more convenient way to see the result.
> 
> I suggest dynamic sort keys created for each event.field on demand.
> Consider following example:
> 
>   # Overhead  Command          Shared Object     Symbol
>   # ........  ...............  ................  ..............
>   #
>       47.22%  swapper          [kernel.vmlinux]  [k] __schedule
>       21.67%  transmission-gt  [kernel.vmlinux]  [k] __schedule
>        8.23%  netctl-auto      [kernel.vmlinux]  [k] __schedule
>        5.53%  kworker/0:1H     [kernel.vmlinux]  [k] __schedule
>        1.98%  Xephyr           [kernel.vmlinux]  [k] __schedule
>        1.33%  irq/33-iwlwifi   [kernel.vmlinux]  [k] __schedule
>        1.17%  wpa_cli          [kernel.vmlinux]  [k] __schedule
>        1.13%  rcu_preempt      [kernel.vmlinux]  [k] __schedule
>        0.85%  ksoftirqd/0      [kernel.vmlinux]  [k] __schedule
>        0.77%  Timer            [kernel.vmlinux]  [k] __schedule
>   ...
> 
> Currently perf report only shows this but important info is on the
> event fields, that is:
> 
>   # sudo cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
>   name: sched_switch
>   ID: 268
>   format:
>     field:unsigned short common_type;         offset:0; size:2; signed:0;
>     field:unsigned char common_flags;         offset:2; size:1; signed:0;
>     field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
>     field:int common_pid;                     offset:4; size:4; signed:1;
> 
>     field:char prev_comm[16]; offset:8;  size:16; signed:1;
>     field:pid_t prev_pid;     offset:24; size:4;  signed:1;
>     field:int prev_prio;      offset:28; size:4;  signed:1;
>     field:long prev_state;    offset:32; size:8;  signed:1;
>     field:char next_comm[16]; offset:40; size:16; signed:1;
>     field:pid_t next_pid;     offset:56; size:4;  signed:1;
>     field:int next_prio;      offset:60; size:4;  signed:1;
> 
>   print fmt: "prev_comm=%s prev_pid=%d prev_prio=%d prev_state=%s%s ==>
>               next_comm=%s next_pid=%d next_prio=%d",
>     REC->prev_comm, REC->prev_pid, REC->prev_prio,
>     REC->prev_state & (2048-1) ? __print_flags(REC->prev_state & (2048-1),
>     "|", { 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" }, { 16, "Z" }, { 32, "X" },
>     { 64, "x" }, { 128, "K"}, { 256, "W" }, { 512, "P" }, { 1024, "N" }) : "R",
>     REC->prev_state & 2048 ? "+" : "", REC->next_comm, REC->next_pid, REC->next_prio
> 
> With dynamic sort keys, you can use <event.field> as a sort key.  Those
> dynamic keys are checked and created on demand.  For instance, below is
> to sort by next_pid field on the same data file.
> 
>   $ perf report -s comm,sched:sched_switch.next_pid --stdio
>   ...
>   # Overhead  Command            next_pid
>   # ........  ...............  ..........
>   #
>       21.23%  transmission-gt           0
>       20.86%  swapper               17773
>        6.62%  netctl-auto               0
>        5.25%  swapper                 109
>        5.21%  kworker/0:1H              0
>        1.98%  Xephyr                    0
>        1.98%  swapper                6524
>        1.98%  swapper               27478
>        1.37%  swapper               27476
>        1.17%  swapper                 233
> 
> Multiple dynamic sort keys are also supported:
> 
>   $ perf report -s comm,sched:sched_switch.next_pid,sched:sched_switch.next_comm --stdio
>   ...
>   # Overhead  Command            next_pid         next_comm
>   # ........  ...............  ..........  ................
>   #
>       20.86%  swapper               17773   transmission-gt
>        9.64%  transmission-gt           0         swapper/0
>        9.16%  transmission-gt           0         swapper/2
>        5.25%  swapper                 109      kworker/0:1H
>        5.21%  kworker/0:1H              0         swapper/0
>        2.14%  netctl-auto               0         swapper/2
>        1.98%  netctl-auto               0         swapper/0
>        1.98%  swapper                6524            Xephyr
>        1.98%  swapper               27478       netctl-auto
>        1.78%  transmission-gt           0         swapper/3
>        1.53%  Xephyr                    0         swapper/0
>        1.29%  netctl-auto               0         swapper/1
>        1.29%  swapper               27476       netctl-auto
>        1.21%  netctl-auto               0         swapper/3
>        1.17%  swapper                 233    irq/33-iwlwifi
> 
> Note that pid 0 exists for each cpu so have comm of 'swapper/N'.
 
> This is available on 'perf/dynamic-sort-v1' branch in my tree
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git
> 
> Any comments are welcome, thanks!
> Namhyung

I'll look at the patches for style, but the idea is so nice and natural
I thought about blind merging it :-)

- Arnaldo

  parent reply	other threads:[~2015-12-14 17:47 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-14 15:46 [RFC/PATCHSET 0/6] perf tools: Support dynamic sort keys for tracepoints (v1) Namhyung Kim
2015-12-14 15:46 ` [PATCH 1/6] perf hist: Pass struct sample to __hists__add_entry() Namhyung Kim
2015-12-14 15:46 ` [PATCH 2/6] perf hist: Save raw_data/size for tracepoint events Namhyung Kim
2015-12-14 15:46 ` [PATCH 3/6] tools lib traceevent: Factor out and export print_event_field() Namhyung Kim
2015-12-14 15:46 ` [PATCH 4/6] perf tools: Pass evlist to setup_sorting() Namhyung Kim
2015-12-14 15:46 ` [PATCH 5/6] perf tools: Add dynamic sort key for tracepoint events Namhyung Kim
2015-12-15  8:53   ` Jiri Olsa
2015-12-15 12:07     ` Namhyung Kim
2015-12-15 12:22       ` Jiri Olsa
2015-12-15 12:37         ` Namhyung Kim
2015-12-14 15:46 ` [PATCH 6/6] perf tools: Try to show pretty printed output for dynamic sort keys Namhyung Kim
2015-12-15  9:03   ` Jiri Olsa
2015-12-15 10:36     ` Arnaldo Carvalho de Melo
2015-12-15 12:13       ` Namhyung Kim
2015-12-15 12:24         ` Jiri Olsa
2015-12-15 12:42           ` Namhyung Kim
2015-12-15 12:52             ` Jiri Olsa
2015-12-14 17:47 ` Arnaldo Carvalho de Melo [this message]
2015-12-14 22:32   ` [RFC/PATCHSET 0/6] perf tools: Support dynamic sort keys for tracepoints (v1) David Ahern
2015-12-15  1:41     ` 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=20151214174723.GT6843@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=andi@firstfloor.org \
    --cc=dsahern@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=wangnan0@huawei.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