From: Mike Kravetz <mkravetz@sequent.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: frankeh@us.ibm.com, Fabio Riccardi <fabio@chromium.com>,
Linux Kernel List <linux-kernel@vger.kernel.org>
Subject: Re: a quest for a better scheduler
Date: Tue, 3 Apr 2001 15:43:14 -0700 [thread overview]
Message-ID: <20010403154314.E1054@w-mikek2.sequent.com> (raw)
In-Reply-To: <20010403121308.A1054@w-mikek2.sequent.com> <Pine.LNX.4.30.0104032024290.9285-100000@elte.hu>
In-Reply-To: <Pine.LNX.4.30.0104032024290.9285-100000@elte.hu>; from mingo@elte.hu on Tue, Apr 03, 2001 at 08:47:52PM +0200
On Tue, Apr 03, 2001 at 08:47:52PM +0200, Ingo Molnar wrote:
>
> this restriction (independence of the priority from the previous process)
> is a fundamentally bad property, scheduling is nonlinear and affinity
> decisions depend on the previous context. [i had a priority-queue SMP
> scheduler running 2-3 years ago but dropped the idea due to this issue.]
> IMO it's more important to have a generic and flexible scheduler, and
> arbitrary, nonnatural restrictions tend to bite us later on.
It seems like we may be talking about two different things.
Our 'priority queue' implementation uses almost the same
goodness function as the current scheduler. The main
difference between our 'priority queue' scheduler and the
current scheduler is the structure of the runqueue. We
break up the single runqueue into a set of priority based
runqueues. The 'goodness' of a task determines what sub-queue
a task is placed in. Tasks with higher goodness values
are placed in higher priority queues than tasks with lower
goodness values. This allows us to limit the scan of runnable
tasks to the highest priority sub-queue, as opposed to the
entire runquue. When scanning the highest priority sub-queue
we use almost the same goodness function as that which is
used today (it does take CPU affinity into account). In fact,
if we used the same goodness function I'm pretty sure we
would exactly match the behavior of the existing scheduler.
Hopefully, Hubertus Franke will speak up and provide more
details, as he is much more familiar with this implementation
than I am.
In any case, I think we have almost reached the conclusion
that our priority queue implementation may not be acceptable
due to the extra overhead in low thread counts.
> one issue regarding multiqueues is the ability of interactive processes to
> preempt other, lower priority processes on other CPUs. These sort of
> things tend to happen while using X. In a system where process priorities
> are different, scheduling decisions cannot be localized per-CPU
> (unfortunately), and 'the right to run' as such is a global thing.
Agreed. This is why our multi-queue scheduler always attempts
to make global decisions. It will preempt lower priority tasks
on other CPUs. This implementation tends to make 'more
localized' scheduling decisions as contention on the runqueue
locks increase. However, at this point one could argue that
we have moved away from a 'realistic' low task count system load.
> lmbench's lat_ctx for example, and other tools in lmbench trigger various
> scheduler workloads as well.
Thanks, I'll add these to our list.
--
Mike Kravetz mkravetz@sequent.com
IBM Linux Technology Center
next prev parent reply other threads:[~2001-04-03 22:44 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-04-03 2:23 Fabio Riccardi
2001-04-03 8:55 ` Ingo Molnar
2001-04-03 19:13 ` Mike Kravetz
2001-04-03 18:47 ` Ingo Molnar
2001-04-03 22:43 ` Mike Kravetz [this message]
2001-04-04 0:18 ` Fabio Riccardi
2001-04-04 2:47 ` Mike Kravetz
2001-04-04 4:21 ` Fabio Riccardi
2001-04-04 17:27 ` Mike Kravetz
2001-04-04 6:53 ` Ingo Molnar
2001-04-04 16:12 ` Davide Libenzi
2001-04-04 6:28 ` Ingo Molnar
2001-04-03 12:31 ` Alan Cox
2001-04-04 0:33 ` Fabio Riccardi
2001-04-04 0:35 ` Alan Cox
2001-04-04 1:17 ` Fabio Riccardi
2001-04-04 1:50 ` Christopher Smith
2001-04-04 11:57 ` Ingo Molnar
2001-04-04 11:51 ` Ingo Molnar
2001-04-04 6:36 alad
2001-04-04 13:43 Hubertus Franke
2001-04-04 13:25 ` Ingo Molnar
2001-04-04 13:34 ` Ingo Molnar
2001-04-04 15:08 ` Andrea Arcangeli
2001-04-04 15:44 ` Khalid Aziz
2001-04-04 14:03 Hubertus Franke
2001-04-04 13:23 ` Ingo Molnar
2001-04-04 22:16 ` Tim Wright
2001-04-04 22:54 ` Christopher Smith
2001-04-05 22:38 ` Timothy D. Witham
2001-04-06 3:27 ` Christopher Smith
2001-04-06 18:06 ` Timothy D. Witham
2001-04-06 22:33 ` Nathan Straz
2001-04-06 21:08 ` Michael Peddemors
2001-04-04 15:12 ` Andrea Arcangeli
2001-04-04 15:49 ` Khalid Aziz
2001-04-04 15:28 Hubertus Franke
2001-04-04 15:36 Hubertus Franke
2001-04-04 17:17 Hubertus Franke
2001-04-04 19:06 Hubertus Franke
2001-04-05 23:01 Hubertus Franke
2001-04-05 23:53 Torrey Hoffman
2001-04-06 13:15 Hubertus Franke
2001-04-18 14:50 Yoav Etsion
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=20010403154314.E1054@w-mikek2.sequent.com \
--to=mkravetz@sequent.com \
--cc=fabio@chromium.com \
--cc=frankeh@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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
all inboxes | Powered by JetHome®