public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mika Liljeberg <Mika.Liljeberg@welho.com>
To: Ingo Oeser <ingo.oeser@informatik.tu-chemnitz.de>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Benjamin LaHaise <bcrl@redhat.com>,
	Linus Torvalds <torvalds@transmeta.com>,
	linux-kernel@vger.kernel.org
Subject: Re: Context switch times
Date: Sun, 07 Oct 2001 16:48:30 +0300	[thread overview]
Message-ID: <3BC05D2E.94F05935@welho.com> (raw)
In-Reply-To: <E15pWfR-0006g5-00@the-village.bc.nu> <3BC02709.A8E6F999@welho.com> <20011007150358.G30515@nightmaster.csn.tu-chemnitz.de>

Ingo Oeser wrote:
> 
> On Sun, Oct 07, 2001 at 12:57:29PM +0300, Mika Liljeberg wrote:
> > For problems 1 and 2 I propose the following solution: Insert the the
> > load balancing routine itself as a (fake) task on each CPU and run it
> > when the CPU gets around to it. The load balancer should behave almost
> > like a CPU-bound task, scheduled on the lowest priority level with other
> > runnable tasks.
> 
> The idle-task might be (ab-)used for this, because it has perfect
> data for this.
> 
> T_SystemElapsed - T_IdleTaskRun = T_CPULoaded

The problem here is that the idle task doesn't get run at all if there
are runnable tasks. With a little bit of tweaking, the idle task context
could probably be used for this, I guess. However, I was thinking more
along the lines that the load balancer would not be a real task but just
a routine that would be executed in schedule() when the fake task comes
up (i.e. when the sceduler has done a "full rotation").

> Balancing could be done in schedule() itself, after checking this
> value for each CPU.

The point about separating the load balancer from the scheduler is that
you don't need to run it at every task switch. You can make the
scheduler very simple if you don't have to scan queues looking for
likely switchover candidates. This saves time in context switches.

One interesting property of the load balancer tasks would be that the
less heavily loaded CPUs would tend to execute the load balancer more
often, actively releaving the more heavily loaded CPUs, while those
would concentrate more on getting the job done. Come to think of it, it
could be coded in such a way that only the least loaded CPU would
execute the load balancing algorithm, while the others would simply
chalk up elapsed times.

> > The last bit is important: the load balancer should not
> > be allowed to starve but should be invoked approximately once every
> > "full rotation" of the scheduler.
> 
> If a artificial CPU-hog is used for this task, the idle task will
> never be run and power savings in the CPU are impossible.

Right. Obviously, if a CPU has no runnable tasks and the load balancer
can't acquire any from other CPUs, it should yield to the idle task
rather than hog the CPU.

	MikaL

  reply	other threads:[~2001-10-07 13:49 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-04 21:04 Context switch times Mike Kravetz
2001-10-04 21:14 ` arjan
2001-10-04 21:25   ` David S. Miller
2001-10-04 21:39     ` Richard Gooch
2001-10-04 21:52       ` David S. Miller
2001-10-04 21:55         ` Benjamin LaHaise
2001-10-04 22:35           ` Davide Libenzi
2001-10-04 22:49             ` Mike Kravetz
2001-10-04 22:42           ` Linus Torvalds
2001-10-04 22:53             ` Benjamin LaHaise
2001-10-05 15:13               ` Alan Cox
2001-10-05 17:49                 ` george anzinger
2001-10-05 22:29                   ` Alan Cox
2001-10-05 22:56                     ` Davide Libenzi
2001-10-05 23:04                       ` Alan Cox
2001-10-05 23:16                         ` Davide Libenzi
2001-10-05 23:17                           ` Alan Cox
2001-10-05 23:21                             ` Davide Libenzi
2001-10-05 23:43                         ` Roger Larsson
2001-10-07  1:20                     ` george anzinger
2001-10-07  1:33                       ` Bill Davidsen
2001-10-07  9:56                       ` Alan Cox
2001-10-06  2:24                 ` Albert D. Cahalan
2001-10-06  2:57                   ` Davide Libenzi
2001-10-07  9:57                 ` Mika Liljeberg
2001-10-07 13:03                   ` Ingo Oeser
2001-10-07 13:48                     ` Mika Liljeberg [this message]
2001-10-07 14:24                       ` Ingo Oeser
2001-10-07 14:33                         ` Mika Liljeberg
2001-10-07 18:00                           ` george anzinger
2001-10-07 22:06                             ` Mika Liljeberg
2001-10-07 22:31                               ` Davide Libenzi
2001-10-07 22:33                                 ` Mika Liljeberg
2001-10-07 23:49                               ` george anzinger
2001-10-08 21:07                                 ` Mika Liljeberg
2001-10-08 22:54                                   ` discontig physical memory Petko Manolov
2001-10-08 23:05                                     ` David S. Miller
2001-10-08 23:18                                       ` Petko Manolov
2001-10-08 23:29                                         ` David S. Miller
2001-10-09  0:34                                           ` Petko Manolov
2001-10-09  0:36                                           ` Petko Manolov
2001-10-09  1:37                                             ` David S. Miller
2001-10-09  2:43                                               ` Petko Manolov
2001-10-08 15:19                           ` Context switch times bill davidsen
2001-10-10  6:07                             ` Mike Fedyk
2001-10-07 18:39                   ` Davide Libenzi
2001-10-09 20:37                   ` Hubertus Franke
2001-10-09 23:50                     ` george anzinger
2001-10-11 10:52                       ` Hubertus Franke
2001-10-04 23:41             ` Mike Kravetz
2001-10-04 23:50               ` Linus Torvalds
2001-10-05 15:15                 ` Eric W. Biederman
2001-10-04 23:56               ` Davide Libenzi
2001-10-05  0:45               ` Andrea Arcangeli
2001-10-05  4:35                 ` Mike Kravetz
2001-10-07 17:59                   ` Andrea Arcangeli
2001-10-07 19:54                     ` george anzinger
2001-10-07 20:24                       ` Andrea Arcangeli
2001-10-09  4:55         ` Richard Gooch
2001-10-09  5:00           ` David S. Miller
2001-10-09 13:49           ` bill davidsen
  -- strict thread matches above, loose matches on Subject: below --
2001-10-05  6:31 Michailidis, Dimitrios

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=3BC05D2E.94F05935@welho.com \
    --to=mika.liljeberg@welho.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=bcrl@redhat.com \
    --cc=ingo.oeser@informatik.tu-chemnitz.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox