From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754399AbcAXNzN (ORCPT ); Sun, 24 Jan 2016 08:55:13 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:34038 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754162AbcAXNzE (ORCPT ); Sun, 24 Jan 2016 08:55:04 -0500 From: Namhyung Kim To: Arnaldo Carvalho de Melo Cc: Ingo Molnar , Peter Zijlstra , Jiri Olsa , LKML , Andi Kleen , David Ahern , Frederic Weisbecker , Wang Nan Subject: [PATCH 08/12] perf hists browser: Apply callchain percent limit Date: Sun, 24 Jan 2016 22:53:31 +0900 Message-Id: <1453643615-1616-9-git-send-email-namhyung@kernel.org> X-Mailer: git-send-email 2.6.4 In-Reply-To: <1453643615-1616-1-git-send-email-namhyung@kernel.org> References: <1453643615-1616-1-git-send-email-namhyung@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently 'perf report --tui' misses to check percent limit on callchains. Fix it. Reported-by: Andi Kleen Signed-off-by: Namhyung Kim --- tools/perf/ui/browsers/hists.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index c7ca36dae89f..3d64a6573d0c 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -681,6 +681,14 @@ static int hist_browser__show_callchain_flat(struct hist_browser *browser, char folded_sign = ' '; int first = true; int extra_offset = 0; + double percent; + u64 hits; + + hits = callchain_cumul_hits(child); + percent = 100.0 * hits / total; + + if (percent < callchain_param.min_percent) + goto next; list_for_each_entry(chain, &child->parent_val, list) { bool was_first = first; @@ -784,12 +792,20 @@ static int hist_browser__show_callchain_folded(struct hist_browser *browser, int first = true; char *value_str = NULL, *value_str_alloc = NULL; char *chain_str = NULL, *chain_str_alloc = NULL; + double percent; + u64 hits; if (arg->row_offset != 0) { arg->row_offset--; goto next; } + hits = callchain_cumul_hits(child); + percent = 100.0 * hits / total; + + if (percent < callchain_param.min_percent) + goto next; + if (need_percent) { char buf[64]; @@ -869,6 +885,14 @@ static int hist_browser__show_callchain_graph(struct hist_browser *browser, char folded_sign = ' '; int first = true; int extra_offset = 0; + double percent; + u64 hits; + + hits = callchain_cumul_hits(child); + percent = 100.0 * hits / total; + + if (percent < callchain_param.min_percent) + goto next; list_for_each_entry(chain, &child->val, list) { bool was_first = first; @@ -905,6 +929,7 @@ static int hist_browser__show_callchain_graph(struct hist_browser *browser, new_level, row, new_total, print, arg, is_output_full); } +next: if (is_output_full(browser, row)) break; node = next; -- 2.6.4