[PATCH v4 0/3] perf: add support for analyzing events for containers
From: Hari Bathini
Date: Thu Dec 15 2016 - 13:38:16 EST
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