From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2992492AbcB0Jok (ORCPT ); Sat, 27 Feb 2016 04:44:40 -0500 Received: from torg.zytor.com ([198.137.202.12]:39388 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2992476AbcB0Joi (ORCPT ); Sat, 27 Feb 2016 04:44:38 -0500 Date: Sat, 27 Feb 2016 01:44:01 -0800 From: tip-bot for Namhyung Kim Message-ID: Cc: hpa@zytor.com, dsahern@gmail.com, wangnan0@huawei.com, peterz@infradead.org, linux-kernel@vger.kernel.org, namhyung@kernel.org, tglx@linutronix.de, acme@redhat.com, andi@firstfloor.org, eranian@google.com, mingo@kernel.org, jolsa@kernel.org Reply-To: dsahern@gmail.com, hpa@zytor.com, peterz@infradead.org, wangnan0@huawei.com, namhyung@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, mingo@kernel.org, jolsa@kernel.org, eranian@google.com, andi@firstfloor.org, acme@redhat.com In-Reply-To: <1456512767-1164-4-git-send-email-namhyung@kernel.org> References: <1456512767-1164-4-git-send-email-namhyung@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf hists: Fix dynamic entry display in hierarchy Git-Commit-ID: e049d4a3fa194c8aa0d3ca29a9b11b32387ca6e3 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: e049d4a3fa194c8aa0d3ca29a9b11b32387ca6e3 Gitweb: http://git.kernel.org/tip/e049d4a3fa194c8aa0d3ca29a9b11b32387ca6e3 Author: Namhyung Kim AuthorDate: Sat, 27 Feb 2016 03:52:46 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Fri, 26 Feb 2016 19:37:38 -0300 perf hists: Fix dynamic entry display in hierarchy When dynamic sort key is used it might not show pretty printed output. This is because the trace output was not set only for the first dynamic sort key. During hierarchy_insert_entry() it missed to pass the trace_output to dynamic entries. Also even if it did, only first entry will have it. Subsequent entries might set it during collapsing stage but it's not guaranteed. Before: $ perf report --hierarchy --stdio -s ptr,bytes_req,gfp_flags -g none # # Overhead ptr / bytes_req / gfp_flags # .............. .......................................... # 37.50% 0xffff8803f7669400 37.50% 448 37.50% 66080 10.42% 0xffff8803f766be00 8.33% 96 8.33% 66080 2.08% 512 2.08% 67280 After: # # Overhead ptr / bytes_req / gfp_flags # .............. .......................................... # 37.50% 0xffff8803f7669400 37.50% 448 37.50% GFP_ATOMIC|GFP_NOWARN|GFP_NOMEMALLOC 10.42% 0xffff8803f766be00 8.33% 96 8.33% GFP_ATOMIC|GFP_NOWARN|GFP_NOMEMALLOC 2.08% 512 2.08% GFP_KERNEL|GFP_NOWARN|GFP_REPEAT|GFP Signed-off-by: Namhyung Kim Tested-by: Arnaldo Carvalho de Melo Acked-by: Jiri Olsa Cc: Andi Kleen Cc: David Ahern Cc: Peter Zijlstra Cc: Stephane Eranian Cc: Wang Nan Link: http://lkml.kernel.org/r/1456512767-1164-4-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/hist.c | 2 +- tools/perf/util/sort.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index cc849d3..9b3f582 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -1125,7 +1125,7 @@ static struct hist_entry *hierarchy_insert_entry(struct hists *hists, new->fmt = fmt; /* some fields are now passed to 'new' */ - if (perf_hpp__is_trace_entry(fmt)) + if (perf_hpp__is_trace_entry(fmt) || perf_hpp__is_dynamic_entry(fmt)) he->trace_output = NULL; else new->trace_output = NULL; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 2beb7a6..d26c6b9 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -1764,6 +1764,9 @@ static int __sort__hde_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp, if (hde->raw_trace) goto raw_field; + if (!he->trace_output) + he->trace_output = get_trace_output(he); + field = hde->field; namelen = strlen(field->name); str = he->trace_output;