Messages in this thread Patch in this message | | | From | Lin Xiulei <> | Date | Tue, 19 Sep 2017 10:02:50 +0800 | Subject | Re: [PATCH] perf/core: Update cgroup time with descendants |
| |
Add steps of reproducing
1 ``` mkdir /sys/fs/cgroup/perf_event/root1 mkdir /sys/fs/cgroup/perf_event/root1/leaf1 ``` 2 $pid is any running process ``` echo $pid > /sys/fs/cgroup/perf_event/root1/cgroup.procs ```
3 ``` perf stat -e cycles -G root1 -a -I 1000 ```
You shall get 0 cycles from it, which should have been cycles of $pid
2017-09-14 15:03 GMT+08:00 <linxiulei@gmail.com>: > From: "leilei.lin" <leilei.lin@alibaba-inc.com> > > This fix updating cgroup time when event is being scheduled in > by cgroup descendants > > Signed-off-by: leilei.lin <leilei.lin@alibaba-inc.com> > --- > kernel/events/core.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 3e691b7..6f6bd1e 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -662,7 +662,9 @@ static inline void update_cgrp_time_from_event(struct perf_event *event) > /* > * Do not update time when cgroup is not active > */ > - if (cgrp == event->cgrp) > + if (cgrp == event->cgrp || > + cgroup_is_descendant(cgrp->css.cgroup, > + event->cgrp->css.cgroup)) > __update_cgrp_time(event->cgrp); > } > > -- > 2.8.4.31.g9ed660f >
| |