From: Frederic Weisbecker <fweisbec@gmail.com>
To: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2] cputime: fix invalid gtime
Date: Thu, 29 Oct 2015 13:44:31 +0100 [thread overview]
Message-ID: <20151029124429.GA8554@lerouge> (raw)
In-Reply-To: <7F861DC0615E0C47A872E6F3C5FCDDBD05F55194@BPXM14GP.gisp.nec.co.jp>
On Thu, Oct 29, 2015 at 04:30:20AM +0000, Hiroshi Shimamoto wrote:
> > Subject: Re: [PATCH v2] cputime: fix invalid gtime
> >
> > On Thu, Oct 29, 2015 at 01:10:01AM +0000, Hiroshi Shimamoto wrote:
> > > > Obviously I completely messed up there. And task_cputime() has a similar issue
> > > > but it happens to work due to vtime_snap_whence set to VTIME_SLEEPING when vtime
> > > > doesn't run. Still it works at the cost of a seqcount read operation.
> > > >
> > > > Do you think you could fix it too (along with task_cputime_scaled())? I think those
> > > > patches will also need a stable tag.
> > >
> > > Do you mean that task_cputime() and task_cputime_scaled() don't hit invalid behavior
> > > but have some extra operation cost which could be removed?
> >
> > Exactly.
> >
> > >
> > > Will look into it, and send patches with stable tag.
> >
> > Thanks a lot!
> >
> > Oh and another detail: vtime_accounting_enabled() checks if vtime
> > accounting is done precisely on the current CPU. That's what we want to check
> > when we account the time but not when we want to read the cputime of a task.
> >
> > For example, CPU 0 never has vtime_accounting_enabled() because it plays the
> > role of timekeeper and as such it keeps the tick periodic. So if task A runs on
> > CPU 1 that has vtime accounting on, and we read the cputime of task A from CPU 0,
> > vtime_accounting_enabled() will be false whereas we need to compute the delta.
> >
> > So vtime_accounting_enabled() isn't suitable to check if vtime is running on _some_
> > CPU such that we can't return utime/stime with a raw read.
>
> I see the point, vtime accounting can be enabled on dedicated cpu and there is no
> guarantee the reading thread is on the same state.
Exactly!
>
> >
> > Ideally we shoud rename vtime_accounting_enabled() to vtime_accounting_cpu_enabled()
> > and have vtime_accounting_enabled() to check if vtime runs somewhere. But that would
> > be too much an invasive change for a stable patch. So lets just use
> > context_tracking_is_enabled() for now instead.
>
> I have dig the code.
> And my understanding is that vtime_accounting_enabled() does check global flag with
> context_tracking_is_enabled() and then check current cpu state with
> context_tracking_cpu_is_enabled(). For now, we just check global flag to fix current
> issue instead of checking both in vtime_accounting_enabled(). In future we should fix
> more precisely.
> Is that correct?
Perfectly correct :-)
Thanks!
prev parent reply other threads:[~2015-10-29 12:44 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-28 7:01 [PATCH v2] cputime: fix invalid gtime Hiroshi Shimamoto
2015-10-28 16:11 ` Frederic Weisbecker
2015-10-29 1:10 ` Hiroshi Shimamoto
2015-10-29 3:37 ` Frederic Weisbecker
2015-10-29 4:30 ` Hiroshi Shimamoto
2015-10-29 12:44 ` Frederic Weisbecker [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151029124429.GA8554@lerouge \
--to=fweisbec@gmail.com \
--cc=h-shimamoto@ct.jp.nec.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.