From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755197AbcLOSiC (ORCPT ); Thu, 15 Dec 2016 13:38:02 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:35140 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751202AbcLOSh7 (ORCPT ); Thu, 15 Dec 2016 13:37:59 -0500 Subject: [PATCH v4 0/3] perf: add support for analyzing events for containers From: Hari Bathini To: ast@fb.com, peterz@infradead.org, lkml , acme@kernel.org, alexander.shishkin@linux.intel.com, mingo@redhat.com Cc: daniel@iogearbox.net, rostedt@goodmis.org, Ananth N Mavinakayanahalli , ebiederm@xmission.com, sargun@sargun.me, Aravinda Prasad , brendan.d.gregg@gmail.com Date: Fri, 16 Dec 2016 00:06:55 +0530 User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16121518-0016-0000-0000-000002028090 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16121518-0017-0000-0000-000006120280 Message-Id: <148182699546.5314.279803283347257825.stgit@hbathini.in.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-12-15_13:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1612150280 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, there is no trivial mechanism to analyze events based on containers. perf -G can be used, but it will not filter events for the containers created after perf is invoked, making it difficult to assess/ analyze performance issues of multiple containers at once. This patch-set overcomes this limitation by using cgroup identifier as container unique identifier. A new PERF_RECORD_NAMESPACES event that records namespaces related info is introduced, from which the cgroup namespace's device & inode numbers are used as cgroup identifier. This is based on the assumption that each container is created with it's own cgroup namespace allowing assessment/analysis of multiple containers using cgroup identifier. The first patch introduces PERF_RECORD_NAMESPACES in kernel while the second patch makes the corresponding changes in perf tool to read this PERF_RECORD_NAMESPACES events. The third patch adds a cgroup identifier column in perf report, which contains the cgroup namespace's device and inode numbers. Changes from v3: * Saving device number for each inode. * cgroup identifier includes device number along with inode number. --- Hari Bathini (3): perf: add PERF_RECORD_NAMESPACES to include namespaces related info perf tool: add PERF_RECORD_NAMESPACES to include namespaces related info perf tool: add cgroup identifier entry in perf report include/linux/perf_event.h | 2 include/uapi/linux/perf_event.h | 31 +++++++ kernel/events/core.c | 135 ++++++++++++++++++++++++++++++++ kernel/fork.c | 3 + kernel/nsproxy.c | 5 + tools/include/uapi/linux/perf_event.h | 31 +++++++ tools/perf/builtin-annotate.c | 1 tools/perf/builtin-diff.c | 1 tools/perf/builtin-inject.c | 14 +++ tools/perf/builtin-kmem.c | 1 tools/perf/builtin-kvm.c | 2 tools/perf/builtin-lock.c | 1 tools/perf/builtin-mem.c | 1 tools/perf/builtin-record.c | 33 +++++++- tools/perf/builtin-report.c | 1 tools/perf/builtin-sched.c | 1 tools/perf/builtin-script.c | 41 ++++++++++ tools/perf/builtin-trace.c | 3 - tools/perf/perf.h | 1 tools/perf/util/Build | 1 tools/perf/util/data-convert-bt.c | 2 tools/perf/util/event.c | 138 ++++++++++++++++++++++++++++++++- tools/perf/util/event.h | 18 ++++ tools/perf/util/evsel.c | 3 + tools/perf/util/hist.c | 7 ++ tools/perf/util/hist.h | 1 tools/perf/util/machine.c | 25 ++++++ tools/perf/util/machine.h | 3 + tools/perf/util/namespaces.c | 27 ++++++ tools/perf/util/namespaces.h | 18 ++++ tools/perf/util/session.c | 7 ++ tools/perf/util/sort.c | 41 ++++++++++ tools/perf/util/sort.h | 7 ++ tools/perf/util/thread.c | 44 ++++++++++- tools/perf/util/thread.h | 6 + tools/perf/util/tool.h | 2 36 files changed, 643 insertions(+), 15 deletions(-) create mode 100644 tools/perf/util/namespaces.c create mode 100644 tools/perf/util/namespaces.h