perf/core: Add PERF_SAMPLE_CGROUP feature
authorNamhyung Kim <namhyung@kernel.org>
Wed, 25 Mar 2020 12:45:29 +0000 (21:45 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 27 Mar 2020 13:41:44 +0000 (10:41 -0300)
commit6546b19f95acc986807de981402bbac6b3a94b0f
treed1d33094a9ed4d73d68f93fc92b954ca5d553caf
parent96aaab686505c449e24d76e76507290dcc30e008
perf/core: Add PERF_SAMPLE_CGROUP feature

The PERF_SAMPLE_CGROUP bit is to save (perf_event) cgroup information in
the sample.  It will add a 64-bit id to identify current cgroup and it's
the file handle in the cgroup file system.  Userspace should use this
information with PERF_RECORD_CGROUP event to match which cgroup it
belongs.

I put it before PERF_SAMPLE_AUX for simplicity since it just needs a
64-bit word.  But if we want bigger samples, I can work on that
direction too.

Committer testing:

  $ pahole perf_sample_data | grep -w cgroup -B5 -A5
   /* --- cacheline 4 boundary (256 bytes) was 56 bytes ago --- */
   struct perf_regs           regs_intr;            /*   312    16 */
   /* --- cacheline 5 boundary (320 bytes) was 8 bytes ago --- */
   u64                        stack_user_size;      /*   328     8 */
   u64                        phys_addr;            /*   336     8 */
   u64                        cgroup;               /*   344     8 */

   /* size: 384, cachelines: 6, members: 22 */
   /* padding: 32 */
  };
  $

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Zefan Li <lizefan@huawei.com>
Link: http://lore.kernel.org/lkml/20200325124536.2800725-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
include/linux/perf_event.h
include/uapi/linux/perf_event.h
init/Kconfig
kernel/events/core.c