All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: linux-kernel@vger.kernel.org,
	Fernando Luis Vazquez Cao <fernando_b1@lab.ntt.co.jp>,
	Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Arjan van de Ven <arjan@linux.intel.com>,
	Oleg Nesterov <oleg@redhat.com>,
	Preeti U Murthy <preeti@linux.vnet.ibm.com>,
	Denys Vlasenko <vda.linux@googlemail.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH 2/2] nohz: use delayed iowait accounting to avoid race on idle time stats
Date: Tue, 15 Apr 2014 12:19:10 +0200	[thread overview]
Message-ID: <20140415101910.GN11096@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <534660D2.1080505@jp.fujitsu.com>

On Thu, Apr 10, 2014 at 06:13:54PM +0900, Hidetoshi Seto wrote:
> [WHAT THIS PATCH PROPOSED]:
> 
> To fix problem 1, this patch adds seqcount for NO_HZ idle
> accounting to avoid possible races between reader/writer.
> 
> And to cope with problem 2, I introduced delayed iowait
> accounting to get approximate value without making observers
> to writers. Refer comment in patch for the detail.

> --- a/kernel/time/tick-sched.c
> +++ b/kernel/time/tick-sched.c
> @@ -407,15 +407,42 @@ static void tick_nohz_stop_idle(struct tick_sched *ts, ktime_t now)
>  {
>  	ktime_t delta;
>  
> +	write_seqcount_begin(&ts->idle_sleeptime_seq);
> +
>  	/* Updates the per cpu time idle statistics counters */
>  	delta = ktime_sub(now, ts->idle_entrytime);
> +
> +	/*
> +	 * Perform delayed iowait accounting:
> +	 *
> +	 * We account sleep time as iowait when nr_iowait of cpu indicates
> +	 * there are taskes blocked by io, at the end of idle (=here).
> +	 * It means we can not determine whether the sleep time will be idle
> +	 * or iowait on the fly.
> +	 * Therefore introduce a new rule:
> +	 * - basically observers assign delta to idle
> +	 * - if cpu find nr_iowait>0 at idle exit, accumulate delta as missed
> +	 *   iowait, and account it in next turn of sleep instead.
> +	 * - if observer find accumulated iowait while cpu is in sleep, it
> +	 *   can calculate proper value to be accounted.
> +	 */
> +	if (ktime_compare(ts->iowait_pending, delta) > 0) {
>  		ts->iowait_sleeptime = ktime_add(ts->iowait_sleeptime, delta);
> +		ts->iowait_pending = ktime_sub(ts->iowait_pending, delta);
> +	} else {
> +		ts->idle_sleeptime = ktime_add(ts->idle_sleeptime,
> +					ktime_sub(delta, ts->iowait_pending));
> +		ts->iowait_sleeptime = ktime_add(ts->iowait_sleeptime,
> +						 ts->iowait_pending);
> +		ts->iowait_pending = ktime_set(0, 0);
> +	}
> +	if (nr_iowait_cpu(smp_processor_id()) > 0)
> +		ts->iowait_pending = ktime_add(ts->iowait_pending, delta);
> +
>  	ts->idle_active = 0;
>  
> +	write_seqcount_end(&ts->idle_sleeptime_seq);
> +
>  	sched_clock_idle_wakeup_event(0);
>  }

Why!? Both changelog and comment are silent on this. This doesn't appear
to make any sense nor really solve anything.


  parent reply	other threads:[~2014-04-15 10:19 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-10  9:07 [PATCH v3 0/2] nohz: fix idle accounting in NO_HZ kernels Hidetoshi Seto
2014-04-10  9:11 ` [PATCH 1/2] nohz: stop updating sleep stats from get_cpu_{idle,iowait}_time_us() Hidetoshi Seto
2014-04-15  8:48   ` Peter Zijlstra
2014-04-15  8:49     ` Peter Zijlstra
2014-04-10  9:13 ` [PATCH 2/2] nohz: use delayed iowait accounting to avoid race on idle time stats Hidetoshi Seto
2014-04-15 10:04   ` Peter Zijlstra
2014-04-16  6:30     ` Hidetoshi Seto
2014-04-15 10:19   ` Peter Zijlstra [this message]
2014-04-16  6:33     ` Hidetoshi Seto
2014-04-16  9:36       ` Peter Zijlstra
2014-04-17  0:42         ` Hidetoshi Seto
2014-04-17 10:05       ` Peter Zijlstra
2014-04-17 10:09         ` Peter Zijlstra
2014-04-18  5:52         ` Hidetoshi Seto
2014-04-18  8:44           ` Peter Zijlstra
2014-04-15  3:11 ` [PATCH v3 0/2] nohz: fix idle accounting in NO_HZ kernels Hidetoshi Seto

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=20140415101910.GN11096@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --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=oleg@redhat.com \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --cc=preeti@linux.vnet.ibm.com \
    --cc=seto.hidetoshi@jp.fujitsu.com \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=vda.linux@googlemail.com \
    /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.