Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753800AbdF1DSW (ORCPT ); Tue, 27 Jun 2017 23:18:22 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:36093 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753398AbdF1DSP (ORCPT ); Tue, 27 Jun 2017 23:18:15 -0400 From: Taeung Song To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Adrian Hunter , Andi Kleen , David Ahern , Jin Yao , Jiri Olsa , Kim Phillips , Masami Hiramatsu , Milian Wolff , Namhyung Kim , Wang Nan Subject: [PATCH/RFC 0/4] perf annotate: Add --source-only option and the new source code TUI view Date: Wed, 28 Jun 2017 12:18:08 +0900 Message-Id: <1498619888-1305-1-git-send-email-treeze.taeung@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2350 Lines: 64 Hi, The --source-only option and new source code TUI view can show the result of performance analysis based on full source code per symbol(function). (Namhyung Kim told me this idea and it was also requested by others some time ago..) If someone wants to see the cause, he/she will need to dig into the asm. But before that, looking at the source level can give a hint or clue for the problem. For example, if target symbol is 'hex2u64' of util/util.c, the output is like below. $ perf annotate --source-only --stdio -s hex2u64 Percent | Source code of util.c for cycles:ppp (42 samples) ----------------------------------------------------------------- 0.00 : 354 * While we find nice hex chars, build a long_val. 0.00 : 355 * Return number of chars processed. 0.00 : 356 */ 0.00 : 357 int hex2u64(const char *ptr, u64 *long_val) 2.38 : 358 { 2.38 : 359 const char *p = ptr; 0.00 : 360 *long_val = 0; 0.00 : 361 30.95 : 362 while (*p) { 23.81 : 363 const int hex_val = hex(*p); 0.00 : 364 14.29 : 365 if (hex_val < 0) 0.00 : 366 break; 0.00 : 367 26.19 : 368 *long_val = (*long_val << 4) | hex_val; 0.00 : 369 p++; 0.00 : 370 } 0.00 : 371 0.00 : 372 return p - ptr; 0.00 : 373 } And I added many perf developers into Cc: because I want to listen to your opinions about this new feature, if you don't mind. If you give some feedback, I'd appreciate it! :) Thanks, Taeung Taeung Song (4): perf annotate: Add --source-only option perf annotate: Add new source code view to the annotate TUI browser perf annotate: Fold or unfold partial disassembly lines on source code view perf annotate: Support a 'o' key showing addresses on the new source code view tools/perf/builtin-annotate.c | 2 + tools/perf/ui/browser.h | 1 + tools/perf/ui/browsers/annotate.c | 307 +++++++++++++++++++++++++++++++++++++- tools/perf/util/annotate.c | 303 ++++++++++++++++++++++++++++++++++++- tools/perf/util/annotate.h | 30 ++++ tools/perf/util/symbol.c | 1 + tools/perf/util/symbol.h | 1 + 7 files changed, 633 insertions(+), 12 deletions(-) -- 2.7.4