diff options
author | Jiri Olsa <jolsa@kernel.org> | 2016-08-17 14:55:23 +0200 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-10-21 10:31:57 -0300 |
commit | 9857b7173cf420654a7a78a2cdf972ddb380a8a1 (patch) | |
tree | b281c26f6da09ade0e2993b2c5cc2d806ffb9a31 /tools/perf/builtin-c2c.c | |
parent | dd805768f7d74ba412817811cc60e2b153a43ee8 (diff) | |
download | lwn-9857b7173cf420654a7a78a2cdf972ddb380a8a1.tar.gz lwn-9857b7173cf420654a7a78a2cdf972ddb380a8a1.zip |
perf c2c report: Limit the cachelines table entries
Add a limit for entries number of the cachelines table entries. By
default now it's the 0.0005% minimum of remote HITMs.
Also display only cachelines with remote hitm or store data.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Joe Mario <jmario@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-inykbom2f19difvsu1e18avr@git.kernel.org
[ Disabled for now ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-c2c.c')
-rw-r--r-- | tools/perf/builtin-c2c.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index 950a4123ea66..92b3b8171d4d 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -1642,11 +1642,45 @@ static int c2c_hists__reinit(struct c2c_hists *c2c_hists, return hpp_list__parse(&c2c_hists->list, output, sort); } +#define DISPLAY_LINE_LIMIT 0.0005 + +static bool he__display(struct hist_entry *he, struct c2c_stats *stats) +{ + struct c2c_hist_entry *c2c_he; + double ld_dist; + + /* XXX Disabled for now, till we get a command line switch to control this */ + return true; + + c2c_he = container_of(he, struct c2c_hist_entry, he); + + if (stats->rmt_hitm) { + ld_dist = ((double)c2c_he->stats.rmt_hitm / stats->rmt_hitm); + if (ld_dist < DISPLAY_LINE_LIMIT) + he->filtered = HIST_FILTER__C2C; + } else { + he->filtered = HIST_FILTER__C2C; + } + + return he->filtered == 0; +} + +static inline int valid_hitm_or_store(struct hist_entry *he) +{ + struct c2c_hist_entry *c2c_he; + + c2c_he = container_of(he, struct c2c_hist_entry, he); + return c2c_he->stats.rmt_hitm || c2c_he->stats.store; +} + static int filter_cb(struct hist_entry *he) { if (c2c.show_src && !he->srcline) he->srcline = hist_entry__get_srcline(he); + if (!valid_hitm_or_store(he)) + he->filtered = HIST_FILTER__C2C; + return 0; } @@ -1654,11 +1688,12 @@ static int resort_cl_cb(struct hist_entry *he) { struct c2c_hist_entry *c2c_he; struct c2c_hists *c2c_hists; + bool display = he__display(he, &c2c.hitm_stats); c2c_he = container_of(he, struct c2c_hist_entry, he); c2c_hists = c2c_he->hists; - if (c2c_hists) { + if (display && c2c_hists) { c2c_hists__reinit(c2c_hists, "percent_rmt_hitm," "percent_lcl_hitm," |