From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751374AbdISIsM (ORCPT ); Tue, 19 Sep 2017 04:48:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34510 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750747AbdISIsL (ORCPT ); Tue, 19 Sep 2017 04:48:11 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D76D24ACB3 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jolsa@redhat.com Date: Tue, 19 Sep 2017 10:48:07 +0200 From: Jiri Olsa To: Lin Xiulei Cc: yang_oliver@hotmail.com, Peter Zijlstra , mingo@redhat.com, acme@kernel.org, alexander.shishkin@linux.intel.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, Stephane Eranian , torvalds@linux-foundation.org, "leilei.lin" Subject: Re: [PATCH] perf/core: Update cgroup time with descendants Message-ID: <20170919084807.GB4231@krava> References: <20170914070357.29288-1-linxiulei@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.0 (2017-09-02) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 19 Sep 2017 08:48:11 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 19, 2017 at 10:02:50AM +0800, Lin Xiulei wrote: > 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 : > > From: "leilei.lin" > > > > This fix updating cgroup time when event is being scheduled in > > by cgroup descendants > > > > Signed-off-by: leilei.lin > > --- > > 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); you no longer need the 'cgrp == event->cgrp', it's part of the cgroup_is_descendant call other than that it looks ok to me Reviewed-and-tested-by: Jiri Olsa thanks, jirka