From: Robert Love <rml@tech9.net>
To: Helge Hafting <helgehaf@aitel.hist.no>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] scheduler hints
Date: 05 Jun 2002 09:17:13 -0700 [thread overview]
Message-ID: <1023293838.917.283.camel@sinai> (raw)
In-Reply-To: <3CFDC796.C05FC7E2@aitel.hist.no>
On Wed, 2002-06-05 at 01:11, Helge Hafting wrote:
> Seems to me this particular case is covered by increasing
> priority when grabbing the semaphore and normalizing
> priority when releasing.
>
> Only root can do that - but only root does real-time
> anyway. And I guess only rood should be able to increase
> its timeslice too...
Increasing its priority has no bearing on whether it runs out of
timeslice, however. The idea here is to help the task complete its
critical section (and thus not block other tasks) before being
preempted. Only way to achieve that is boost its timeslice.
Boosting its priority will assure there is no priority inversion and
that, eventually, the task will run - but it does nothing to avoid the
nasty "grab resource, be preempted, reschedule a bunch, finally find
yourself running again since everyone else blocked" issue.
And I don't think only root should be able to do this. If we later
punish the task (take back the timeslice we gave it) then this is fair.
> > Other hints could be "I am interactive"
>
> Already shows up as a thread who always ends its timeslice
> blocking for io. Such threads do get an priority
> boost for the next timeslice.
>
> > or "I am a batch (i.e. cpu hog)
>
> shows up as a thread who spends its entire timeslice - these
> don't get the above mentioned boost as it is assumed it gets
> "enough cpu" while the interactive threads blocks.
>
> Well, hog/interactive is determined in one timeslice already...
In the O(1) scheduler it is determined based on a running sleep average,
not timeslice used (this is effectively the same thing - although we
turn it into a heuristic so it is more accurate over time).
The problem is it takes time to figure these out. One whole schedule of
the app to determine anything, and then a series of schedules to perfect
it. My idea here was let the app tell the system what it is to give the
system a head start. The scheduler will slowly readjust whatever it is
told, based on the task's behavior, anyhow.
Giving a hint at the start of an interactive task, for example, skips
the second or two of low priority where the task is not receiving its
full boost.
> The problem is that this may be abused. Someone nasty could
> write a cpu hog that drops a lot of hints about being
> interactive, starving real interactive programs.
Agreed. The code does require CAP_SYS_NICE and the comments explain the
issue... One thing worth saying is I don't think this is as useful as
the HINT_TIME hint anyhow.
> Generally, it degenerates into application programmers
> using _all_ the hints to get performance, so they
> can beat some competitor in benchmarks. And all
> other programs just get penalized.
Well they can already nice themselves or make themselves real-time, so
we have to trust them in numerous ways already not to cheat.
Robert Love
next prev parent reply other threads:[~2002-06-05 16:17 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-04 15:53 Robert Love
2002-06-04 17:38 ` Simon Trimmer
2002-06-04 18:07 ` Robert Love
2002-06-05 8:11 ` Helge Hafting
2002-06-05 10:23 ` Dave Jones
2002-06-05 16:17 ` Robert Love [this message]
2002-06-07 11:32 ` Pavel Machek
2002-06-12 18:37 ` Ingo Oeser
2002-06-12 19:39 ` Robert Love
[not found] <no.id>
2002-06-06 0:46 ` Rick Bressler
2002-06-06 0:53 ` Robert Love
2002-06-06 1:14 ` Rick Bressler
2002-06-06 1:05 ` Gerrit Huizenga
2002-06-06 1:11 ` Robert Love
2002-06-06 1:19 ` Gerrit Huizenga
2002-06-10 21:05 ` Bill Davidsen
2002-06-10 22:27 ` Gerrit Huizenga
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=1023293838.917.283.camel@sinai \
--to=rml@tech9.net \
--cc=helgehaf@aitel.hist.no \
--cc=linux-kernel@vger.kernel.org \
/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®