* [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2)
@ 2017-02-10 7:36 Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 1/4] perf diff: Add 'delta-abs' compute method Namhyung Kim
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 7:36 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML
Hello,
This patchset adds 'delta-abs' compute method to -c/--compute option.
The 'delta-abs' is same as 'delta' but shows entries with bigger
absolute delta first instead of sorting numerically. This is only
useful together with -o option.
* v2 changes
- rebase onto acme/perf/core
- change default option to '-o 1 -c delta-abs'
Below is default output (-c delta):
$ perf diff -o 1 -c delta | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
+1.15% [kernel.kallsyms] [k] copy_user_generic_string
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
+0.64% [kernel.kallsyms] [k] kmem_cache_alloc
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
+0.45% [kernel.kallsyms] [k] alloc_set_pte
0.16% +0.45% [kernel.kallsyms] [k] menu_select
+0.41% ld-2.24.so [.] do_lookup_x
Now with 'delta-abs' it shows entries have bigger delta value either
positive or negative.
$ perf diff -o 1 -c delta-abs | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
12.72% -3.01% [kernel.kallsyms] [k] intel_idle
9.72% -1.31% [unknown] [.] 0x0000000000411343
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
+1.15% [kernel.kallsyms] [k] copy_user_generic_string
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
1.35% -0.71% [kernel.kallsyms] [k] smp_call_function_single
+0.64% [kernel.kallsyms] [k] kmem_cache_alloc
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
The patch 2 and 3 are to add config options to control the default
behavior of perf diff command. And patch 4 changes the default setting.
The code is avaiable at 'perf/diff-delta-abs-v2' branch in
git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git
Thanks,
Namhyung
Namhyung Kim (4):
perf diff: Add 'delta-abs' compute method
perf diff: Add diff.order config option
perf diff: Add diff.compute config option
perf diff: Change default setting to "delta-abs"
tools/perf/Documentation/perf-config.txt | 12 +++++
tools/perf/Documentation/perf-diff.txt | 15 ++++--
tools/perf/builtin-diff.c | 78 ++++++++++++++++++++++++++++++--
3 files changed, 98 insertions(+), 7 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/4] perf diff: Add 'delta-abs' compute method
2017-02-10 7:36 [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Namhyung Kim
@ 2017-02-10 7:36 ` Namhyung Kim
2017-02-14 6:38 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 2/4] perf diff: Add diff.order config option Namhyung Kim
` (3 subsequent siblings)
4 siblings, 1 reply; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 7:36 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML
The 'delta-abs' compute method is same as 'delta' but shows entries with
bigger absolute delta first instead of sorting numerically. This is
only useful together with -o option.
Below is default output (-c delta):
$ perf diff -o 1 -c delta | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
+1.15% [kernel.kallsyms] [k] copy_user_generic_string
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
+0.64% [kernel.kallsyms] [k] kmem_cache_alloc
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
+0.45% [kernel.kallsyms] [k] alloc_set_pte
0.16% +0.45% [kernel.kallsyms] [k] menu_select
+0.41% ld-2.24.so [.] do_lookup_x
Now with 'delta-abs' it shows entries have bigger delta value either
positive or negative.
$ perf diff -o 1 -c delta-abs | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
12.72% -3.01% [kernel.kallsyms] [k] intel_idle
9.72% -1.31% [unknown] [.] 0x0000000000411343
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
1.35% -0.71% [kernel.kallsyms] [k] smp_call_function_single
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
0.16% +0.45% [kernel.kallsyms] [k] menu_select
0.72% -0.44% [kernel.kallsyms] [k] lookup_fast
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/Documentation/perf-diff.txt | 6 ++++-
tools/perf/builtin-diff.c | 46 ++++++++++++++++++++++++++++++++--
2 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 3e9490b9c533..af80284cd2f6 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -86,7 +86,7 @@ OPTIONS
-c::
--compute::
- Differential computation selection - delta,ratio,wdiff (default is delta).
+ Differential computation selection - delta,ratio,wdiff,delta-abs (default is delta).
See COMPARISON METHODS section for more info.
-p::
@@ -181,6 +181,10 @@ delta
relative to how entries are filtered. Use --percentage=absolute to
prevent such fluctuation.
+delta-abs
+~~~~~~~~~
+Same as 'delta` method, but sort the result with the absolute values.
+
ratio
~~~~~
If specified the 'Ratio' column is displayed with value 'r' computed as:
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 933aeec46f4a..781c9e60bd21 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -30,6 +30,7 @@ enum {
PERF_HPP_DIFF__RATIO,
PERF_HPP_DIFF__WEIGHTED_DIFF,
PERF_HPP_DIFF__FORMULA,
+ PERF_HPP_DIFF__DELTA_ABS,
PERF_HPP_DIFF__MAX_INDEX
};
@@ -73,11 +74,13 @@ enum {
COMPUTE_DELTA,
COMPUTE_RATIO,
COMPUTE_WEIGHTED_DIFF,
+ COMPUTE_DELTA_ABS,
COMPUTE_MAX,
};
const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_DELTA] = "delta",
+ [COMPUTE_DELTA_ABS] = "delta-abs",
[COMPUTE_RATIO] = "ratio",
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
@@ -86,6 +89,7 @@ static int compute;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
+ [COMPUTE_DELTA_ABS] = PERF_HPP_DIFF__DELTA_ABS,
[COMPUTE_RATIO] = PERF_HPP_DIFF__RATIO,
[COMPUTE_WEIGHTED_DIFF] = PERF_HPP_DIFF__WEIGHTED_DIFF,
};
@@ -111,6 +115,10 @@ static struct header_column {
.name = "Delta",
.width = 7,
},
+ [PERF_HPP_DIFF__DELTA_ABS] = {
+ .name = "Delta Abs",
+ .width = 7,
+ },
[PERF_HPP_DIFF__RATIO] = {
.name = "Ratio",
.width = 14,
@@ -298,6 +306,7 @@ static int formula_fprintf(struct hist_entry *he, struct hist_entry *pair,
{
switch (compute) {
case COMPUTE_DELTA:
+ case COMPUTE_DELTA_ABS:
return formula_delta(he, pair, buf, size);
case COMPUTE_RATIO:
return formula_ratio(he, pair, buf, size);
@@ -461,6 +470,7 @@ static void hists__precompute(struct hists *hists)
switch (compute) {
case COMPUTE_DELTA:
+ case COMPUTE_DELTA_ABS:
compute_delta(he, pair);
break;
case COMPUTE_RATIO:
@@ -498,6 +508,13 @@ __hist_entry__cmp_compute(struct hist_entry *left, struct hist_entry *right,
return cmp_doubles(l, r);
}
+ case COMPUTE_DELTA_ABS:
+ {
+ double l = fabs(left->diff.period_ratio_delta);
+ double r = fabs(right->diff.period_ratio_delta);
+
+ return cmp_doubles(l, r);
+ }
case COMPUTE_RATIO:
{
double l = left->diff.period_ratio;
@@ -564,7 +581,7 @@ hist_entry__cmp_compute_idx(struct hist_entry *left, struct hist_entry *right,
if (!p_left || !p_right)
return p_left ? -1 : 1;
- if (c != COMPUTE_DELTA) {
+ if (c != COMPUTE_DELTA && c != COMPUTE_DELTA_ABS) {
/*
* The delta can be computed without the baseline, but
* others are not. Put those entries which have no
@@ -607,6 +624,15 @@ hist_entry__cmp_delta(struct perf_hpp_fmt *fmt,
}
static int64_t
+hist_entry__cmp_delta_abs(struct perf_hpp_fmt *fmt,
+ struct hist_entry *left, struct hist_entry *right)
+{
+ struct data__file *d = fmt_to_data_file(fmt);
+
+ return hist_entry__cmp_compute(right, left, COMPUTE_DELTA_ABS, d->idx);
+}
+
+static int64_t
hist_entry__cmp_ratio(struct perf_hpp_fmt *fmt,
struct hist_entry *left, struct hist_entry *right)
{
@@ -633,6 +659,14 @@ hist_entry__cmp_delta_idx(struct perf_hpp_fmt *fmt __maybe_unused,
}
static int64_t
+hist_entry__cmp_delta_abs_idx(struct perf_hpp_fmt *fmt __maybe_unused,
+ struct hist_entry *left, struct hist_entry *right)
+{
+ return hist_entry__cmp_compute_idx(right, left, COMPUTE_DELTA_ABS,
+ sort_compute);
+}
+
+static int64_t
hist_entry__cmp_ratio_idx(struct perf_hpp_fmt *fmt __maybe_unused,
struct hist_entry *left, struct hist_entry *right)
{
@@ -775,7 +809,7 @@ static const struct option options[] = {
OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
"Show only items with match in baseline"),
OPT_CALLBACK('c', "compute", &compute,
- "delta,ratio,wdiff:w1,w2 (default delta)",
+ "delta,delta-abs,ratio,wdiff:w1,w2 (default delta)",
"Entries differential computation selection",
setup_compute),
OPT_BOOLEAN('p', "period", &show_period,
@@ -945,6 +979,7 @@ hpp__entry_pair(struct hist_entry *he, struct hist_entry *pair,
switch (idx) {
case PERF_HPP_DIFF__DELTA:
+ case PERF_HPP_DIFF__DELTA_ABS:
if (pair->diff.computed)
diff = pair->diff.period_ratio_delta;
else
@@ -1118,6 +1153,10 @@ static void data__hpp_register(struct data__file *d, int idx)
fmt->color = hpp__color_wdiff;
fmt->sort = hist_entry__cmp_wdiff;
break;
+ case PERF_HPP_DIFF__DELTA_ABS:
+ fmt->color = hpp__color_delta;
+ fmt->sort = hist_entry__cmp_delta_abs;
+ break;
default:
fmt->sort = hist_entry__cmp_nop;
break;
@@ -1195,6 +1234,9 @@ static int ui_init(void)
case COMPUTE_WEIGHTED_DIFF:
fmt->sort = hist_entry__cmp_wdiff_idx;
break;
+ case COMPUTE_DELTA_ABS:
+ fmt->sort = hist_entry__cmp_delta_abs_idx;
+ break;
default:
BUG_ON(1);
}
--
2.11.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/4] perf diff: Add diff.order config option
2017-02-10 7:36 [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 1/4] perf diff: Add 'delta-abs' compute method Namhyung Kim
@ 2017-02-10 7:36 ` Namhyung Kim
2017-02-14 6:38 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 3/4] perf diff: Add diff.compute " Namhyung Kim
` (2 subsequent siblings)
4 siblings, 1 reply; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 7:36 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, Taeung Song
In many cases, I need to look at differences between two data so I often
used the -o option to sort the result base on the difference first.
It'd be nice to have a config option to set it by default.
The diff.order config option is to set the default value of -o/--order
option.
Cc: Taeung Song <treeze.taeung@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/Documentation/perf-config.txt | 7 +++++++
tools/perf/Documentation/perf-diff.txt | 6 +++++-
tools/perf/builtin-diff.c | 14 ++++++++++++++
3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 9365b75fd04f..5b54d47ef713 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -498,6 +498,13 @@ Variables
But if this option is 'no-cache', it will not update the build-id cache.
'skip' skips post-processing and does not update the cache.
+diff.*::
+ diff.order::
+ This option sets the number of column to sort the result.
+ Default is 0 which means sorting by baseline.
+ Setting it to 1 will sort the result by delta (or other
+ compute method selected).
+
SEE ALSO
--------
linkperf:perf[1]
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index af80284cd2f6..6ba3bf582d79 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -99,7 +99,11 @@ OPTIONS
-o::
--order::
- Specify compute sorting column number.
+ Specify compute sorting column number. 0 means sorting by baseline
+ overhead (default) and 1 means sorting by computed value of column 1
+ (data from the first file other base baseline). Values more than 1
+ can be used only if enough data files are provided.
+ Default value can be set using diff.order config option.
--percentage::
Determine how to display the overhead percentage of filtered entries.
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 781c9e60bd21..181ff996e039 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -17,6 +17,7 @@
#include "util/symbol.h"
#include "util/util.h"
#include "util/data.h"
+#include "util/config.h"
#include <stdlib.h>
#include <math.h>
@@ -1291,6 +1292,17 @@ static int data_init(int argc, const char **argv)
return 0;
}
+static int diff__config(const char *var, const char *value,
+ void *cb __maybe_unused)
+{
+ if (!strcmp(var, "diff.order")) {
+ sort_compute = perf_config_int(var, value);
+ return 0;
+ }
+
+ return 0;
+}
+
int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
{
int ret = hists__init();
@@ -1298,6 +1310,8 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
if (ret < 0)
return ret;
+ perf_config(diff__config, NULL);
+
argc = parse_options(argc, argv, options, diff_usage, 0);
if (symbol__init(NULL) < 0)
--
2.11.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/4] perf diff: Add diff.compute config option
2017-02-10 7:36 [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 1/4] perf diff: Add 'delta-abs' compute method Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 2/4] perf diff: Add diff.order config option Namhyung Kim
@ 2017-02-10 7:36 ` Namhyung Kim
2017-02-14 6:39 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 4/4] perf diff: Change default setting to "delta-abs" Namhyung Kim
2017-02-10 7:41 ` [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Ingo Molnar
4 siblings, 1 reply; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 7:36 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, Taeung Song
The diff.compute config variable is to set the default compute method of
perf diff command (-c option). Possible values 'delta' (default),
'delta-abs', 'ratio' and 'wdiff'.
Cc: Taeung Song <treeze.taeung@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/Documentation/perf-config.txt | 5 +++++
tools/perf/Documentation/perf-diff.txt | 5 +++--
tools/perf/builtin-diff.c | 16 +++++++++++++++-
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 5b54d47ef713..f2d758dc1edc 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -505,6 +505,11 @@ Variables
Setting it to 1 will sort the result by delta (or other
compute method selected).
+ diff.compute::
+ This options sets the method of computing diff result.
+ Possible values are 'delta', 'delta-abs', 'ratio' and
+ 'wdiff'. Default is 'delta'.
+
SEE ALSO
--------
linkperf:perf[1]
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 6ba3bf582d79..70f490408262 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -86,8 +86,9 @@ OPTIONS
-c::
--compute::
- Differential computation selection - delta,ratio,wdiff,delta-abs (default is delta).
- See COMPARISON METHODS section for more info.
+ Differential computation selection - delta,ratio,wdiff,delta-abs
+ (default is delta). Default can be changed using diff.compute
+ config option. See COMPARISON METHODS section for more info.
-p::
--period::
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 181ff996e039..4b4004d41c6a 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
-static int compute;
+static int compute = COMPUTE_DELTA;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
@@ -1299,6 +1299,20 @@ static int diff__config(const char *var, const char *value,
sort_compute = perf_config_int(var, value);
return 0;
}
+ if (!strcmp(var, "diff.compute")) {
+ if (!strcmp(value, "delta"))
+ compute = COMPUTE_DELTA;
+ else if (!strcmp(value, "delta-abs"))
+ compute = COMPUTE_DELTA_ABS;
+ else if (!strcmp(value, "ratio"))
+ compute = COMPUTE_RATIO;
+ else if (!strcmp(value, "wdiff"))
+ compute = COMPUTE_WEIGHTED_DIFF;
+ else {
+ pr_err("Invalid compute method: %s\n", value);
+ return -1;
+ }
+ }
return 0;
}
--
2.11.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/4] perf diff: Change default setting to "delta-abs"
2017-02-10 7:36 [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Namhyung Kim
` (2 preceding siblings ...)
2017-02-10 7:36 ` [PATCH v2 3/4] perf diff: Add diff.compute " Namhyung Kim
@ 2017-02-10 7:36 ` Namhyung Kim
2017-02-10 16:18 ` [PATCH v2.1 " Namhyung Kim
2017-02-10 7:41 ` [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Ingo Molnar
4 siblings, 1 reply; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 7:36 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML
The "delta-abs" compute method will show most changed entries on top.
So users can easily see how much effect between the data. To see
original-style (sorted by baseline) use -o 0 option.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/builtin-diff.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 4b4004d41c6a..27300f2c665b 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -66,7 +66,7 @@ static bool force;
static bool show_period;
static bool show_formula;
static bool show_baseline_only;
-static unsigned int sort_compute;
+static unsigned int sort_compute = 1;
static s64 compute_wdiff_w1;
static s64 compute_wdiff_w2;
@@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
-static int compute = COMPUTE_DELTA;
+static int compute = COMPUTE_DELTA_ABS;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
--
2.11.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2)
2017-02-10 7:36 [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Namhyung Kim
` (3 preceding siblings ...)
2017-02-10 7:36 ` [PATCH v2 4/4] perf diff: Change default setting to "delta-abs" Namhyung Kim
@ 2017-02-10 7:41 ` Ingo Molnar
2017-02-10 9:14 ` Namhyung Kim
4 siblings, 1 reply; 13+ messages in thread
From: Ingo Molnar @ 2017-02-10 7:41 UTC (permalink / raw)
To: Namhyung Kim; +Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Jiri Olsa, LKML
* Namhyung Kim <namhyung@kernel.org> wrote:
> Hello,
>
> This patchset adds 'delta-abs' compute method to -c/--compute option.
> The 'delta-abs' is same as 'delta' but shows entries with bigger
> absolute delta first instead of sorting numerically. This is only
> useful together with -o option.
>
> * v2 changes
> - rebase onto acme/perf/core
> - change default option to '-o 1 -c delta-abs'
>
>
> Below is default output (-c delta):
>
> $ perf diff -o 1 -c delta | grep -v ^# | head
> 42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
> 0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
> +1.15% [kernel.kallsyms] [k] copy_user_generic_string
> 2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
> 0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
> +0.64% [kernel.kallsyms] [k] kmem_cache_alloc
> 0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
> +0.45% [kernel.kallsyms] [k] alloc_set_pte
> 0.16% +0.45% [kernel.kallsyms] [k] menu_select
> +0.41% ld-2.24.so [.] do_lookup_x
>
> Now with 'delta-abs' it shows entries have bigger delta value either
> positive or negative.
>
> $ perf diff -o 1 -c delta-abs | grep -v ^# | head
> 42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
> 12.72% -3.01% [kernel.kallsyms] [k] intel_idle
> 9.72% -1.31% [unknown] [.] 0x0000000000411343
> 0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
> +1.15% [kernel.kallsyms] [k] copy_user_generic_string
> 2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
> 0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
> 1.35% -0.71% [kernel.kallsyms] [k] smp_call_function_single
> +0.64% [kernel.kallsyms] [k] kmem_cache_alloc
> 0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
Nice!
BTW., to me the second output looks a lot more intuitive and useful than the
default one.
Would it be possible to flip over the default to the 'most useful' options, and
see whether anyone complains?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2)
2017-02-10 7:41 ` [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Ingo Molnar
@ 2017-02-10 9:14 ` Namhyung Kim
2017-02-10 10:29 ` Ingo Molnar
0 siblings, 1 reply; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 9:14 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Jiri Olsa, LKML
Hi Ingo,
On Fri, Feb 10, 2017 at 08:41:11AM +0100, Ingo Molnar wrote:
>
> * Namhyung Kim <namhyung@kernel.org> wrote:
>
> > Hello,
> >
> > This patchset adds 'delta-abs' compute method to -c/--compute option.
> > The 'delta-abs' is same as 'delta' but shows entries with bigger
> > absolute delta first instead of sorting numerically. This is only
> > useful together with -o option.
> >
> > * v2 changes
> > - rebase onto acme/perf/core
> > - change default option to '-o 1 -c delta-abs'
> >
> >
> > Below is default output (-c delta):
> >
> > $ perf diff -o 1 -c delta | grep -v ^# | head
> > 42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
> > 0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
> > +1.15% [kernel.kallsyms] [k] copy_user_generic_string
> > 2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
> > 0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
> > +0.64% [kernel.kallsyms] [k] kmem_cache_alloc
> > 0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
> > +0.45% [kernel.kallsyms] [k] alloc_set_pte
> > 0.16% +0.45% [kernel.kallsyms] [k] menu_select
> > +0.41% ld-2.24.so [.] do_lookup_x
> >
> > Now with 'delta-abs' it shows entries have bigger delta value either
> > positive or negative.
> >
> > $ perf diff -o 1 -c delta-abs | grep -v ^# | head
> > 42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
> > 12.72% -3.01% [kernel.kallsyms] [k] intel_idle
> > 9.72% -1.31% [unknown] [.] 0x0000000000411343
> > 0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
> > +1.15% [kernel.kallsyms] [k] copy_user_generic_string
> > 2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
> > 0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
> > 1.35% -0.71% [kernel.kallsyms] [k] smp_call_function_single
> > +0.64% [kernel.kallsyms] [k] kmem_cache_alloc
> > 0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
>
> Nice!
>
> BTW., to me the second output looks a lot more intuitive and useful than the
> default one.
Thanks!
>
> Would it be possible to flip over the default to the 'most useful' options, and
> see whether anyone complains?
The patch 4 makes it default.
By the way, the current default (sort by baseline) looks like below:
$ perf diff | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
12.72% -3.01% [kernel.kallsyms] [k] intel_idle
9.72% -1.31% [unknown] [.] 0x0000000000411343
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
1.35% -0.71% [kernel.kallsyms] [k] smp_call_function_single
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
0.16% +0.45% [kernel.kallsyms] [k] menu_select
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
While this example doesn't show much difference, it could be..
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2)
2017-02-10 9:14 ` Namhyung Kim
@ 2017-02-10 10:29 ` Ingo Molnar
0 siblings, 0 replies; 13+ messages in thread
From: Ingo Molnar @ 2017-02-10 10:29 UTC (permalink / raw)
To: Namhyung Kim; +Cc: Arnaldo Carvalho de Melo, Peter Zijlstra, Jiri Olsa, LKML
* Namhyung Kim <namhyung@kernel.org> wrote:
> > Would it be possible to flip over the default to the 'most useful' options, and
> > see whether anyone complains?
>
> The patch 4 makes it default.
/me must be blind!
Yes, looks really nice that way.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2.1 4/4] perf diff: Change default setting to "delta-abs"
2017-02-10 7:36 ` [PATCH v2 4/4] perf diff: Change default setting to "delta-abs" Namhyung Kim
@ 2017-02-10 16:18 ` Namhyung Kim
2017-02-14 6:39 ` [tip:perf/core] " tip-bot for Namhyung Kim
0 siblings, 1 reply; 13+ messages in thread
From: Namhyung Kim @ 2017-02-10 16:18 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML
The "delta-abs" compute method will show most changed entries on top.
So users can easily see how much effect between the data. Note that it
also changes the default of -o option to 1 in order to apply the compute
method. To see original-style (sorted by baseline) use -o 0 option.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/Documentation/perf-diff.txt | 4 ++--
tools/perf/builtin-diff.c | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 70f490408262..c0aaad5af2a8 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -87,7 +87,7 @@ OPTIONS
-c::
--compute::
Differential computation selection - delta,ratio,wdiff,delta-abs
- (default is delta). Default can be changed using diff.compute
+ (default is delta-abs). Default can be changed using diff.compute
config option. See COMPARISON METHODS section for more info.
-p::
@@ -101,7 +101,7 @@ OPTIONS
-o::
--order::
Specify compute sorting column number. 0 means sorting by baseline
- overhead (default) and 1 means sorting by computed value of column 1
+ overhead and 1 (default) means sorting by computed value of column 1
(data from the first file other base baseline). Values more than 1
can be used only if enough data files are provided.
Default value can be set using diff.order config option.
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 4b4004d41c6a..45bfbee647a7 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -66,7 +66,7 @@ static bool force;
static bool show_period;
static bool show_formula;
static bool show_baseline_only;
-static unsigned int sort_compute;
+static unsigned int sort_compute = 1;
static s64 compute_wdiff_w1;
static s64 compute_wdiff_w2;
@@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
-static int compute = COMPUTE_DELTA;
+static int compute = COMPUTE_DELTA_ABS;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
@@ -810,7 +810,7 @@ static const struct option options[] = {
OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
"Show only items with match in baseline"),
OPT_CALLBACK('c', "compute", &compute,
- "delta,delta-abs,ratio,wdiff:w1,w2 (default delta)",
+ "delta,delta-abs,ratio,wdiff:w1,w2 (default delta-abs)",
"Entries differential computation selection",
setup_compute),
OPT_BOOLEAN('p', "period", &show_period,
--
2.11.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [tip:perf/core] perf diff: Add 'delta-abs' compute method
2017-02-10 7:36 ` [PATCH v2 1/4] perf diff: Add 'delta-abs' compute method Namhyung Kim
@ 2017-02-14 6:38 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 13+ messages in thread
From: tip-bot for Namhyung Kim @ 2017-02-14 6:38 UTC (permalink / raw)
To: linux-tip-commits
Cc: tglx, jolsa, hpa, mingo, a.p.zijlstra, acme, namhyung, linux-kernel
Commit-ID: a1668c25a8e1b53d00b2997ef5bc5e25c7a77235
Gitweb: http://git.kernel.org/tip/a1668c25a8e1b53d00b2997ef5bc5e25c7a77235
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Fri, 10 Feb 2017 16:36:11 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 13 Feb 2017 14:29:36 -0300
perf diff: Add 'delta-abs' compute method
The 'delta-abs' compute method is same as 'delta' but shows entries with
bigger absolute delta first instead of sorting numerically. This is
only useful together with -o option.
Below is default output (-c delta):
$ perf diff -o 1 -c delta | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
+1.15% [kernel.kallsyms] [k] copy_user_generic_string
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
+0.64% [kernel.kallsyms] [k] kmem_cache_alloc
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
+0.45% [kernel.kallsyms] [k] alloc_set_pte
0.16% +0.45% [kernel.kallsyms] [k] menu_select
+0.41% ld-2.24.so [.] do_lookup_x
Now with 'delta-abs' it shows entries have bigger delta value either
positive or negative.
$ perf diff -o 1 -c delta-abs | grep -v ^# | head
42.22% +4.97% [kernel.kallsyms] [k] cfb_imageblit
12.72% -3.01% [kernel.kallsyms] [k] intel_idle
9.72% -1.31% [unknown] [.] 0x0000000000411343
0.62% +1.23% [kernel.kallsyms] [k] mutex_lock
2.40% +0.95% [kernel.kallsyms] [k] bit_putcs
0.31% +0.79% [kernel.kallsyms] [k] link_path_walk
1.35% -0.71% [kernel.kallsyms] [k] smp_call_function_single
0.00% +0.57% [kernel.kallsyms] [k] __rcu_read_unlock
0.16% +0.45% [kernel.kallsyms] [k] menu_select
0.72% -0.44% [kernel.kallsyms] [k] lookup_fast
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20170210073614.24584-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-diff.txt | 6 ++++-
tools/perf/builtin-diff.c | 46 ++++++++++++++++++++++++++++++++--
2 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 3e9490b..af80284 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -86,7 +86,7 @@ OPTIONS
-c::
--compute::
- Differential computation selection - delta,ratio,wdiff (default is delta).
+ Differential computation selection - delta,ratio,wdiff,delta-abs (default is delta).
See COMPARISON METHODS section for more info.
-p::
@@ -181,6 +181,10 @@ with:
relative to how entries are filtered. Use --percentage=absolute to
prevent such fluctuation.
+delta-abs
+~~~~~~~~~
+Same as 'delta` method, but sort the result with the absolute values.
+
ratio
~~~~~
If specified the 'Ratio' column is displayed with value 'r' computed as:
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 933aeec..781c9e6 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -30,6 +30,7 @@ enum {
PERF_HPP_DIFF__RATIO,
PERF_HPP_DIFF__WEIGHTED_DIFF,
PERF_HPP_DIFF__FORMULA,
+ PERF_HPP_DIFF__DELTA_ABS,
PERF_HPP_DIFF__MAX_INDEX
};
@@ -73,11 +74,13 @@ enum {
COMPUTE_DELTA,
COMPUTE_RATIO,
COMPUTE_WEIGHTED_DIFF,
+ COMPUTE_DELTA_ABS,
COMPUTE_MAX,
};
const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_DELTA] = "delta",
+ [COMPUTE_DELTA_ABS] = "delta-abs",
[COMPUTE_RATIO] = "ratio",
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
@@ -86,6 +89,7 @@ static int compute;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
+ [COMPUTE_DELTA_ABS] = PERF_HPP_DIFF__DELTA_ABS,
[COMPUTE_RATIO] = PERF_HPP_DIFF__RATIO,
[COMPUTE_WEIGHTED_DIFF] = PERF_HPP_DIFF__WEIGHTED_DIFF,
};
@@ -111,6 +115,10 @@ static struct header_column {
.name = "Delta",
.width = 7,
},
+ [PERF_HPP_DIFF__DELTA_ABS] = {
+ .name = "Delta Abs",
+ .width = 7,
+ },
[PERF_HPP_DIFF__RATIO] = {
.name = "Ratio",
.width = 14,
@@ -298,6 +306,7 @@ static int formula_fprintf(struct hist_entry *he, struct hist_entry *pair,
{
switch (compute) {
case COMPUTE_DELTA:
+ case COMPUTE_DELTA_ABS:
return formula_delta(he, pair, buf, size);
case COMPUTE_RATIO:
return formula_ratio(he, pair, buf, size);
@@ -461,6 +470,7 @@ static void hists__precompute(struct hists *hists)
switch (compute) {
case COMPUTE_DELTA:
+ case COMPUTE_DELTA_ABS:
compute_delta(he, pair);
break;
case COMPUTE_RATIO:
@@ -498,6 +508,13 @@ __hist_entry__cmp_compute(struct hist_entry *left, struct hist_entry *right,
return cmp_doubles(l, r);
}
+ case COMPUTE_DELTA_ABS:
+ {
+ double l = fabs(left->diff.period_ratio_delta);
+ double r = fabs(right->diff.period_ratio_delta);
+
+ return cmp_doubles(l, r);
+ }
case COMPUTE_RATIO:
{
double l = left->diff.period_ratio;
@@ -564,7 +581,7 @@ hist_entry__cmp_compute_idx(struct hist_entry *left, struct hist_entry *right,
if (!p_left || !p_right)
return p_left ? -1 : 1;
- if (c != COMPUTE_DELTA) {
+ if (c != COMPUTE_DELTA && c != COMPUTE_DELTA_ABS) {
/*
* The delta can be computed without the baseline, but
* others are not. Put those entries which have no
@@ -607,6 +624,15 @@ hist_entry__cmp_delta(struct perf_hpp_fmt *fmt,
}
static int64_t
+hist_entry__cmp_delta_abs(struct perf_hpp_fmt *fmt,
+ struct hist_entry *left, struct hist_entry *right)
+{
+ struct data__file *d = fmt_to_data_file(fmt);
+
+ return hist_entry__cmp_compute(right, left, COMPUTE_DELTA_ABS, d->idx);
+}
+
+static int64_t
hist_entry__cmp_ratio(struct perf_hpp_fmt *fmt,
struct hist_entry *left, struct hist_entry *right)
{
@@ -633,6 +659,14 @@ hist_entry__cmp_delta_idx(struct perf_hpp_fmt *fmt __maybe_unused,
}
static int64_t
+hist_entry__cmp_delta_abs_idx(struct perf_hpp_fmt *fmt __maybe_unused,
+ struct hist_entry *left, struct hist_entry *right)
+{
+ return hist_entry__cmp_compute_idx(right, left, COMPUTE_DELTA_ABS,
+ sort_compute);
+}
+
+static int64_t
hist_entry__cmp_ratio_idx(struct perf_hpp_fmt *fmt __maybe_unused,
struct hist_entry *left, struct hist_entry *right)
{
@@ -775,7 +809,7 @@ static const struct option options[] = {
OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
"Show only items with match in baseline"),
OPT_CALLBACK('c', "compute", &compute,
- "delta,ratio,wdiff:w1,w2 (default delta)",
+ "delta,delta-abs,ratio,wdiff:w1,w2 (default delta)",
"Entries differential computation selection",
setup_compute),
OPT_BOOLEAN('p', "period", &show_period,
@@ -945,6 +979,7 @@ hpp__entry_pair(struct hist_entry *he, struct hist_entry *pair,
switch (idx) {
case PERF_HPP_DIFF__DELTA:
+ case PERF_HPP_DIFF__DELTA_ABS:
if (pair->diff.computed)
diff = pair->diff.period_ratio_delta;
else
@@ -1118,6 +1153,10 @@ static void data__hpp_register(struct data__file *d, int idx)
fmt->color = hpp__color_wdiff;
fmt->sort = hist_entry__cmp_wdiff;
break;
+ case PERF_HPP_DIFF__DELTA_ABS:
+ fmt->color = hpp__color_delta;
+ fmt->sort = hist_entry__cmp_delta_abs;
+ break;
default:
fmt->sort = hist_entry__cmp_nop;
break;
@@ -1195,6 +1234,9 @@ static int ui_init(void)
case COMPUTE_WEIGHTED_DIFF:
fmt->sort = hist_entry__cmp_wdiff_idx;
break;
+ case COMPUTE_DELTA_ABS:
+ fmt->sort = hist_entry__cmp_delta_abs_idx;
+ break;
default:
BUG_ON(1);
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [tip:perf/core] perf diff: Add diff.order config option
2017-02-10 7:36 ` [PATCH v2 2/4] perf diff: Add diff.order config option Namhyung Kim
@ 2017-02-14 6:38 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 13+ messages in thread
From: tip-bot for Namhyung Kim @ 2017-02-14 6:38 UTC (permalink / raw)
To: linux-tip-commits
Cc: hpa, acme, a.p.zijlstra, treeze.taeung, tglx, jolsa,
linux-kernel, namhyung, mingo
Commit-ID: d49dd15d69731589de4436a6dcfca59567320fdf
Gitweb: http://git.kernel.org/tip/d49dd15d69731589de4436a6dcfca59567320fdf
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Fri, 10 Feb 2017 16:36:12 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 13 Feb 2017 14:29:37 -0300
perf diff: Add diff.order config option
In many cases, I need to look at differences between two data so I often
used the -o option to sort the result base on the difference first.
It'd be nice to have a config option to set it by default.
The diff.order config option is to set the default value of -o/--order
option.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Taeung Song <treeze.taeung@gmail.com>
Link: http://lkml.kernel.org/r/20170210073614.24584-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-config.txt | 7 +++++++
tools/perf/Documentation/perf-diff.txt | 6 +++++-
tools/perf/builtin-diff.c | 14 ++++++++++++++
3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 9365b75..49ab79d 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -498,6 +498,13 @@ record.*::
But if this option is 'no-cache', it will not update the build-id cache.
'skip' skips post-processing and does not update the cache.
+diff.*::
+ diff.order::
+ This option sets the number of columns to sort the result.
+ The default is 0, which means sorting by baseline.
+ Setting it to 1 will sort the result by delta (or other
+ compute method selected).
+
SEE ALSO
--------
linkperf:perf[1]
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index af80284..7c014c9 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -99,7 +99,11 @@ OPTIONS
-o::
--order::
- Specify compute sorting column number.
+ Specify compute sorting column number. 0 means sorting by baseline
+ overhead (default) and 1 means sorting by computed value of column 1
+ (data from the first file other base baseline). Values more than 1
+ can be used only if enough data files are provided.
+ The default value can be set using the diff.order config option.
--percentage::
Determine how to display the overhead percentage of filtered entries.
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 781c9e6..181ff99 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -17,6 +17,7 @@
#include "util/symbol.h"
#include "util/util.h"
#include "util/data.h"
+#include "util/config.h"
#include <stdlib.h>
#include <math.h>
@@ -1291,6 +1292,17 @@ static int data_init(int argc, const char **argv)
return 0;
}
+static int diff__config(const char *var, const char *value,
+ void *cb __maybe_unused)
+{
+ if (!strcmp(var, "diff.order")) {
+ sort_compute = perf_config_int(var, value);
+ return 0;
+ }
+
+ return 0;
+}
+
int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
{
int ret = hists__init();
@@ -1298,6 +1310,8 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
if (ret < 0)
return ret;
+ perf_config(diff__config, NULL);
+
argc = parse_options(argc, argv, options, diff_usage, 0);
if (symbol__init(NULL) < 0)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [tip:perf/core] perf diff: Add diff.compute config option
2017-02-10 7:36 ` [PATCH v2 3/4] perf diff: Add diff.compute " Namhyung Kim
@ 2017-02-14 6:39 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 13+ messages in thread
From: tip-bot for Namhyung Kim @ 2017-02-14 6:39 UTC (permalink / raw)
To: linux-tip-commits
Cc: jolsa, namhyung, acme, a.p.zijlstra, tglx, treeze.taeung,
linux-kernel, hpa, mingo
Commit-ID: 4b35994abe459f08f58b4b3855abf4ba80308680
Gitweb: http://git.kernel.org/tip/4b35994abe459f08f58b4b3855abf4ba80308680
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Fri, 10 Feb 2017 16:36:13 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 13 Feb 2017 14:29:37 -0300
perf diff: Add diff.compute config option
The diff.compute config variable is to set the default compute method of
perf diff command (-c option). Possible values 'delta' (default),
'delta-abs', 'ratio' and 'wdiff'.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Taeung Song <treeze.taeung@gmail.com>
Link: http://lkml.kernel.org/r/20170210073614.24584-4-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-config.txt | 5 +++++
tools/perf/Documentation/perf-diff.txt | 5 +++--
tools/perf/builtin-diff.c | 16 +++++++++++++++-
3 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 49ab79d..5b4fff3 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -505,6 +505,11 @@ diff.*::
Setting it to 1 will sort the result by delta (or other
compute method selected).
+ diff.compute::
+ This options sets the method for computing the diff result.
+ Possible values are 'delta', 'delta-abs', 'ratio' and
+ 'wdiff'. Default is 'delta'.
+
SEE ALSO
--------
linkperf:perf[1]
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 7c014c9..7391299 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -86,8 +86,9 @@ OPTIONS
-c::
--compute::
- Differential computation selection - delta,ratio,wdiff,delta-abs (default is delta).
- See COMPARISON METHODS section for more info.
+ Differential computation selection - delta, ratio, wdiff, delta-abs
+ (default is delta). Default can be changed using diff.compute
+ config option. See COMPARISON METHODS section for more info.
-p::
--period::
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 181ff99..e68cc76 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
-static int compute;
+static int compute = COMPUTE_DELTA;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
@@ -1299,6 +1299,20 @@ static int diff__config(const char *var, const char *value,
sort_compute = perf_config_int(var, value);
return 0;
}
+ if (!strcmp(var, "diff.compute")) {
+ if (!strcmp(value, "delta")) {
+ compute = COMPUTE_DELTA;
+ } else if (!strcmp(value, "delta-abs")) {
+ compute = COMPUTE_DELTA_ABS;
+ } else if (!strcmp(value, "ratio")) {
+ compute = COMPUTE_RATIO;
+ } else if (!strcmp(value, "wdiff")) {
+ compute = COMPUTE_WEIGHTED_DIFF;
+ } else {
+ pr_err("Invalid compute method: %s\n", value);
+ return -1;
+ }
+ }
return 0;
}
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [tip:perf/core] perf diff: Change default setting to "delta-abs"
2017-02-10 16:18 ` [PATCH v2.1 " Namhyung Kim
@ 2017-02-14 6:39 ` tip-bot for Namhyung Kim
0 siblings, 0 replies; 13+ messages in thread
From: tip-bot for Namhyung Kim @ 2017-02-14 6:39 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, peterz, namhyung, acme, jolsa, mingo, tglx
Commit-ID: be57b3fd218ad4a19725ac4bd53e67b2ede42a9d
Gitweb: http://git.kernel.org/tip/be57b3fd218ad4a19725ac4bd53e67b2ede42a9d
Author: Namhyung Kim <namhyung@kernel.org>
AuthorDate: Sat, 11 Feb 2017 01:18:56 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 13 Feb 2017 14:29:38 -0300
perf diff: Change default setting to "delta-abs"
The "delta-abs" compute method will show most changed entries on top.
So users can easily see how much effect between the data. Note that it
also changes the default of -o option to 1 in order to apply the compute
method. To see original-style (sorted by baseline) use -o 0 option.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20170210161856.18422-1-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-diff.txt | 4 ++--
tools/perf/builtin-diff.c | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 7391299..66dbe3de 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -87,7 +87,7 @@ OPTIONS
-c::
--compute::
Differential computation selection - delta, ratio, wdiff, delta-abs
- (default is delta). Default can be changed using diff.compute
+ (default is delta-abs). Default can be changed using diff.compute
config option. See COMPARISON METHODS section for more info.
-p::
@@ -101,7 +101,7 @@ OPTIONS
-o::
--order::
Specify compute sorting column number. 0 means sorting by baseline
- overhead (default) and 1 means sorting by computed value of column 1
+ overhead and 1 (default) means sorting by computed value of column 1
(data from the first file other base baseline). Values more than 1
can be used only if enough data files are provided.
The default value can be set using the diff.order config option.
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index e68cc76..70a2893 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -66,7 +66,7 @@ static bool force;
static bool show_period;
static bool show_formula;
static bool show_baseline_only;
-static unsigned int sort_compute;
+static unsigned int sort_compute = 1;
static s64 compute_wdiff_w1;
static s64 compute_wdiff_w2;
@@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};
-static int compute = COMPUTE_DELTA;
+static int compute = COMPUTE_DELTA_ABS;
static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
@@ -810,7 +810,7 @@ static const struct option options[] = {
OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
"Show only items with match in baseline"),
OPT_CALLBACK('c', "compute", &compute,
- "delta,delta-abs,ratio,wdiff:w1,w2 (default delta)",
+ "delta,delta-abs,ratio,wdiff:w1,w2 (default delta-abs)",
"Entries differential computation selection",
setup_compute),
OPT_BOOLEAN('p', "period", &show_period,
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2017-02-14 6:40 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-10 7:36 [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 1/4] perf diff: Add 'delta-abs' compute method Namhyung Kim
2017-02-14 6:38 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 2/4] perf diff: Add diff.order config option Namhyung Kim
2017-02-14 6:38 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 3/4] perf diff: Add diff.compute " Namhyung Kim
2017-02-14 6:39 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:36 ` [PATCH v2 4/4] perf diff: Change default setting to "delta-abs" Namhyung Kim
2017-02-10 16:18 ` [PATCH v2.1 " Namhyung Kim
2017-02-14 6:39 ` [tip:perf/core] " tip-bot for Namhyung Kim
2017-02-10 7:41 ` [PATCHSET 0/4] perf diff: Introduce delta-abs compute method (v2) Ingo Molnar
2017-02-10 9:14 ` Namhyung Kim
2017-02-10 10:29 ` Ingo Molnar
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.