From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753764AbcBENLZ (ORCPT ); Fri, 5 Feb 2016 08:11:25 -0500 Received: from mail-pa0-f44.google.com ([209.85.220.44]:36818 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752896AbcBENDG (ORCPT ); Fri, 5 Feb 2016 08:03:06 -0500 From: Namhyung Kim To: Arnaldo Carvalho de Melo Cc: Ingo Molnar , Peter Zijlstra , Jiri Olsa , LKML , David Ahern , Andi Kleen , Stephane Eranian , Wang Nan , Don Zickus , Pekka Enberg , Moinuddin Quadri Subject: [PATCHSET 00/23] perf tools: Add support for hierachy view (v5) Date: Fri, 5 Feb 2016 22:01:32 +0900 Message-Id: <1454677315-7515-1-git-send-email-namhyung@kernel.org> X-Mailer: git-send-email 2.7.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, This patchset implements a new feature that collects hist entries in a hierachical manner. That means lower-level entries belong to an upper-level entry. The entry hierachy is built on the sort keys given, so users can set it whatever they want. It only shows top-level entries first, and user can expand/collapse it dynamically. * Changes from v4) - rebased onto the current acme/perf/core - fix memory leak on callchian_merge error path (Arnaldo) - fix a bug on perf-top regarding percent calculation - split hierarchy filtering code * Changes from v3) - rebased onto the percent limit patchset v2 * Changes from v2) - check memory allocation failure in hists__hierarchy_insert_entry (Jiri) - remove unused rb_hierarchy_first() (Arnaldo) - support callchain percent limit (Andi) - break TUI context menu cleanup (Arnaldo) This time I implemented it for every output browser including TUI. A screenshot on TUI looks like below: For normal output: $ perf report --tui Samples: 3K of event 'cycles:pp', Event count (approx.): 1695979674 Overhead Command Shared Object Symbol ------------------------------------------------------------------------ - 7.57% swapper [kernel.vmlinux] [k] intel_idle intel_idle cpuidle_enter_state cpuidle_enter call_cpuidle + cpu_startup_entry + 1.16 firefox firefox [.] 0x00000000000019433 + 0.97% firefox libpthread-2.22.so [.] pthread_mutex_lock ... With hierarchy view, $ perf report --tui --hierarchy Samples: 3K of event 'cycles:pp', Event count (approx.): 1695979674 Overhead Command / Shared Object / Symbol ------------------------------------------------------------------- + 76.30% firefox - 9.95% swapper - 9.51% [kernel.vmlinux] - 7.57 [k] intel_idle intel_idle cpuidle_enter_state cpuidle_enter call_cpuidle + cpu_startup_entry + 0.15% [k] __schedule + 0.12% [k] menu_select ... + 0.34% [sdhci] + 0.06% [e1000e] ... + 5.65% Xorg + 5.42% Socket Thread ... As you can see, overhead of an upper level entry is the sum of overhead of lower level entries. The entries are aligned by its order of matching sort keys. This is available from 'perf/hierarchy-v5' branch in my tree: git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git Any comments are welcome, thanks! Namhyung Cc: Don Zickus Cc: Pekka Enberg Cc: Moinuddin Quadri [1] https://lkml.org/lkml/2013/5/21/24 Namhyung Kim (23): perf hists browser: Fix percentage update on key press perf callchain: Check return value of add_child() perf callchain: Check return value of fill_node() perf callchain: Add enum match_result for match_chain() perf callchain: Check return value of split_add_child() perf callchain: Check return value of append_chain_children() perf hists: Return error from hists__collapse_resort() perf report: Check error during report__collapse_hists() perf hists: Basic support of hierarchical report view perf hists: Resort hist entries with hierarchy perf hists: Add helper functions for hierarchy mode perf hists: Introduce hist_entry__filter() perf hists: Support filtering in hierarchy mode perf ui/stdio: Implement hierarchy output mode perf ui/stdio: Align column header for hierarchy output perf hists browser: Count number of hierarchy entries perf hists browser: Support collapsing/expanding whole entries in hierarchy perf hists browser: Implement hierarchy output perf hists browser: Align column header in hierarchy mode perf ui/gtk: Implement hierarchy output mode perf report: Add --hierarchy option perf hists: Support decaying in hierarchy mode perf top: Add --hierarchy option tools/perf/Documentation/perf-report.txt | 3 + tools/perf/Documentation/perf-top.txt | 3 + tools/perf/Documentation/tips.txt | 1 + tools/perf/builtin-report.c | 31 +- tools/perf/builtin-top.c | 15 + tools/perf/ui/browsers/hists.c | 488 ++++++++++++++++++++++++++++--- tools/perf/ui/gtk/hists.c | 161 +++++++++- tools/perf/ui/hist.c | 14 + tools/perf/ui/stdio/hist.c | 184 +++++++++++- tools/perf/util/callchain.c | 102 +++++-- tools/perf/util/hist.c | 463 ++++++++++++++++++++++++++--- tools/perf/util/hist.h | 16 +- tools/perf/util/sort.c | 113 +++++++ tools/perf/util/sort.h | 14 +- tools/perf/util/symbol.h | 3 +- 15 files changed, 1493 insertions(+), 118 deletions(-) -- 2.7.0