LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Simon Arlott <simon@fire.lp0.eu>
To: Pavel Machek <pavel@ucw.cz>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	akpm@linux-foundation.org, arjan@linux.intel.com
Subject: Re: [PATCH (updated)] timer: Run calc_load halfway through each round_jiffies second
Date: Mon, 05 Mar 2007 22:35:01 +0000	[thread overview]
Message-ID: <45EC9B15.6090908@simon.arlott.org.uk> (raw)
In-Reply-To: <20020101030506.GB4106@ucw.cz>

On 01/01/02 03:05, Pavel Machek wrote:
>> Whenever jiffies is started at a multiple of 5*HZ or 
>> wraps, calc_load is run exactly on the second which is 
>> when tasks using round_jiffies will be scheduled to run. 
>> This has a bad effect on the load average, making it 
>> tend towards 1.00 if a task happens to run every time 
>> the load is being calculated.
>>
>> This changes calc_load so that it updates load half a 
>> second after any tasks scheduled using round_jiffies.
> 
> Hmm, otoh this makes calc_load more expensive, power-wise, because it
> needs to wake the cpu once more?

This was something I was concerned about, it's hard to avoid since it 
shouldn't be run when scheduled tasks are which leaves running it 
before those tasks run as the only other option. To do that you need 
some idea of how long it's going to take to run.

Mar  1 22:36:17 redrum [  639.147319] calc_load(1) jiffies=311500 count=0 [start]
Mar  1 22:36:17 redrum [  639.147331] calc_load... count=5000 [run]
Mar  1 22:36:17 redrum [  639.147336] calc_load... count=5000 [finish]

While I really doubt the accuracy of these timings using printk (they 
vary a lot only going as low as 4 + 4µs), it does show that 1ms is plenty 
of time and that it *could* be scheduled at 1 tick before the second even 
at HZ=1000.

Of course then you miss out on ever catching tasks scheduled with 
round_jiffies since they'd need to run for a full second to affect it.

Also, calc_load with NO_HZ only appears to run every time the system 
needed to wake up for something else (calc_load itself is already able 
to handle this appropriately), so this isn't as much of a problem as it 
might seem. Someone whose CPU only needs to be woken up every 5s (or 4.5s 
for a round_jiffies task) will find their load being higher than it 
should be - but the current version does that already. (Mine doesn't 
stay below 0.5 with NO_HZ because of this).

> Timetraveling, sorry.

Since Eric Dumazet seems to have disappeared for now I really need 
other people to comment on this too. Although you shouldn't literally 
time travel ;) (Date: Tue, 1 Jan 2002 03:05:07 +0000).

-- 
Simon Arlott

  reply	other threads:[~2007-03-05 22:35 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-24 15:19 round_jiffies and load average Simon Arlott
2007-03-01  9:11 ` Simon Arlott
2007-03-01 18:52   ` [PATCH] timer: Add an initial 0.5s delay to calc_load Simon Arlott
2007-03-01 22:52     ` [PATCH (updated)] timer: Run calc_load halfway through each round_jiffies second Simon Arlott
2002-01-01  3:05       ` Pavel Machek
2007-03-05 22:35         ` Simon Arlott [this message]
2007-03-06 18:42           ` [PATCH (update 4)] " Simon Arlott
2007-03-06 22:20         ` [PATCH (updated)] " Chuck Ebbert
2007-03-01 23:10       ` Bill Irwin
2007-03-02 10:15         ` [PATCH (update 2)] " Simon Arlott
2007-03-02 15:15           ` [PATCH (update 3)] " Simon Arlott
2007-03-02 16:35             ` Eric Dumazet
2007-03-02 17:32               ` Simon Arlott
2007-03-02 18:03                 ` Eric Dumazet
2007-03-02 20:14                   ` Simon Arlott
2007-03-02 22:32                     ` Eric Dumazet
2007-03-02 23:54                       ` Simon Arlott

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=45EC9B15.6090908@simon.arlott.org.uk \
    --to=simon@fire.lp0.eu \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --subject='Re: [PATCH (updated)] timer: Run calc_load halfway through each round_jiffies second' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).