* [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2)
@ 2022-11-12 3:22 Namhyung Kim
2022-11-12 3:22 ` [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode Namhyung Kim
` (10 more replies)
0 siblings, 11 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
Hello,
I'm working on cleaning up the perf stat code and found a number of issues.
Before moving on to the real changes, I'd like to fix those first. I'll
think about how to test this properly.
changes in v2)
* move applied patches to the beginning (Arnaldo)
* make it error to use --interval-clear with other output (Ian)
* add two more patches for CSV output
* add Acked-by from Ian
You can get it from 'perf/stat-cleanup-v2' branch in
git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git
Thanks,
Namhyung
Namhyung Kim (11):
perf stat: Fix crash with --per-node --metric-only in CSV mode
perf stat: Move common code in print_metric_headers()
perf stat: Fix --metric-only --json output
perf stat: Increase metric length to align outputs
perf stat: Clear screen only if output file is a tty
perf stat: Do not indent headers for JSON
perf stat: Add header for interval in JSON output
perf stat: Fix condition in print_interval()
perf stat: Consolidate condition to print metrics
perf stat: Fix summary output in CSV with --metric-only
perf stat: Add missing separator in the CSV header
tools/perf/builtin-stat.c | 8 ++++
tools/perf/util/stat-display.c | 68 ++++++++++++++++------------------
2 files changed, 40 insertions(+), 36 deletions(-)
base-commit: 816815b852216f3aa3a43e2ce91c5510927cd61b
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-14 18:17 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 02/11] perf stat: Move common code in print_metric_headers() Namhyung Kim
` (9 subsequent siblings)
10 siblings, 1 reply; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
The following command will get segfault due to missing aggr_header_csv
for AGGR_NODE:
$ sudo perf stat -a --per-node -x, --metric-only true
Fixes: 86895b480a2f ("perf stat: Add --per-node agregation support")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 657434cd29ee..ea41e6308c50 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -534,7 +534,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int
[AGGR_CORE] = 2,
[AGGR_THREAD] = 1,
[AGGR_UNSET] = 0,
- [AGGR_NODE] = 0,
+ [AGGR_NODE] = 1,
};
pm = config->metric_only ? print_metric_only_csv : print_metric_csv;
@@ -819,6 +819,7 @@ static int aggr_header_lens[] = {
[AGGR_SOCKET] = 12,
[AGGR_NONE] = 6,
[AGGR_THREAD] = 24,
+ [AGGR_NODE] = 6,
[AGGR_GLOBAL] = 0,
};
@@ -828,6 +829,7 @@ static const char *aggr_header_csv[] = {
[AGGR_SOCKET] = "socket,cpus",
[AGGR_NONE] = "cpu,",
[AGGR_THREAD] = "comm-pid,",
+ [AGGR_NODE] = "node,",
[AGGR_GLOBAL] = ""
};
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 02/11] perf stat: Move common code in print_metric_headers()
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
2022-11-12 3:22 ` [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-12 3:22 ` [PATCH 03/11] perf stat: Fix --metric-only --json output Namhyung Kim
` (8 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
The struct perf_stat_output_ctx is set in a loop with the same values.
Move the code out of the loop and keep the loop minimal.
Acked-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index ea41e6308c50..c7b3a1e10263 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -837,11 +837,16 @@ static void print_metric_headers(struct perf_stat_config *config,
struct evlist *evlist,
const char *prefix, bool no_indent)
{
- struct perf_stat_output_ctx out;
struct evsel *counter;
struct outstate os = {
.fh = config->output
};
+ struct perf_stat_output_ctx out = {
+ .ctx = &os,
+ .print_metric = print_metric_header,
+ .new_line = new_line_metric,
+ .force_header = true,
+ };
bool first = true;
if (config->json_output && !config->interval)
@@ -865,13 +870,11 @@ static void print_metric_headers(struct perf_stat_config *config,
/* Print metrics headers only */
evlist__for_each_entry(evlist, counter) {
os.evsel = counter;
- out.ctx = &os;
- out.print_metric = print_metric_header;
+
if (!first && config->json_output)
fprintf(config->output, ", ");
first = false;
- out.new_line = new_line_metric;
- out.force_header = true;
+
perf_stat__print_shadow_stats(config, counter, 0,
0,
&out,
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 03/11] perf stat: Fix --metric-only --json output
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
2022-11-12 3:22 ` [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode Namhyung Kim
2022-11-12 3:22 ` [PATCH 02/11] perf stat: Move common code in print_metric_headers() Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-14 18:18 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 04/11] perf stat: Increase metric length to align outputs Namhyung Kim
` (7 subsequent siblings)
10 siblings, 1 reply; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
Currently it prints all metric headers for JSON output. But actually it
skips some metrics with valid_only_metric(). So the output looks like:
$ perf stat --metric-only --json true
{"unit" : "CPUs utilized", "unit" : "/sec", "unit" : "/sec", "unit" : "/sec", "unit" : "GHz", "unit" : "insn per cycle", "unit" : "/sec", "unit" : "branch-misses of all branches"}
{"metric-value" : "3.861"}{"metric-value" : "0.79"}{"metric-value" : "3.04"}
As you can see there are 8 units in the header but only 3 metric-values
are there. It should skip the unused headers as well. Also each unit
should be printed as a separate object like metric values.
With this patch:
$ perf stat --metric-only --json true
{"unit" : "GHz"}{"unit" : "insn per cycle"}{"unit" : "branch-misses of all branches"}
{"metric-value" : "4.166"}{"metric-value" : "0.73"}{"metric-value" : "2.96"}
Fixes: df936cadfb58 ("perf stat: Add JSON output option")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 22 +++-------------------
1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index c7b3a1e10263..96ad0c71adc2 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -430,12 +430,12 @@ static void print_metric_header(struct perf_stat_config *config,
os->evsel->priv != os->evsel->evlist->selected->priv)
return;
- if (!valid_only_metric(unit) && !config->json_output)
+ if (!valid_only_metric(unit))
return;
unit = fixunit(tbuf, os->evsel, unit);
if (config->json_output)
- fprintf(os->fh, "\"unit\" : \"%s\"", unit);
+ fprintf(os->fh, "{\"unit\" : \"%s\"}", unit);
else if (config->csv_output)
fprintf(os->fh, "%s%s", unit, config->csv_sep);
else
@@ -847,10 +847,6 @@ static void print_metric_headers(struct perf_stat_config *config,
.new_line = new_line_metric,
.force_header = true,
};
- bool first = true;
-
- if (config->json_output && !config->interval)
- fprintf(config->output, "{");
if (prefix && !config->json_output)
fprintf(config->output, "%s", prefix);
@@ -871,18 +867,12 @@ static void print_metric_headers(struct perf_stat_config *config,
evlist__for_each_entry(evlist, counter) {
os.evsel = counter;
- if (!first && config->json_output)
- fprintf(config->output, ", ");
- first = false;
-
perf_stat__print_shadow_stats(config, counter, 0,
0,
&out,
&config->metric_events,
&rt_stat);
}
- if (config->json_output)
- fprintf(config->output, "}");
fputc('\n', config->output);
}
@@ -954,14 +944,8 @@ static void print_interval(struct perf_stat_config *config,
}
}
- if ((num_print_interval == 0 || config->interval_clear)
- && metric_only && !config->json_output)
+ if ((num_print_interval == 0 || config->interval_clear) && metric_only)
print_metric_headers(config, evlist, " ", true);
- if ((num_print_interval == 0 || config->interval_clear)
- && metric_only && config->json_output) {
- fprintf(output, "{");
- print_metric_headers(config, evlist, " ", true);
- }
if (++num_print_interval == 25)
num_print_interval = 0;
}
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 04/11] perf stat: Increase metric length to align outputs
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (2 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 03/11] perf stat: Fix --metric-only --json output Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-12 3:22 ` [PATCH 05/11] perf stat: Clear screen only if output file is a tty Namhyung Kim
` (6 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
When perf stat is called with very detailed events, the output doesn't
align well like below:
$ sudo perf stat -a -ddd sleep 1
Performance counter stats for 'system wide':
8,020.23 msec cpu-clock # 7.997 CPUs utilized
3,970 context-switches # 494.998 /sec
169 cpu-migrations # 21.072 /sec
586 page-faults # 73.065 /sec
649,568,060 cycles # 0.081 GHz (30.42%)
304,044,345 instructions # 0.47 insn per cycle (38.40%)
60,313,022 branches # 7.520 M/sec (38.89%)
2,766,919 branch-misses # 4.59% of all branches (39.26%)
74,422,951 L1-dcache-loads # 9.279 M/sec (39.39%)
8,025,568 L1-dcache-load-misses # 10.78% of all L1-dcache accesses (39.22%)
3,314,995 LLC-loads # 413.329 K/sec (30.83%)
1,225,619 LLC-load-misses # 36.97% of all LL-cache accesses (30.45%)
<not supported> L1-icache-loads
20,420,493 L1-icache-load-misses # 0.00% of all L1-icache accesses (30.29%)
58,017,947 dTLB-loads # 7.234 M/sec (30.37%)
704,677 dTLB-load-misses # 1.21% of all dTLB cache accesses (30.27%)
234,225 iTLB-loads # 29.204 K/sec (30.29%)
417,166 iTLB-load-misses # 178.10% of all iTLB cache accesses (30.32%)
<not supported> L1-dcache-prefetches
<not supported> L1-dcache-prefetch-misses
1.002947355 seconds time elapsed
Increase the METRIC_LEN by 3 so that it can align properly.
$ sudo ./perf stat -a -ddd true
Performance counter stats for 'system wide':
233.70 msec cpu-clock # 11.714 CPUs utilized
320 context-switches # 1.369 K/sec
31 cpu-migrations # 132.648 /sec
482 page-faults # 2.062 K/sec
38,414,140 cycles # 0.164 GHz (6.65%)
13,656,335 instructions # 0.36 insn per cycle (20.31%)
3,594,871 branches # 15.382 M/sec (34.06%)
124,071 branch-misses # 3.45% of all branches (47.74%)
14,016,847 L1-dcache-loads # 59.977 M/sec (61.42%)
789,534 L1-dcache-load-misses # 5.63% of all L1-dcache accesses (65.98%)
315,353 LLC-loads # 1.349 M/sec (47.13%)
171,244 LLC-load-misses # 54.30% of all LL-cache accesses (41.98%)
<not supported> L1-icache-loads
2,591,299 L1-icache-load-misses # 0.00% of all L1-icache accesses (36.10%)
60,421,987 dTLB-loads # 258.543 M/sec (27.47%)
123,843 dTLB-load-misses # 0.20% of all dTLB cache accesses (18.88%)
38,289 iTLB-loads # 163.837 K/sec (10.34%)
21,631 iTLB-load-misses # 56.49% of all iTLB cache accesses (2.53%)
<not supported> L1-dcache-prefetches
<not supported> L1-dcache-prefetch-misses
Acked-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 96ad0c71adc2..3ddc159df4b2 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -218,7 +218,7 @@ struct outstate {
struct evsel *evsel;
};
-#define METRIC_LEN 35
+#define METRIC_LEN 38
static void new_line_std(struct perf_stat_config *config __maybe_unused,
void *ctx)
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 05/11] perf stat: Clear screen only if output file is a tty
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (3 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 04/11] perf stat: Increase metric length to align outputs Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-14 18:19 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 06/11] perf stat: Do not indent headers for JSON Namhyung Kim
` (5 subsequent siblings)
10 siblings, 1 reply; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
The --interval-clear option makes perf stat to clear the terminal at
each interval. But it doesn't need to clear the screen when it saves
to a file. Make it fail when it's enabled with the output options.
$ perf stat -I 1 --interval-clear -o myfile true
--interval-clear does not work with output
Usage: perf stat [<options>] [<command>]
-o, --output <file> output file name
--log-fd <n> log output to fd, instead of stderr
--interval-clear clear screen in between new interval
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/builtin-stat.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index d5e1670bca20..1d79801f4e84 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -2403,6 +2403,14 @@ int cmd_stat(int argc, const char **argv)
}
}
+ if (stat_config.interval_clear && !isatty(fileno(output))) {
+ fprintf(stderr, "--interval-clear does not work with output\n");
+ parse_options_usage(stat_usage, stat_options, "o", 1);
+ parse_options_usage(NULL, stat_options, "log-fd", 0);
+ parse_options_usage(NULL, stat_options, "interval-clear", 0);
+ return -1;
+ }
+
stat_config.output = output;
/*
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 06/11] perf stat: Do not indent headers for JSON
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (4 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 05/11] perf stat: Clear screen only if output file is a tty Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-12 3:22 ` [PATCH 07/11] perf stat: Add header for interval in JSON output Namhyung Kim
` (4 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
Currently --metric-only with --json indents header lines. This is not
needed for JSON.
$ perf stat -aA --metric-only -j true
{"unit" : "GHz"}{"unit" : "insn per cycle"}{"unit" : "branch-misses of all branches"}
{"cpu" : "0", {"metric-value" : "0.101"}{"metric-value" : "0.86"}{"metric-value" : "1.91"}
{"cpu" : "1", {"metric-value" : "0.102"}{"metric-value" : "0.87"}{"metric-value" : "2.02"}
{"cpu" : "2", {"metric-value" : "0.085"}{"metric-value" : "1.02"}{"metric-value" : "1.69"}
...
Note that the other lines are broken JSON, but it will be handled later.
Acked-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 3ddc159df4b2..dbd3ba380c9f 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -851,7 +851,7 @@ static void print_metric_headers(struct perf_stat_config *config,
if (prefix && !config->json_output)
fprintf(config->output, "%s", prefix);
- if (!config->csv_output && !no_indent)
+ if (!config->csv_output && !config->json_output && !no_indent)
fprintf(config->output, "%*s",
aggr_header_lens[config->aggr_mode], "");
if (config->csv_output) {
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 07/11] perf stat: Add header for interval in JSON output
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (5 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 06/11] perf stat: Do not indent headers for JSON Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-12 3:22 ` [PATCH 08/11] perf stat: Fix condition in print_interval() Namhyung Kim
` (3 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
It missed to print a matching header line for intervals.
Before:
# perf stat -a -e cycles,instructions --metric-only -j -I 500
{"unit" : "insn per cycle"}
{"interval" : 0.500544283}{"metric-value" : "1.96"}
^C
After:
# perf stat -a -e cycles,instructions --metric-only -j -I 500
{"unit" : "sec"}{"unit" : "insn per cycle"}
{"interval" : 0.500515681}{"metric-value" : "2.31"}
^C
Acked-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index dbd3ba380c9f..03d58277e8d6 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -860,6 +860,10 @@ static void print_metric_headers(struct perf_stat_config *config,
if (!config->iostat_run)
fputs(aggr_header_csv[config->aggr_mode], config->output);
}
+ if (config->json_output) {
+ if (config->interval)
+ fputs("{\"unit\" : \"sec\"}", config->output);
+ }
if (config->iostat_run)
iostat_print_header_prefix(config);
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 08/11] perf stat: Fix condition in print_interval()
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (6 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 07/11] perf stat: Add header for interval in JSON output Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-12 3:22 ` [PATCH 09/11] perf stat: Consolidate condition to print metrics Namhyung Kim
` (2 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
The num_print_interval and config->interval_clear should be checked
together like other places like later in the function. Otherwise,
the --interval-clear option could print the headers for the CSV or
JSON output unnecessarily.
Acked-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 03d58277e8d6..5f4fb0bd4037 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -902,8 +902,8 @@ static void print_interval(struct perf_stat_config *config,
sprintf(prefix, "{\"interval\" : %lu.%09lu}", (unsigned long)
ts->tv_sec, ts->tv_nsec);
- if ((num_print_interval == 0 && !config->csv_output && !config->json_output)
- || config->interval_clear) {
+ if ((num_print_interval == 0 || config->interval_clear) &&
+ !config->csv_output && !config->json_output) {
switch (config->aggr_mode) {
case AGGR_NODE:
fprintf(output, "# time node cpus");
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 09/11] perf stat: Consolidate condition to print metrics
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (7 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 08/11] perf stat: Fix condition in print_interval() Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-12 3:22 ` [PATCH 10/11] perf stat: Fix summary output in CSV with --metric-only Namhyung Kim
2022-11-12 3:22 ` [PATCH 11/11] perf stat: Add missing separator in the CSV header Namhyung Kim
10 siblings, 0 replies; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
The pm variable holds an appropriate function to print metrics for CSV
anf JSON already. So we can combine the if statement to simplify the
code a little bit. This also matches to the above condition for non-CSV
and non-JSON case.
Acked-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 5f4fb0bd4037..ce81798b5864 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -600,9 +600,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int
pm(config, &os, NULL, NULL, "", 0);
print_noise(config, counter, noise);
print_running(config, run, ena);
- if (config->csv_output)
- pm(config, &os, NULL, NULL, "", 0);
- else if (config->json_output)
+ if (config->csv_output || config->json_output)
pm(config, &os, NULL, NULL, "", 0);
return;
}
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 10/11] perf stat: Fix summary output in CSV with --metric-only
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (8 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 09/11] perf stat: Consolidate condition to print metrics Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-14 18:20 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 11/11] perf stat: Add missing separator in the CSV header Namhyung Kim
10 siblings, 1 reply; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
It should not print "summary" for each event when --metric-only is set.
Before:
$ sudo perf stat -a --per-socket --summary -x, --metric-only true
time,socket,cpusGhz,insn per cycle,branch-misses of all branches,
0.000709079,S0,8,0.893,2.40,0.45,
S0,8, summary, summary, summary, summary, summary,0.893, summary,2.40, summary, summary,0.45,
After:
$ sudo perf stat -a --per-socket --summary -x, --metric-only true
time,socket,cpusGHz,insn per cycle,branch-misses of all branches,
0.000882297,S0,8,0.598,1.64,0.64,
summary,S0,8,0.598,1.64,0.64,
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index ce81798b5864..96bb7a42fd41 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -549,7 +549,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int
}
if (!config->no_csv_summary && config->csv_output &&
- config->summary && !config->interval) {
+ config->summary && !config->interval && !config->metric_only) {
fprintf(config->output, "%16s%s", "summary", config->csv_sep);
}
@@ -732,8 +732,13 @@ static void print_aggr(struct perf_stat_config *config,
* Without each counter has its own line.
*/
for (s = 0; s < config->aggr_map->nr; s++) {
- if (prefix && metric_only)
- fprintf(output, "%s", prefix);
+ if (metric_only) {
+ if (prefix)
+ fprintf(output, "%s", prefix);
+ else if (config->summary && !config->no_csv_summary &&
+ config->csv_output && !config->interval)
+ fprintf(output, "%16s%s", "summary", config->csv_sep);
+ }
first = true;
evlist__for_each_entry(evlist, counter) {
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 11/11] perf stat: Add missing separator in the CSV header
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
` (9 preceding siblings ...)
2022-11-12 3:22 ` [PATCH 10/11] perf stat: Fix summary output in CSV with --metric-only Namhyung Kim
@ 2022-11-12 3:22 ` Namhyung Kim
2022-11-14 18:21 ` Ian Rogers
10 siblings, 1 reply; 17+ messages in thread
From: Namhyung Kim @ 2022-11-12 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Jiri Olsa
Cc: Ingo Molnar, Peter Zijlstra, LKML, Ian Rogers, Adrian Hunter,
linux-perf-users, Kan Liang, Zhengjun Xing, James Clark
It should have a comma after 'cpus' for socket and die aggregation mode.
The output of the following command shows the issue.
$ sudo perf stat -a --per-socket -x, --metric-only -I1 true
Before:
+--- here
V
time,socket,cpusGhz,insn per cycle,branch-misses of all branches,
0.000908461,S0,8,0.950,1.65,1.21,
After:
time,socket,cpus,GHz,insn per cycle,branch-misses of all branches,
0.000683094,S0,8,0.593,2.00,0.60,
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/util/stat-display.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index 96bb7a42fd41..a316807255cd 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -828,8 +828,8 @@ static int aggr_header_lens[] = {
static const char *aggr_header_csv[] = {
[AGGR_CORE] = "core,cpus,",
- [AGGR_DIE] = "die,cpus",
- [AGGR_SOCKET] = "socket,cpus",
+ [AGGR_DIE] = "die,cpus,",
+ [AGGR_SOCKET] = "socket,cpus,",
[AGGR_NONE] = "cpu,",
[AGGR_THREAD] = "comm-pid,",
[AGGR_NODE] = "node,",
--
2.38.1.493.g58b659f92b-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode
2022-11-12 3:22 ` [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode Namhyung Kim
@ 2022-11-14 18:17 ` Ian Rogers
0 siblings, 0 replies; 17+ messages in thread
From: Ian Rogers @ 2022-11-14 18:17 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ingo Molnar, Peter Zijlstra,
LKML, Adrian Hunter, linux-perf-users, Kan Liang, Zhengjun Xing,
James Clark
On Fri, Nov 11, 2022 at 7:22 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> The following command will get segfault due to missing aggr_header_csv
> for AGGR_NODE:
>
> $ sudo perf stat -a --per-node -x, --metric-only true
>
> Fixes: 86895b480a2f ("perf stat: Add --per-node agregation support")
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/util/stat-display.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index 657434cd29ee..ea41e6308c50 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -534,7 +534,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int
> [AGGR_CORE] = 2,
> [AGGR_THREAD] = 1,
> [AGGR_UNSET] = 0,
> - [AGGR_NODE] = 0,
> + [AGGR_NODE] = 1,
> };
>
> pm = config->metric_only ? print_metric_only_csv : print_metric_csv;
> @@ -819,6 +819,7 @@ static int aggr_header_lens[] = {
> [AGGR_SOCKET] = 12,
> [AGGR_NONE] = 6,
> [AGGR_THREAD] = 24,
> + [AGGR_NODE] = 6,
> [AGGR_GLOBAL] = 0,
> };
>
> @@ -828,6 +829,7 @@ static const char *aggr_header_csv[] = {
> [AGGR_SOCKET] = "socket,cpus",
> [AGGR_NONE] = "cpu,",
> [AGGR_THREAD] = "comm-pid,",
> + [AGGR_NODE] = "node,",
> [AGGR_GLOBAL] = ""
> };
>
> --
> 2.38.1.493.g58b659f92b-goog
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 03/11] perf stat: Fix --metric-only --json output
2022-11-12 3:22 ` [PATCH 03/11] perf stat: Fix --metric-only --json output Namhyung Kim
@ 2022-11-14 18:18 ` Ian Rogers
0 siblings, 0 replies; 17+ messages in thread
From: Ian Rogers @ 2022-11-14 18:18 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ingo Molnar, Peter Zijlstra,
LKML, Adrian Hunter, linux-perf-users, Kan Liang, Zhengjun Xing,
James Clark
On Fri, Nov 11, 2022 at 7:22 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Currently it prints all metric headers for JSON output. But actually it
> skips some metrics with valid_only_metric(). So the output looks like:
>
> $ perf stat --metric-only --json true
> {"unit" : "CPUs utilized", "unit" : "/sec", "unit" : "/sec", "unit" : "/sec", "unit" : "GHz", "unit" : "insn per cycle", "unit" : "/sec", "unit" : "branch-misses of all branches"}
> {"metric-value" : "3.861"}{"metric-value" : "0.79"}{"metric-value" : "3.04"}
>
> As you can see there are 8 units in the header but only 3 metric-values
> are there. It should skip the unused headers as well. Also each unit
> should be printed as a separate object like metric values.
>
> With this patch:
>
> $ perf stat --metric-only --json true
> {"unit" : "GHz"}{"unit" : "insn per cycle"}{"unit" : "branch-misses of all branches"}
> {"metric-value" : "4.166"}{"metric-value" : "0.73"}{"metric-value" : "2.96"}
>
> Fixes: df936cadfb58 ("perf stat: Add JSON output option")
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/util/stat-display.c | 22 +++-------------------
> 1 file changed, 3 insertions(+), 19 deletions(-)
>
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index c7b3a1e10263..96ad0c71adc2 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -430,12 +430,12 @@ static void print_metric_header(struct perf_stat_config *config,
> os->evsel->priv != os->evsel->evlist->selected->priv)
> return;
>
> - if (!valid_only_metric(unit) && !config->json_output)
> + if (!valid_only_metric(unit))
> return;
> unit = fixunit(tbuf, os->evsel, unit);
>
> if (config->json_output)
> - fprintf(os->fh, "\"unit\" : \"%s\"", unit);
> + fprintf(os->fh, "{\"unit\" : \"%s\"}", unit);
> else if (config->csv_output)
> fprintf(os->fh, "%s%s", unit, config->csv_sep);
> else
> @@ -847,10 +847,6 @@ static void print_metric_headers(struct perf_stat_config *config,
> .new_line = new_line_metric,
> .force_header = true,
> };
> - bool first = true;
> -
> - if (config->json_output && !config->interval)
> - fprintf(config->output, "{");
>
> if (prefix && !config->json_output)
> fprintf(config->output, "%s", prefix);
> @@ -871,18 +867,12 @@ static void print_metric_headers(struct perf_stat_config *config,
> evlist__for_each_entry(evlist, counter) {
> os.evsel = counter;
>
> - if (!first && config->json_output)
> - fprintf(config->output, ", ");
> - first = false;
> -
> perf_stat__print_shadow_stats(config, counter, 0,
> 0,
> &out,
> &config->metric_events,
> &rt_stat);
> }
> - if (config->json_output)
> - fprintf(config->output, "}");
> fputc('\n', config->output);
> }
>
> @@ -954,14 +944,8 @@ static void print_interval(struct perf_stat_config *config,
> }
> }
>
> - if ((num_print_interval == 0 || config->interval_clear)
> - && metric_only && !config->json_output)
> + if ((num_print_interval == 0 || config->interval_clear) && metric_only)
> print_metric_headers(config, evlist, " ", true);
> - if ((num_print_interval == 0 || config->interval_clear)
> - && metric_only && config->json_output) {
> - fprintf(output, "{");
> - print_metric_headers(config, evlist, " ", true);
> - }
> if (++num_print_interval == 25)
> num_print_interval = 0;
> }
> --
> 2.38.1.493.g58b659f92b-goog
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 05/11] perf stat: Clear screen only if output file is a tty
2022-11-12 3:22 ` [PATCH 05/11] perf stat: Clear screen only if output file is a tty Namhyung Kim
@ 2022-11-14 18:19 ` Ian Rogers
0 siblings, 0 replies; 17+ messages in thread
From: Ian Rogers @ 2022-11-14 18:19 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ingo Molnar, Peter Zijlstra,
LKML, Adrian Hunter, linux-perf-users, Kan Liang, Zhengjun Xing,
James Clark
On Fri, Nov 11, 2022 at 7:22 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> The --interval-clear option makes perf stat to clear the terminal at
> each interval. But it doesn't need to clear the screen when it saves
> to a file. Make it fail when it's enabled with the output options.
>
> $ perf stat -I 1 --interval-clear -o myfile true
> --interval-clear does not work with output
>
> Usage: perf stat [<options>] [<command>]
>
> -o, --output <file> output file name
> --log-fd <n> log output to fd, instead of stderr
> --interval-clear clear screen in between new interval
>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/builtin-stat.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index d5e1670bca20..1d79801f4e84 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -2403,6 +2403,14 @@ int cmd_stat(int argc, const char **argv)
> }
> }
>
> + if (stat_config.interval_clear && !isatty(fileno(output))) {
> + fprintf(stderr, "--interval-clear does not work with output\n");
> + parse_options_usage(stat_usage, stat_options, "o", 1);
> + parse_options_usage(NULL, stat_options, "log-fd", 0);
> + parse_options_usage(NULL, stat_options, "interval-clear", 0);
> + return -1;
> + }
> +
> stat_config.output = output;
>
> /*
> --
> 2.38.1.493.g58b659f92b-goog
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 10/11] perf stat: Fix summary output in CSV with --metric-only
2022-11-12 3:22 ` [PATCH 10/11] perf stat: Fix summary output in CSV with --metric-only Namhyung Kim
@ 2022-11-14 18:20 ` Ian Rogers
0 siblings, 0 replies; 17+ messages in thread
From: Ian Rogers @ 2022-11-14 18:20 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ingo Molnar, Peter Zijlstra,
LKML, Adrian Hunter, linux-perf-users, Kan Liang, Zhengjun Xing,
James Clark
On Fri, Nov 11, 2022 at 7:23 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> It should not print "summary" for each event when --metric-only is set.
>
> Before:
> $ sudo perf stat -a --per-socket --summary -x, --metric-only true
> time,socket,cpusGhz,insn per cycle,branch-misses of all branches,
> 0.000709079,S0,8,0.893,2.40,0.45,
> S0,8, summary, summary, summary, summary, summary,0.893, summary,2.40, summary, summary,0.45,
>
> After:
> $ sudo perf stat -a --per-socket --summary -x, --metric-only true
> time,socket,cpusGHz,insn per cycle,branch-misses of all branches,
> 0.000882297,S0,8,0.598,1.64,0.64,
> summary,S0,8,0.598,1.64,0.64,
>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/util/stat-display.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index ce81798b5864..96bb7a42fd41 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -549,7 +549,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int
> }
>
> if (!config->no_csv_summary && config->csv_output &&
> - config->summary && !config->interval) {
> + config->summary && !config->interval && !config->metric_only) {
> fprintf(config->output, "%16s%s", "summary", config->csv_sep);
> }
>
> @@ -732,8 +732,13 @@ static void print_aggr(struct perf_stat_config *config,
> * Without each counter has its own line.
> */
> for (s = 0; s < config->aggr_map->nr; s++) {
> - if (prefix && metric_only)
> - fprintf(output, "%s", prefix);
> + if (metric_only) {
> + if (prefix)
> + fprintf(output, "%s", prefix);
> + else if (config->summary && !config->no_csv_summary &&
> + config->csv_output && !config->interval)
> + fprintf(output, "%16s%s", "summary", config->csv_sep);
> + }
>
> first = true;
> evlist__for_each_entry(evlist, counter) {
> --
> 2.38.1.493.g58b659f92b-goog
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 11/11] perf stat: Add missing separator in the CSV header
2022-11-12 3:22 ` [PATCH 11/11] perf stat: Add missing separator in the CSV header Namhyung Kim
@ 2022-11-14 18:21 ` Ian Rogers
0 siblings, 0 replies; 17+ messages in thread
From: Ian Rogers @ 2022-11-14 18:21 UTC (permalink / raw)
To: Namhyung Kim
Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ingo Molnar, Peter Zijlstra,
LKML, Adrian Hunter, linux-perf-users, Kan Liang, Zhengjun Xing,
James Clark
On Fri, Nov 11, 2022 at 7:23 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> It should have a comma after 'cpus' for socket and die aggregation mode.
> The output of the following command shows the issue.
>
> $ sudo perf stat -a --per-socket -x, --metric-only -I1 true
>
> Before:
> +--- here
> V
> time,socket,cpusGhz,insn per cycle,branch-misses of all branches,
> 0.000908461,S0,8,0.950,1.65,1.21,
>
> After:
> time,socket,cpus,GHz,insn per cycle,branch-misses of all branches,
> 0.000683094,S0,8,0.593,2.00,0.60,
>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> ---
> tools/perf/util/stat-display.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
> index 96bb7a42fd41..a316807255cd 100644
> --- a/tools/perf/util/stat-display.c
> +++ b/tools/perf/util/stat-display.c
> @@ -828,8 +828,8 @@ static int aggr_header_lens[] = {
>
> static const char *aggr_header_csv[] = {
> [AGGR_CORE] = "core,cpus,",
> - [AGGR_DIE] = "die,cpus",
> - [AGGR_SOCKET] = "socket,cpus",
> + [AGGR_DIE] = "die,cpus,",
> + [AGGR_SOCKET] = "socket,cpus,",
> [AGGR_NONE] = "cpu,",
> [AGGR_THREAD] = "comm-pid,",
> [AGGR_NODE] = "node,",
> --
> 2.38.1.493.g58b659f92b-goog
>
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2022-11-14 18:21 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-12 3:22 [PATCHSET 00/11] perf stat: Cleanup perf stat output display (v2) Namhyung Kim
2022-11-12 3:22 ` [PATCH 01/11] perf stat: Fix crash with --per-node --metric-only in CSV mode Namhyung Kim
2022-11-14 18:17 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 02/11] perf stat: Move common code in print_metric_headers() Namhyung Kim
2022-11-12 3:22 ` [PATCH 03/11] perf stat: Fix --metric-only --json output Namhyung Kim
2022-11-14 18:18 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 04/11] perf stat: Increase metric length to align outputs Namhyung Kim
2022-11-12 3:22 ` [PATCH 05/11] perf stat: Clear screen only if output file is a tty Namhyung Kim
2022-11-14 18:19 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 06/11] perf stat: Do not indent headers for JSON Namhyung Kim
2022-11-12 3:22 ` [PATCH 07/11] perf stat: Add header for interval in JSON output Namhyung Kim
2022-11-12 3:22 ` [PATCH 08/11] perf stat: Fix condition in print_interval() Namhyung Kim
2022-11-12 3:22 ` [PATCH 09/11] perf stat: Consolidate condition to print metrics Namhyung Kim
2022-11-12 3:22 ` [PATCH 10/11] perf stat: Fix summary output in CSV with --metric-only Namhyung Kim
2022-11-14 18:20 ` Ian Rogers
2022-11-12 3:22 ` [PATCH 11/11] perf stat: Add missing separator in the CSV header Namhyung Kim
2022-11-14 18:21 ` Ian Rogers
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.