To support cgroup tracking, add CGROUP event to save a link between cgroup path and id number. This is needed since cgroups can go away when userspace tries to read the cgroup info (from the id) later. The attr.cgroup bit was also added to enable cgroup tracking from userspace. This event will be generated when a new cgroup becomes active. Userspace might need to synthesize those events for existing cgroups. Committer testing: From the resulting kernel, using /sys/kernel/btf/vmlinux: $ pahole perf_event_attr | grep -w cgroup -B5 -A1 __u64 write_backward:1; /* 40:27 8 */ __u64 namespaces:1; /* 40:28 8 */ __u64 ksymbol:1; /* 40:29 8 */ __u64 bpf_event:1; /* 40:30 8 */ __u64 aux_output:1; /* 40:31 8 */ __u64 cgroup:1; /* 40:32 8 */ __u64 __reserved_1:31; /* 40:33 8 */ $
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -381,7 +381,8 @@ struct perf_event_attr { · 380 unmodified lines | |||
| 381 | ksymbol : 1, /* include ksymbol events */ | 381 | ksymbol : 1, /* include ksymbol events */ |
| 382 | bpf_event : 1, /* include bpf events */ | 382 | bpf_event : 1, /* include bpf events */ |
| 383 | aux_output : 1, /* generate AUX records instead of events */ | 383 | aux_output : 1, /* generate AUX records instead of events */ |
| 384 | __reserved_1 : 32; | 384 | cgroup : 1, /* include cgroup events */ |
| 385 | __reserved_1 : 31; | ||
| 385 | 386 | ||
| 386 | union { | 387 | union { |
| 387 | __u32 wakeup_events; /* wakeup every n events */ | 388 | __u32 wakeup_events; /* wakeup every n events */ |
| @@ -1012,6 +1013,16 @@ enum perf_event_type { · 624 unmodified lines | |||
| 1012 | */ | 1013 | */ |
| 1013 | PERF_RECORD_BPF_EVENT = 18, | 1014 | PERF_RECORD_BPF_EVENT = 18, |
| 1014 | 1015 | ||
| 1016 | /* | ||
| 1017 | * struct { | ||
| 1018 | * struct perf_event_header header; | ||
| 1019 | * u64 id; | ||
| 1020 | * char path[]; | ||
| 1021 | * struct sample_id sample_id; | ||
| 1022 | * }; | ||
| 1023 | */ | ||
| 1024 | PERF_RECORD_CGROUP = 19, | ||
| 1025 | |||
| 1015 | PERF_RECORD_MAX, /* non-ABI */ | 1026 | PERF_RECORD_MAX, /* non-ABI */ |
| 1016 | }; | 1027 | }; |
| 1017 | 1028 | ||