Re: [PATCH v4 1/3] perf: add PERF_RECORD_NAMESPACES to include namespaces related info

From: Peter Zijlstra
Date: Fri Dec 16 2016 - 15:07:43 EST


On Fri, Dec 16, 2016 at 11:51:20PM +0530, Hari Bathini wrote:
> Hi Peter,
>
>
> On Friday 16 December 2016 01:27 PM, Peter Zijlstra wrote:
> >On Fri, Dec 16, 2016 at 11:57:47AM +0530, Hari Bathini wrote:
> >>
> >>On Friday 16 December 2016 12:16 AM, Peter Zijlstra wrote:
> >>>On Fri, Dec 16, 2016 at 12:07:06AM +0530, Hari Bathini wrote:
> >>>>+struct perf_ns_link_info {
> >>>>+ __u64 dev;
> >>>>+ __u64 ino;
> >>>>+};
> >>>>+
> >>>>+enum {
> >>>>+ NET_NS_INDEX = 0,
> >>>>+ UTS_NS_INDEX = 1,
> >>>>+ IPC_NS_INDEX = 2,
> >>>>+ PID_NS_INDEX = 3,
> >>>>+ USER_NS_INDEX = 4,
> >>>>+ MNT_NS_INDEX = 5,
> >>>>+ CGROUP_NS_INDEX = 6,
> >>>>+
> >>>>+ NAMESPACES_MAX, /* maximum available namespaces */
> >>>>+};
> >>>>+
> >>>> enum perf_event_type {
> >>>> /*
> >>>>@@ -862,6 +880,17 @@ enum perf_event_type {
> >>>> */
> >>>> PERF_RECORD_SWITCH_CPU_WIDE = 15,
> >>>>+ /*
> >>>>+ * struct {
> >>>>+ * struct perf_event_header header;
> >>>>+ * u32 pid;
> >>>>+ * u32 tid;
> >>>>+ * struct namespace_link_info link_info[NAMESPACES_MAX];
> >>>>+ * struct sample_id sample_id;
> >>>>+ * };
> >>>>+ */
> >>>>+ PERF_RECORD_NAMESPACES = 16,
> >>>>+
> >>>> PERF_RECORD_MAX, /* non-ABI */
> >>>> };
> >>>What happens if a future kernel adds another namespace?
> >>>
> >>No impact unless NAMESPACES_MAX in include/uapi/linux/perf_event.h is
> >>updated to accommodate that..
> >>And if it is updated, the corresponding change is expected in perf-tool as
> >>well..
> >And what happens if you try and process old data files with the new
> >tools or the other way around?
>
> It works fine either way. I tested that..

I don't see how the tool can parse old records (with NAMESPACES_MAX ==
7) if you set its NAMESPACES_MAX to say 10.

Then it will expect the link_info array to be 10 entries and either read
past the end of the record (if !sample_all) or try and interpret
sample_id as link_info records.