From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936644AbcISNKV (ORCPT ); Mon, 19 Sep 2016 09:10:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45814 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932775AbcISNKP (ORCPT ); Mon, 19 Sep 2016 09:10:15 -0400 From: Jiri Olsa To: Arnaldo Carvalho de Melo Cc: "Michael Trapp" , "Long, Wai Man" , lkml , Don Zickus , Joe Mario , Ingo Molnar , Peter Zijlstra , Namhyung Kim , David Ahern , Andi Kleen Subject: [PATCHv3 00/61] perf c2c: Add new tool to analyze cacheline contention on NUMA systems Date: Mon, 19 Sep 2016 15:09:09 +0200 Message-Id: <1474290610-23241-1-git-send-email-jolsa@kernel.org> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 19 Sep 2016 13:10:14 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hi, sending new version of c2c patches (v3) originally posted in here: http://lwn.net/Articles/588866/ I took the old set and reworked it to fit into current upstream code. It follows the same logic as original patch and provides (almost) the same stdio interface. In addition new TUI interface was added. The perf c2c tool provides means for Shared Data C2C/HITM analysis. It allows you to track down the cacheline contentions. The tool is based on x86's load latency and precise store facility events provided by Intel CPUs. The tool was tested by Joe Mario and has proven to be useful and found some cachelines contentions. Joe also wrote a blog about c2c tool with examples located in here: https://joemario.github.io/blog/2016/09/01/c2c-blog/ Code is also available in: git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git perf/c2c Testing: $ perf c2c record -a [workload] $ perf c2c report [--stdio] $ man perf-c2c It's most likely you won't generate any remote HITMs on common laptops, so to get results for local HITMs please use: $ perf c2c report -d lcl [--stdio] thanks, jirka Cc: "Michael Trapp" Cc: "Long, Wai Man" --- Jiri Olsa (61): perf symbols: Do not open device files again perf tools: Remove superfluous initialization of weight perf tools: Make hist_entry__snprintf work over struct perf_hpp_list perf tools: Use bigger buffer for stdio headers perf tools: Introduce c2c_decode_stats function perf tools: Introduce c2c_add_stats function perf tools: Make reset_dimensions global perf tools: Make output_field_add and sort_dimension__add global perf tools: Make several sorting functions global perf tools: Make several display functions global perf tools: Make hist_entry__snprintf function global perf tools: Make hists__fprintf_headers function global perf c2c: Add c2c command perf c2c: Add record subcommand perf c2c: Add report subcommand perf c2c report: Add dimension support perf c2c report: Add sort_entry dimension support perf c2c report: Fallback to standard dimensions perf c2c report: Add sample processing perf c2c report: Add cacheline hists processing perf c2c report: Decode c2c_stats for hist entries perf c2c report: Add header macros perf c2c report: Add dcacheline dimension key perf c2c report: Add offset dimension key perf c2c report: Add iaddr dimension key perf c2c report: Add hitm related dimension keys perf c2c report: Add stores related dimension keys perf c2c report: Add loads related dimension keys perf c2c report: Add llc and remote loads related dimension keys perf c2c report: Add llc load miss dimension key perf c2c report: Add total record sort key perf c2c report: Add total loads sort key perf c2c report: Add hitm percent sort key perf c2c report: Add hitm/store percent related sort keys perf c2c report: Add dram related sort keys perf c2c report: Add pid sort key perf c2c report: Add tid sort key perf c2c report: Add symbol and dso sort keys perf c2c report: Add node sort key perf c2c report: Add stats related sort keys perf c2c report: Add cpu cnt sort key perf c2c report: Add src line sort key perf c2c report: Setup number of header lines for hists perf c2c report: Set final resort fields perf c2c report: Add stdio output support perf c2c report: Add main browser perf c2c report: Add cacheline browser perf c2c report: Add global stats stdio output perf c2c report: Add shared cachelines stats stdio output perf c2c report: Add c2c related stats stdio output perf c2c report: Allow to report callchains perf c2c report: Limit the cachelines table entries perf c2c report: Add support to choose local HITMs perf c2c report: Allow to set cacheline sort fields perf c2c report: Recalc width of global sort entries perf c2c report: Add cacheline index entry perf c2c report: Add support to manage symbol name length perf c2c report: Iterate node display in browser perf c2c report: Add help windows perf c2c: Add man page and credits perf tools: Fix width computation for srcline sort entry tools/perf/Build | 1 + tools/perf/Documentation/perf-c2c.txt | 276 ++++ tools/perf/builtin-c2c.c | 2732 +++++++++++++++++++++++++++++++++ tools/perf/builtin.h | 1 + tools/perf/perf.c | 1 + tools/perf/ui/browsers/hists.c | 4 +- tools/perf/ui/browsers/hists.h | 1 + tools/perf/ui/hist.c | 2 +- tools/perf/ui/stdio/hist.c | 11 +- tools/perf/util/dso.c | 8 +- tools/perf/util/evsel.c | 2 - tools/perf/util/hist.c | 7 +- tools/perf/util/hist.h | 6 + tools/perf/util/mem-events.c | 128 ++ tools/perf/util/mem-events.h | 37 + tools/perf/util/sort.c | 18 +- tools/perf/util/sort.h | 13 + tools/perf/util/symbol.c | 3 - 18 files changed, 3222 insertions(+), 29 deletions(-) create mode 100644 tools/perf/Documentation/perf-c2c.txt create mode 100644 tools/perf/builtin-c2c.c