From: Oleg Nesterov <oleg@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "Arjan van de Ven" <arjan@linux.intel.com>,
"Fernando Luis Vázquez Cao" <fernando_b1@lab.ntt.co.jp>,
"Frederic Weisbecker" <fweisbec@gmail.com>,
"Ingo Molnar" <mingo@kernel.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
"Tetsuo Handa" <penguin-kernel@I-love.SAKURA.ne.jp>,
"Andrew Morton" <akpm@linux-foundation.org>
Subject: Re: [PATCH 2/4] nohz: Synchronize sleep time stats with seqlock
Date: Wed, 21 Aug 2013 13:35:51 +0200 [thread overview]
Message-ID: <20130821113551.GA1472@redhat.com> (raw)
In-Reply-To: <20130821083130.GM3258@twins.programming.kicks-ass.net>
On 08/21, Peter Zijlstra wrote:
>
> On Tue, Aug 20, 2013 at 08:25:53PM +0200, Oleg Nesterov wrote:
> > On 08/20, Peter Zijlstra wrote:
> > >
> > > On Tue, Aug 20, 2013 at 06:33:12PM +0200, Oleg Nesterov wrote:
>
> > > > + if (unlikely(prev->in_iowait)) {
> > > > + raw_spin_lock_irq(&rq->lock);
> > > > + rq->nr_iowait--;
> > > > + raw_spin_unlock_irq(&rq->lock);
> > > > + }
> > >
> > > This seems like the wrong place, this is where you return from
> > > schedule() running another task,
> >
> > Yes, but prev is current, and rq should be "correct" for
> > rq->nr_iowait-- ?
>
> Yes its the right rq, but the wrong time.
Hmm. Just in case, it is not that I think this patch really makes sense,
but I'd like to understand why do you think it is wrong.
> > This local var should be equal to its value when this task called
> > context_switch() in the past.
> >
> > Like any other variable, like "rq = raw_rq()" in io_schedule().
> >
> > > not where the task you just send to
> > > sleep wakes up.
> >
> > sure, but currently io_schedule() does the same.
>
> No it doesn't. It only does the decrement when the task is woken back
> up. Not right after it switches out.
But it is not "after it switches out", it is after it switched back.
Lets ignore the locking,
if (prev->in_iowait)
rq->nr_iowait++;
context_switch(prev, next);
if (prev->in_iowait)
rq->nr_iowait--;
>From the task_struct's (current's) pov prev/rq are the same, before or
after context_switch().
But from the CPU's pov they differ. And ignoring more details on UP the
code above is equivalent to
if (prev->in_iowait)
rq->nr_iowait++;
if (next->in_iowait)
rq->nr_iowait--;
context_switch(prev, next);
No?
Yes, need_resched()/preemption can trigger more inc/dec's than io_schedule()
does, but I don't think this was your concern.
> > Btw. Whatever we do, can't we unify io_schedule/io_schedule_timeout?
>
> I suppose we could, a timeout of MAX_SCHEDULE_TIMEOUT will act like a
> regular schedule, but it gets all the overhead of doing
> schedule_timeout(). So I don't think its a win.
Well, the only overhead is "if(to == MAX_SCHEDULE_TIMEOUT)" at the start.
I don't think it makes sense to copy-and-paste the identical code to
avoid it. But please ignore, this is really minor and off-topic.
Oleg.
next prev parent reply other threads:[~2013-08-21 11:42 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-16 15:42 [PATCH RESEND 0/4] nohz: Fix racy sleeptime stats Frederic Weisbecker
2013-08-16 15:42 ` [PATCH 1/4] nohz: Only update sleeptime stats locally Frederic Weisbecker
2013-08-18 16:49 ` Oleg Nesterov
2013-08-18 21:38 ` Frederic Weisbecker
2013-08-18 17:04 ` Oleg Nesterov
2013-08-19 18:05 ` Stratos Karafotis
2013-08-16 15:42 ` [PATCH 2/4] nohz: Synchronize sleep time stats with seqlock Frederic Weisbecker
2013-08-16 16:02 ` Oleg Nesterov
2013-08-16 16:20 ` Frederic Weisbecker
2013-08-16 16:26 ` Oleg Nesterov
2013-08-16 16:46 ` Frederic Weisbecker
2013-08-16 16:49 ` Oleg Nesterov
2013-08-16 17:12 ` Frederic Weisbecker
2013-08-18 16:36 ` Oleg Nesterov
2013-08-18 21:25 ` Frederic Weisbecker
2013-08-19 10:58 ` Peter Zijlstra
2013-08-19 15:44 ` Arjan van de Ven
2013-08-19 15:47 ` Arjan van de Ven
2013-08-19 11:10 ` Peter Zijlstra
2013-08-19 11:15 ` Peter Zijlstra
2013-08-20 6:59 ` Fernando Luis Vázquez Cao
2013-08-20 8:44 ` Peter Zijlstra
2013-08-20 15:29 ` Frederic Weisbecker
2013-08-20 15:33 ` Arjan van de Ven
2013-08-20 15:35 ` Frederic Weisbecker
2013-08-20 15:41 ` Arjan van de Ven
2013-08-20 15:31 ` Arjan van de Ven
2013-08-20 16:01 ` Peter Zijlstra
2013-08-20 16:33 ` Oleg Nesterov
2013-08-20 17:54 ` Peter Zijlstra
2013-08-20 18:25 ` Oleg Nesterov
2013-08-21 8:31 ` Peter Zijlstra
2013-08-21 11:35 ` Oleg Nesterov [this message]
2013-08-21 12:33 ` Peter Zijlstra
2013-08-21 14:23 ` Peter Zijlstra
2013-08-21 16:41 ` Oleg Nesterov
2013-10-01 14:05 ` Frederic Weisbecker
2013-10-01 14:26 ` Frederic Weisbecker
2013-10-01 14:27 ` Frederic Weisbecker
2013-10-01 14:49 ` Frederic Weisbecker
2013-10-01 15:00 ` Peter Zijlstra
2013-10-01 15:21 ` Frederic Weisbecker
2013-10-01 15:56 ` Peter Zijlstra
2013-10-01 16:47 ` Frederic Weisbecker
2013-10-01 16:59 ` Peter Zijlstra
2013-10-02 12:45 ` Frederic Weisbecker
2013-10-02 12:50 ` Peter Zijlstra
2013-10-02 14:35 ` Arjan van de Ven
2013-10-02 16:01 ` Frederic Weisbecker
2013-08-21 12:48 ` Peter Zijlstra
2013-08-21 17:09 ` Oleg Nesterov
2013-08-21 18:31 ` Peter Zijlstra
2013-08-21 18:32 ` Oleg Nesterov
2013-08-20 22:18 ` Frederic Weisbecker
2013-08-21 11:49 ` Oleg Nesterov
2013-08-20 6:21 ` Fernando Luis Vázquez Cao
2013-08-20 21:55 ` Frederic Weisbecker
2013-08-16 16:32 ` Frederic Weisbecker
2013-08-16 16:33 ` Oleg Nesterov
2013-08-16 16:49 ` Frederic Weisbecker
2013-08-16 16:37 ` Frederic Weisbecker
2013-08-18 16:54 ` Oleg Nesterov
2013-08-18 21:40 ` Frederic Weisbecker
2013-08-16 15:42 ` [PATCH 3/4] nohz: Consolidate sleep time stats read code Frederic Weisbecker
2013-08-18 17:00 ` Oleg Nesterov
2013-08-18 21:47 ` Frederic Weisbecker
2013-08-16 15:42 ` [PATCH 4/4] nohz: Convert a few places to use local per cpu accesses Frederic Weisbecker
2013-08-16 16:00 ` Peter Zijlstra
2013-08-16 16:12 ` Frederic Weisbecker
2013-08-16 16:19 ` Oleg Nesterov
2013-08-16 16:34 ` Frederic Weisbecker
2013-08-20 18:15 ` [PATCH RESEND 0/4] nohz: Fix racy sleeptime stats Oleg Nesterov
2013-08-21 8:28 ` Peter Zijlstra
2013-08-21 11:42 ` Oleg Nesterov
-- strict thread matches above, loose matches on Subject: below --
2014-05-07 13:41 [PATCH 1/4] nohz: Only update sleeptime stats locally Denys Vlasenko
2014-05-07 13:41 ` [PATCH 2/4] nohz: Synchronize sleep time stats with seqlock Denys Vlasenko
2014-04-24 18:45 [PATCH 1/4] nohz: Only update sleeptime stats locally Denys Vlasenko
2014-04-24 18:45 ` [PATCH 2/4] nohz: Synchronize sleep time stats with seqlock Denys Vlasenko
2013-08-09 0:54 [PATCH 0/4] nohz: Fix racy sleeptime stats Frederic Weisbecker
2013-08-09 0:54 ` [PATCH 2/4] nohz: Synchronize sleep time stats with seqlock Frederic Weisbecker
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=20130821113551.GA1472@redhat.com \
--to=oleg@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=fernando_b1@lab.ntt.co.jp \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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.