Re: [PATCH 3/4] perf cgroup: Add cgroup ID as a key of RB tree

From: Peter Zijlstra
Date: Tue Apr 30 2019 - 05:08:57 EST



A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

On Mon, Apr 29, 2019 at 04:02:33PM -0700, Ian Rogers wrote:
> This is very interesting. How does the code handle cgroup hierarchies?
> For example, if we have:
>
> cgroup0 is the cgroup root
> cgroup1 whose parent is cgroup0
> cgroup2 whose parent is cgroup1
>
> we have task0 running in cgroup0, task1 in cgroup1, task2 in cgroup2
> and then a perf command line like:
> perf stat -e cycles,cycles,cycles -G cgroup0,cgroup1,cgroup2 --no-merge sleep 10
>
> we expected 3 cycles counts:
> - for cgroup0 including task2, task1 and task0
> - for cgroup1 including task2 and task1
> - for cgroup2 just including task2
>
> It looks as though:
> + if (next && (next->cpu == event->cpu) && (next->cgrp_id ==
> event->cgrp_id))
>
> will mean that events will only consider cgroups that directly match
> the cgroup of the event. Ie we'd get 3 cycles counts of:
> - for cgroup0 just task0
> - for cgroup1 just task1
> - for cgroup2 just task2

Yeah, I think you're right; the proposed code doesn't capture the
hierarchy thing at all.