Messages in this thread | | | Subject | Re: [PATCH v3 1/3] perf: add PERF_RECORD_NAMESPACES to include namespaces related info | From | Hari Bathini <> | Date | Wed, 14 Dec 2016 00:17:26 +0530 |
| |
Hi Eric,
On Monday 12 December 2016 11:57 PM, Eric W. Biederman wrote: > Hari Bathini <hbathini@linux.vnet.ibm.com> writes: > >> With the advert of container technologies like docker, that depend >> on namespaces for isolation, there is a need for tracing support for >> namespaces. This patch introduces new PERF_RECORD_NAMESPACES event >> for tracing based on namespaces related info. >> diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h >> index c66a485..2a48fc6 100644 >> --- a/include/uapi/linux/perf_event.h >> +++ b/include/uapi/linux/perf_event.h >> @@ -344,7 +344,8 @@ struct perf_event_attr { >> use_clockid : 1, /* use @clockid for time fields */ >> context_switch : 1, /* context switch data */ >> write_backward : 1, /* Write ring buffer from end to beginning */ >> - __reserved_1 : 36; >> + namespaces : 1, /* include namespaces data */ >> + __reserved_1 : 35; >> >> union { >> __u32 wakeup_events; /* wakeup every n events */ >> @@ -610,6 +611,18 @@ struct perf_event_header { >> __u16 size; >> }; >> >> +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 +875,18 @@ enum perf_event_type { >> */ >> PERF_RECORD_SWITCH_CPU_WIDE = 15, >> >> + /* >> + * struct { >> + * struct perf_event_header header; >> + * >> + * u32 pid, tid; >> + * u64 dev_num; >> + * u64 inode_num[NAMESPACES_MAX]; > There needs to be one device number per inode. While it is true that > today the device number is always the same. That is not necessarily so. > I reserve the right to have the device number vary per namespace > so that I don't need to implement a namespace of namespaces. > > These are st_dev and st_ino of the inode for the namespace.
Do you mean..
st_dev = encode_dev(inode->i_sb->s_dev); ? st_ino = inode->i_ino; ?
Thanks Hari
| |