mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: jolsa@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: perf, tools: Refactor and support interval and CSV metrics
Date: Tue, 1 Mar 2016 16:05:03 -0300	[thread overview]
Message-ID: <20160301190503.GD3604@kernel.org> (raw)
In-Reply-To: <1456858672-21594-1-git-send-email-andi@firstfloor.org>

Em Tue, Mar 01, 2016 at 10:57:45AM -0800, Andi Kleen escreveu:
> Fixed even more last feedback.
> 
> [v5: Fix mainly bisect problems. No regressions introduced by one
> patch and fixed again later. Some minor fixes in addition]
> [v6: Fix running/noise printing patch.]
> [v7: Reorder and merge two patches to avoid a bisect hole where unsupported was
> printed as 0]
> [v8: Minor fixes for review feedback. See changelog in patches.]
> [v9: Fix newline bug. Add support for -A for --metric-only]
> [v10: Remove extra "noise" printing (Jiri)
>       Fix fields in documentation (Jiri)]
> [v11: Fix manpage again. Avoid extra metric output in CSV mode.]
> [v12: Move CSV metrics fields to after running/enabled/variance.
>       Minor fixes.]
> [v13: Address review comments. Now probe for stalled events 
>       in advance to avoid empty columns or lines. Fix -A shadowing.
>       Various minor changes. Drop merged patches.]
> [v14: Fix empty lines with CSV metrics. Avoid one more empty column
>       in metric-only.]
> [v15: Add missing fields in manpage. Use extra init function 
>       for frontend event. Various smaller fixes. Add acked-by.]

Please check acme/perf/core, I processed various patches that you are
resubmitting.

https://git.kernel.org/cgit/linux/kernel/git/acme/linux.git/log/?h=perf/core

Doing that you force me to check if there were changes in the patches
already applied :-\

I already collected the Acked-by tags.

I'll continue after the ones I already merged.

- Arnaldo
 
> Currently perf stat does not support printing computed metrics for interval (-I xxx)
> or CSV (-x,) mode. For example IPC or TSX metrics over time are quite useful to know.
> 
> This patch implements them. The main obstacle was that the
> metrics printing was all open coded all over the metrics computation code.
> The second patch refactors the metrics printing to work through call backs that
> can be more easily changed. This also cleans up the metrics printing significantly.
> The indentation is now handled through printf, no more need to manually count spaces.
> 
> Then based on that it implements metrics printing for CSV and interval mode,
> and finally a --metric-only mode.
> 
> Example output:
> 
> % perf stat  -I1000 -a sleep 1
> #          time              counts unit events                    metric                              multiplex
>      1.001301370       12020.049593      task-clock (msec)                                             (100.00%)
>      1.001301370              3,952      context-switches          #    0.329 K/sec                    (100.00%)
>      1.001301370                 69      cpu-migrations            #    0.006 K/sec                    (100.00%)
>      1.001301370                 76      page-faults               #    0.006 K/sec                  
>      1.001301370        386,582,789      cycles                    #    0.032 GHz                      (100.00%)
>      1.001301370        716,441,544      stalled-cycles-frontend   #  185.33% frontend cycles idle     (100.00%)
>      1.001301370    <not supported>      stalled-cycles-backend   
>      1.001301370        101,751,678      instructions              #    0.26  insn per cycle         
>      1.001301370                                                   #    7.04  stalled cycles per insn  (100.00%)
>      1.001301370         20,914,692      branches                  #    1.740 M/sec                    (100.00%)
>      1.001301370          1,943,630      branch-misses             #    9.29% of all branches        
> 
> CSV mode:
> 
> % perf stat  -x, -I1000 -a sleep 1
>      1.000982778,12006.549977,,task-clock,12006547787,100.00,,,,
>      1.000982778,12822,,context-switches,12007100604,100.00,0.001,M/sec
>      1.000982778,175,,cpu-migrations,12007180306,100.00,0.015,K/sec
>      1.000982778,3404,,page-faults,12007185482,100.00,0.284,K/sec
>      1.000982778,1930307489,,cycles,12007018233,100.00,0.161,GHz
>      1.000982778,6971803638,,stalled-cycles-frontend,12006902870,100.00,361.18,frontend cycles idle
>      1.000982778,464493941,,instructions,12006873327,100.00,0.24,insn per cycle
>      1.000982778,,,,,,15.01,stalled cycles per insn
>      1.000982778,86548409,,branches,12006758420,100.00,7.208,M/sec
>      1.000982778,4933638,,branch-misses,12006648104,100.00,5.70,of all branches
> 
> Now includes metrics
> 
> Metric only mode:
> 
> Concicse information if you only care about computed metrics, not raw values
> 
> % perf stat --metric-only  -a -I 1000
>          1.001452803 frontend cycles idle insn per cycle       stalled cycles per insn branch-misses of all branches
>          1.001452803  158.91%               0.66                2.39                    2.92%
>          2.002192321  180.63%               0.76                2.08                    2.96%
>          3.003088282  150.59%               0.62                2.57                    2.84%
>          4.004369835  196.20%               0.98                1.62                    3.79%
>          5.005227314  231.98%               0.84                1.90                    4.71%
> 
> 
> Metric only mode in CSV (flat format, easy to plot and analyze in statistical tools like JMP, R, pandas, gnuplot):
> 
> % perf stat -x, --metric-only  -a -I 1000
>      1.001381652,frontend cycles idle,insn per cycle,stalled cycles per insn,branch-misses of all branches,
>      1.001381652,173.32,0.83,2.09,1.73,
>      2.002073343,199.47,1.07,1.60,2.14,
>      3.002875524,109.52,0.22,7.83,1.63,
>      4.003970059,132.10,0.17,10.85,1.51,
>      5.004818754,181.60,0.22,8.87,2.22,
> 
> 
> Available in
> git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc-2.6 perf/stat-metrics-19

  parent reply	other threads:[~2016-03-01 19:05 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-01 18:57 Andi Kleen
2016-03-01 18:57 ` [PATCH 1/7] perf, tools, stat: Check existence of frontend/backed stalled cycles Andi Kleen
2016-03-01 18:57 ` [PATCH 2/7] perf, tools, stat: Implement CSV metrics output Andi Kleen
2016-03-01 18:57 ` [PATCH 3/7] perf, tools, stat: Support metrics in --per-core/socket mode Andi Kleen
2016-03-01 18:57 ` [PATCH 4/7] perf, tools, stat: Document CSV format in manpage Andi Kleen
2016-03-02 11:23   ` Jiri Olsa
2016-03-01 18:57 ` [PATCH 5/7] perf, tools, stat: Implement --metric-only mode Andi Kleen
2016-03-02 11:57   ` Jiri Olsa
2016-03-02 15:35     ` Andi Kleen
2016-03-01 18:57 ` [PATCH 6/7] perf, tools, stat: Add --metric-only support for -A Andi Kleen
2016-03-01 18:57 ` [PATCH 7/7] perf, tools, stat: Check for frontend stalled for metrics Andi Kleen
2016-03-02 12:04   ` Jiri Olsa
2016-03-05  8:21   ` [tip:perf/core] perf " tip-bot for Andi Kleen
2016-03-01 19:05 ` Arnaldo Carvalho de Melo [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-03-03 23:57 perf, tools: Refactor and support interval and CSV metrics Andi Kleen
2016-03-07 10:08 ` Jiri Olsa
2016-03-07 18:22   ` Andi Kleen
2016-03-07 18:48     ` Jiri Olsa
2016-03-07 21:11       ` Andi Kleen
2016-03-10 11:34         ` Jiri Olsa
2016-03-03  0:24 Andi Kleen
2016-02-29 22:36 Andi Kleen
2016-03-01 13:07 ` Arnaldo Carvalho de Melo
2016-02-27  0:27 Andi Kleen
2016-02-17 22:43 Andi Kleen
2016-01-30 17:06 Andi Kleen
2016-01-27  0:42 Andi Kleen
2016-01-20  2:26 Andi Kleen
2016-01-22 10:10 ` Jiri Olsa
2016-01-16  1:11 Andi Kleen
2016-01-16 20:21 ` Jiri Olsa
2016-01-18 22:25   ` Andi Kleen
2015-07-30  0:21 Andi Kleen

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=20160301190503.GD3604@kernel.org \
    --to=acme@kernel.org \
    --cc=andi@firstfloor.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome