All of lore.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 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.