Re: [PATCH 1/2] perf: add container identifier entry in perf sample data

From: Hari Bathini
Date: Thu Aug 25 2016 - 18:56:31 EST




On Thursday 25 August 2016 06:31 PM, Peter Zijlstra wrote:
On Thu, Aug 25, 2016 at 05:27:54PM +0530, Hari Bathini wrote:

diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index c66a485..fb4f902 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -139,8 +139,9 @@ enum perf_event_sample_format {
PERF_SAMPLE_IDENTIFIER = 1U << 16,
PERF_SAMPLE_TRANSACTION = 1U << 17,
PERF_SAMPLE_REGS_INTR = 1U << 18,
+ PERF_SAMPLE_CID = 1U << 19,
- PERF_SAMPLE_MAX = 1U << 19, /* non-ABI */
+ PERF_SAMPLE_MAX = 1U << 20, /* non-ABI */
};
This forgets to update the comment that goes with PERF_RECORD_SAMPLE.
This patch would also need an update to the manpage:

http://git.kernel.org/cgit/docs/man-pages/man-pages.git/tree/man2/perf_event_open.2

http://www.man7.org/linux/man-pages/man2/perf_event_open.2.html

+ if (sample_type & PERF_SAMPLE_CID) {
+ int size = sizeof(u64);
+
+ /*
+ * Container identifier for a given task.
+ * Using cgroup namespace inode number for this.
+ */
+ data->cid_entry.cid = current->nsproxy->cgroup_ns->ns.inum;
+ data->cid_entry.reserved = 0;
+ header->size += size;
+ }
}
Does this compile with CONFIG_CGROUP=n ?


My bad. Will update..
Actually, on second thought, how about using inode number of some
other namespace that any container would have (mount, probably?)..

Thanks
Hari