From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
Changbin Du <changbin.du@huawei.com>,
John Fastabend <john.fastabend@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
Stephane Eranian <eranian@google.com>
Subject: [PATCH v1] perf top: Make zeroing histogram on refresh the default
Date: Thu, 16 May 2024 15:21:59 -0700 [thread overview]
Message-ID: <20240516222159.3710131-1-irogers@google.com> (raw)
Instead of decaying histograms over time change it so that they are
zero-ed on each perf top refresh. Previously the option '-z', or
pressing 'z' in tui mode, would enable this behavior. Decaying samples
is non-intuitive as it isn't how "top" works. Make zeroing on refresh
the default and rename the command line options from 'z' to 'Z' and
'zero' to 'decay'.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/Documentation/perf-top.txt | 6 +++---
tools/perf/builtin-top.c | 23 +++++++++++++----------
tools/perf/ui/browsers/hists.c | 7 ++++---
tools/perf/util/top.h | 2 +-
4 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt
index 667e5102075e..f1524cc0d409 100644
--- a/tools/perf/Documentation/perf-top.txt
+++ b/tools/perf/Documentation/perf-top.txt
@@ -124,9 +124,9 @@ Default is to monitor all CPUS.
--verbose::
Be more verbose (show counter open errors, etc).
--z::
---zero::
- Zero history across display updates.
+-Z::
+--decay::
+ Decay rather than zero history across display updates.
-s::
--sort::
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index e8cbbf10d361..8f06635cb7cd 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -266,10 +266,10 @@ static void perf_top__show_details(struct perf_top *top)
more = symbol__annotate_printf(&he->ms, top->sym_evsel);
if (top->evlist->enabled) {
- if (top->zero)
- symbol__annotate_zero_histogram(symbol, top->sym_evsel->core.idx);
- else
+ if (top->decay_samples)
symbol__annotate_decay_histogram(symbol, top->sym_evsel->core.idx);
+ else
+ symbol__annotate_zero_histogram(symbol, top->sym_evsel->core.idx);
}
if (more != 0)
printf("%d lines not displayed, maybe increase display entries [e]\n", more);
@@ -292,11 +292,11 @@ static void perf_top__resort_hists(struct perf_top *t)
hists__unlink(hists);
if (evlist->enabled) {
- if (t->zero) {
- hists__delete_entries(hists);
- } else {
+ if (t->decay_samples) {
hists__decay_entries(hists, t->hide_user_symbols,
t->hide_kernel_symbols);
+ } else {
+ hists__delete_entries(hists);
}
}
@@ -460,7 +460,9 @@ static void perf_top__print_mapped_keys(struct perf_top *top)
fprintf(stdout,
"\t[U] hide user symbols. \t(%s)\n",
top->hide_user_symbols ? "yes" : "no");
- fprintf(stdout, "\t[z] toggle sample zeroing. \t(%d)\n", top->zero ? 1 : 0);
+ fprintf(stdout,
+ "\t[z] toggle sample zeroing/decaying. \t(%s)\n",
+ top->decay_samples ? "decay" : "zero");
fprintf(stdout, "\t[qQ] quit.\n");
}
@@ -583,7 +585,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
top->hide_user_symbols = !top->hide_user_symbols;
break;
case 'z':
- top->zero = !top->zero;
+ top->decay_samples = !top->decay_samples;
break;
default:
break;
@@ -648,7 +650,7 @@ static void *display_thread_tui(void *arg)
ret = evlist__tui_browse_hists(top->evlist, help, &hbt, top->min_percent,
&top->session->header.env, !top->record_opts.overwrite);
if (ret == K_RELOAD) {
- top->zero = true;
+ top->decay_samples = false;
goto repeat;
} else
stop_top();
@@ -1502,7 +1504,8 @@ int cmd_top(int argc, const char **argv)
"child tasks do not inherit counters"),
OPT_STRING(0, "sym-annotate", &top.sym_filter, "symbol name",
"symbol to annotate"),
- OPT_BOOLEAN('z', "zero", &top.zero, "zero history across updates"),
+ OPT_BOOLEAN('Z', "decay", &top.decay_samples,
+ "decay rather than zero history across updates"),
OPT_CALLBACK('F', "freq", &top.record_opts, "freq or 'max'",
"profile at this frequency",
record__parse_freq),
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index b7219df51236..bcc4720f8198 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -2305,8 +2305,8 @@ static int hists_browser__scnprintf_title(struct hist_browser *browser, char *bf
" drop: %" PRIu64 "/%" PRIu64,
top->drop, top->drop_total);
- if (top->zero)
- printed += scnprintf(bf + printed, size - printed, " [z]");
+ if (top->decay_samples)
+ printed += scnprintf(bf + printed, size - printed, " [decay]");
perf_top__reset_sample_counters(top);
}
@@ -3209,9 +3209,10 @@ static int evsel__hists_browse(struct evsel *evsel, int nr_events, const char *h
continue;
case 'z':
if (!is_report_browser(hbt)) {
+ /* Toggle between zeroing and decaying samples. */
struct perf_top *top = hbt->arg;
- top->zero = !top->zero;
+ top->decay_samples = !top->decay_samples;
}
continue;
case 'L':
diff --git a/tools/perf/util/top.h b/tools/perf/util/top.h
index 4c5588dbb131..b2c199925b36 100644
--- a/tools/perf/util/top.h
+++ b/tools/perf/util/top.h
@@ -32,7 +32,7 @@ struct perf_top {
u64 guest_us_samples, guest_kernel_samples;
int print_entries, count_filter, delay_secs;
int max_stack;
- bool hide_kernel_symbols, hide_user_symbols, zero;
+ bool hide_kernel_symbols, hide_user_symbols, decay_samples;
#ifdef HAVE_SLANG_SUPPORT
bool use_tui;
#endif
--
2.45.0.rc1.225.g2a3ae87e7f-goog
next reply other threads:[~2024-05-16 22:22 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-16 22:21 Ian Rogers [this message]
2024-05-18 1:25 ` [PATCH v1] perf top: Make zeroing histogram on refresh the default Namhyung Kim
2024-05-18 3:18 ` Ian Rogers
2024-05-21 19:45 ` Arnaldo Carvalho de Melo
2024-06-05 23:51 ` Ian Rogers
2024-06-06 4:45 ` Ravi Bangoria
2024-06-06 14:11 ` Arnaldo Carvalho de Melo
2024-06-07 3:56 ` Ravi Bangoria
2024-06-07 18:18 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240516222159.3710131-1-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andrii@kernel.org \
--cc=changbin.du@huawei.com \
--cc=eranian@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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