Hari Bathini <[email protected]> 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 > > --

