All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Andi Kleen <ak@linux.intel.com>, David Ahern <dsahern@gmail.com>,
	Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Stephane Eranian <eranian@google.com>
Subject: Re: [PATCHv4 00/27] perf stat: Introduce --per-thread option
Date: Mon, 22 Jun 2015 20:06:00 -0300	[thread overview]
Message-ID: <20150622230600.GB8510@kernel.org> (raw)
In-Reply-To: <1435012588-9007-1-git-send-email-jolsa@kernel.org>

Em Tue, Jun 23, 2015 at 12:36:01AM +0200, Jiri Olsa escreveu:
> hi,
> adding the possibility to display stat data per thread.
> 
> Allowing following commands and output:
> 
>   $ perf stat  -e cycles,instructions --per-thread -p 30190,30242

While testing Adrian's Intel PT patchkit I realised we have --per-thread
in 'record', wonder if using a long option with the exact same name but
different meanings for 'stat' and 'record'  would cause confusion...

- Arnaldo

>   ^C
>    Performance counter stats for process id '30190,30242':
> 
>                cat-30190                     0      cycles
>                yes-30242         3,842,525,421      cycles
>                cat-30190                     0      instructions
>                yes-30242        10,370,817,010      instructions
> 
>          1.143155657 seconds time elapsed
> 
> 
> Also works under interval mode:
> 
>   $ perf stat  -e cycles,instructions --per-thread -p 30190,30242 -I 1000
>   #           time             comm-pid                  counts unit events
>        1.000073435              cat-30190                89,058      cycles
>        1.000073435              yes-30242         3,360,786,902      cycles                     (100.00%)
>        1.000073435              cat-30190                14,066      instructions
>        1.000073435              yes-30242         9,069,937,462      instructions
>        2.000204830              cat-30190                     0      cycles
>        2.000204830              yes-30242         3,351,667,626      cycles
>        2.000204830              cat-30190                     0      instructions
>        2.000204830              yes-30242         9,045,796,885      instructions
>   ^C     2.771286639              cat-30190                     0      cycles
>        2.771286639              yes-30242         2,593,884,166      cycles
>        2.771286639              cat-30190                     0      instructions
>        2.771286639              yes-30242         7,001,171,191      instructions
> 
> 
> Available in here:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
>   perf/per_thread
> 
> v4 changes:
>   - add thread_map__set_(pid|comm) interface
>   - several fixes for task comm string reading
>   - added perf_evlist__reset_stats function
> 
> v3 changes:
>   - some patches already pulled in, rebased on latest acme's perf/core
>   - fixed cpu_map__get/thread_map__get to accept NULL map
>   - renamed propagate_maps to perf_evlist__propagate_maps
>   - renamed --per-task option to --per-thread
>   - changed 'task-pid' header output to 'comm-pid'
> 
> v2 changes:
>   - renamed xyarray__zero to xyarray__reset
>   - using atomic_t for cpu_map/thread_map refcnt
>   - moving all stat functions into stat object
>   - using init_stats to initialize 'struct stats*'
>   - change TASK-$pid output into $comm-$pid
>   - updated doc with --per-task option
> 
> 
> thanks,
> jirka
> ---
> Jiri Olsa (27):
>       perf tools: Change thread_map::map into struct
>       perf tools: Add comm string into struct thread_map
>       perf tools: Add reference counting for cpu_map object
>       perf tools: Add reference counting for thread_map object
>       perf tools: Propagate cpu maps through the evlist
>       perf tools: Propagate thread maps through the evlist
>       perf tools: Make perf_evsel__(nr_)cpus generic
>       perf tests: Add thread_map object tests
>       perf stat: Introduce perf_counts function
>       perf stat: Use xyarray for cpu evsel counts
>       perf stat: Make stats work over the thread dimension
>       perf stat: Rename struct perf_counts::cpu member to values
>       perf stat: Introduce perf_evlist__reset_stats
>       perf stat: Move perf_evsel__(alloc|free|reset)_stat_priv into stat object
>       perf stat: Move perf_evsel__(alloc|free)_prev_raw_counts into stat object
>       perf stat: Move perf_evlist__(alloc|free|reset)_stats into stat object
>       perf stat: Introduce perf_evsel__alloc_stats function
>       perf stat: Introduce perf_evsel__read function
>       perf stat: Introduce read_counters function
>       perf stat: Separate counters reading and processing
>       perf stat: Move zero_per_pkg into counter process code
>       perf stat: Move perf_stat initialization counter process code
>       perf stat: Remove perf_evsel__read_cb function
>       perf stat: Rename print_interval to process_interval
>       perf stat: Using init_stats instead of memset
>       perf stat: Introduce print_counters function
>       perf stat: Introduce --per-thread option
> 
>  tools/perf/Documentation/perf-stat.txt      |   4 +
>  tools/perf/builtin-stat.c                   | 404 ++++++++++++++--------------
>  tools/perf/builtin-trace.c                  |   4 +-
>  tools/perf/tests/Build                      |   1 +
>  tools/perf/tests/builtin-test.c             |   4 +
>  tools/perf/tests/code-reading.c             |   4 +-
>  tools/perf/tests/keep-tracking.c            |   4 +-
>  tools/perf/tests/mmap-basic.c               |   4 +-
>  tools/perf/tests/mmap-thread-lookup.c       |   2 +-
>  tools/perf/tests/openat-syscall-all-cpus.c  |   8 +-
>  tools/perf/tests/openat-syscall-tp-fields.c |   2 +-
>  tools/perf/tests/openat-syscall.c           |   6 +-
>  tools/perf/tests/switch-tracking.c          |   4 +-
>  tools/perf/tests/tests.h                    |   1 +
>  tools/perf/tests/thread-map.c               |  28 ++
>  tools/perf/util/auxtrace.c                  |   4 +-
>  tools/perf/util/cpumap.c                    |  26 +-
>  tools/perf/util/cpumap.h                    |   6 +-
>  tools/perf/util/event.c                     |   6 +-
>  tools/perf/util/evlist.c                    |  39 ++-
>  tools/perf/util/evlist.h                    |   1 -
>  tools/perf/util/evsel.c                     |  28 +-
>  tools/perf/util/evsel.h                     |  40 ++-
>  tools/perf/util/parse-events.c              |   5 +-
>  tools/perf/util/python-ext-sources          |   1 +
>  tools/perf/util/python.c                    |   4 +-
>  tools/perf/util/record.c                    |   4 +-
>  tools/perf/util/session.c                   |   2 +-
>  tools/perf/util/stat.c                      | 132 ++++++++-
>  tools/perf/util/stat.h                      |  47 +++-
>  tools/perf/util/svghelper.c                 |   2 +-
>  tools/perf/util/thread_map.c                | 118 ++++++--
>  tools/perf/util/thread_map.h                |  35 ++-
>  33 files changed, 661 insertions(+), 319 deletions(-)
>  create mode 100644 tools/perf/tests/thread-map.c
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

  parent reply	other threads:[~2015-06-22 23:06 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-22 22:36 [PATCHv4 00/27] perf stat: Introduce --per-thread option Jiri Olsa
2015-06-22 22:36 ` [PATCH 01/27] perf tools: Change thread_map::map into struct Jiri Olsa
2015-06-25  7:58   ` [tip:perf/core] perf thread_map: Don' t access the array entries directly tip-bot for Jiri Olsa
2015-06-25  7:58   ` [tip:perf/core] perf thread_map: Change map entries into a struct tip-bot for Jiri Olsa
2015-06-22 22:36 ` [PATCH 02/27] perf tools: Add comm string into struct thread_map Jiri Olsa
2015-06-23 21:01   ` Arnaldo Carvalho de Melo
2015-06-23 21:56     ` Jiri Olsa
2015-06-25 14:39       ` Arnaldo Carvalho de Melo
2015-06-25 16:01         ` Jiri Olsa
2015-06-25 16:13           ` Arnaldo Carvalho de Melo
2015-06-22 22:36 ` [PATCH 03/27] perf tools: Add reference counting for cpu_map object Jiri Olsa
2015-06-23 21:06   ` Arnaldo Carvalho de Melo
2015-06-23 21:54     ` Jiri Olsa
2015-06-26  8:44   ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2015-06-22 22:36 ` [PATCH 04/27] perf tools: Add reference counting for thread_map object Jiri Olsa
2015-06-26  8:44   ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2015-06-22 22:36 ` [PATCH 05/27] perf tools: Propagate cpu maps through the evlist Jiri Olsa
2015-06-26  8:45   ` [tip:perf/urgent] perf evlist: Propagate cpu maps to evsels in an evlist tip-bot for Jiri Olsa
2015-06-22 22:36 ` [PATCH 06/27] perf tools: Propagate thread maps through the evlist Jiri Olsa
2015-06-26  8:45   ` [tip:perf/urgent] perf evlist: " tip-bot for Jiri Olsa
2015-06-22 22:36 ` [PATCH 07/27] perf tools: Make perf_evsel__(nr_)cpus generic Jiri Olsa
2015-06-26  8:45   ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2015-06-22 22:36 ` [PATCH 08/27] perf tests: Add thread_map object tests Jiri Olsa
2015-06-22 22:36 ` [PATCH 09/27] perf stat: Introduce perf_counts function Jiri Olsa
2015-06-23 21:11   ` Arnaldo Carvalho de Melo
2015-06-23 22:03     ` Jiri Olsa
2015-06-22 22:36 ` [PATCH 10/27] perf stat: Use xyarray for cpu evsel counts Jiri Olsa
2015-06-22 22:36 ` [PATCH 11/27] perf stat: Make stats work over the thread dimension Jiri Olsa
2015-06-22 22:36 ` [PATCH 12/27] perf stat: Rename struct perf_counts::cpu member to values Jiri Olsa
2015-06-22 22:36 ` [PATCH 13/27] perf stat: Introduce perf_evlist__reset_stats Jiri Olsa
2015-06-22 22:36 ` [PATCH 14/27] perf stat: Move perf_evsel__(alloc|free|reset)_stat_priv into stat object Jiri Olsa
2015-06-22 22:36 ` [PATCH 15/27] perf stat: Move perf_evsel__(alloc|free)_prev_raw_counts " Jiri Olsa
2015-06-22 22:36 ` [PATCH 16/27] perf stat: Move perf_evlist__(alloc|free|reset)_stats " Jiri Olsa
2015-06-22 22:36 ` [PATCH 17/27] perf stat: Introduce perf_evsel__alloc_stats function Jiri Olsa
2015-06-22 22:36 ` [PATCH 18/27] perf stat: Introduce perf_evsel__read function Jiri Olsa
2015-06-22 22:36 ` [PATCH 19/27] perf stat: Introduce read_counters function Jiri Olsa
2015-06-22 22:36 ` [PATCH 20/27] perf stat: Separate counters reading and processing Jiri Olsa
2015-06-22 22:36 ` [PATCH 21/27] perf stat: Move zero_per_pkg into counter process code Jiri Olsa
2015-06-22 22:36 ` [PATCH 22/27] perf stat: Move perf_stat initialization " Jiri Olsa
2015-06-22 22:36 ` [PATCH 23/27] perf stat: Remove perf_evsel__read_cb function Jiri Olsa
2015-06-22 22:36 ` [PATCH 24/27] perf stat: Rename print_interval to process_interval Jiri Olsa
2015-06-22 22:36 ` [PATCH 25/27] perf stat: Using init_stats instead of memset Jiri Olsa
2015-06-22 22:36 ` [PATCH 26/27] perf stat: Introduce print_counters function Jiri Olsa
2015-06-22 22:36 ` [PATCH 27/27] perf stat: Introduce --per-thread option Jiri Olsa
2015-06-22 23:06 ` Arnaldo Carvalho de Melo [this message]
2015-06-23  7:22   ` [PATCHv4 00/27] " Jiri Olsa
2015-06-23 14:05     ` Arnaldo Carvalho de Melo
2015-06-23 14:08       ` Adrian Hunter
2015-06-23 15:06         ` Arnaldo Carvalho de Melo

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=20150622230600.GB8510@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.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.