Re: [PATCH v6 0/3] perf: add support for analyzing events for containers

From: Eric W. Biederman
Date: Thu Feb 16 2017 - 01:24:57 EST


Hari Bathini <hbathini@xxxxxxxxxxxxxxxxxx> writes:

> 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 is aimed at addressing this limitation by introducing a
> new PERF_RECORD_NAMESPACES event that records namespaces related info.
> As containers are created with namespaces, the new data can be used to
> in assessment/analysis of multiple containers.
>
> 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 demonstrates analysis
> of containers with this data by adding a cgroup identifier column in
> perf report, which contains the cgroup namespace's device and inode
> numbers. This is based on the assumption that each container is created
> with it's own cgroup namespace. The third patch has scope for improvement
> based on the conventions a container is attributed with, going
> forward.

Ack for the namespace interface bits.
Everything I asked for is in there.

Eric


>
> Changes from v5:
> * Updated changelogs of patches 1 & 3
> * Rebased the patches on perf/core in tip
>
> ---
>
> 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 | 38 +++++++++
> kernel/events/core.c | 142 +++++++++++++++++++++++++++++++++
> kernel/fork.c | 3 +
> kernel/nsproxy.c | 5 +
> tools/include/uapi/linux/perf_event.h | 38 +++++++++
> 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 | 143 ++++++++++++++++++++++++++++++++-
> tools/perf/util/event.h | 19 ++++
> tools/perf/util/evsel.c | 3 +
> tools/perf/util/hist.c | 7 ++
> tools/perf/util/hist.h | 1
> tools/perf/util/machine.c | 34 ++++++++
> tools/perf/util/machine.h | 3 +
> tools/perf/util/namespaces.c | 35 ++++++++
> tools/perf/util/namespaces.h | 26 ++++++
> 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, 695 insertions(+), 15 deletions(-)
> create mode 100644 tools/perf/util/namespaces.c
> create mode 100644 tools/perf/util/namespaces.h
>
> --