From: Mike Galbraith <efault@gmx.de>
To: lkml <linux-kernel@vger.kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>, Andrew Morton <akpm@osdl.org>,
Nick Piggin <nickpiggin@yahoo.com.au>,
Peter Williams <pwil3058@bigpond.net.au>,
Con Kolivas <kernel@kolivas.org>
Subject: [patch][rfc] quell interactive feeding frenzy
Date: Fri, 07 Apr 2006 11:38:10 +0200 [thread overview]
Message-ID: <1144402690.7857.31.camel@homer> (raw)
Greetings,
Problem: Wake-up -> cpu latency increases with the number of runnable
tasks, ergo adding this latency to sleep_avg becomes increasingly potent
as nr_running increases. This turns into a very nasty problem with as
few as 10 httpd tasks doing round robin scheduling. The result is that
you can only login with difficulty, and interactivity is nonexistent.
Solution: Restrict the amount of boost a task can receive from this
mechanism, and disable the mechanism entirely when load is high. As
always, there is a price for increasing fairness. In this case, the
price seems worth it. It bought me a usable 2.6 apache server.
Signed-off-by: Mike Galbraith <efault@gmx.de>
--- linux-2.6.17-rc1/kernel/sched.c.org 2006-04-07 08:52:47.000000000 +0200
+++ linux-2.6.17-rc1/kernel/sched.c 2006-04-07 08:57:34.000000000 +0200
@@ -3012,14 +3012,20 @@ go_idle:
queue = array->queue + idx;
next = list_entry(queue->next, task_t, run_list);
- if (!rt_task(next) && interactive_sleep(next->sleep_type)) {
+ if (!rt_task(next) && interactive_sleep(next->sleep_type) &&
+ rq->nr_running < 1 + MAX_BONUS - CURRENT_BONUS(next)) {
unsigned long long delta = now - next->timestamp;
+ unsigned long max_delta;
if (unlikely((long long)(now - next->timestamp) < 0))
delta = 0;
if (next->sleep_type == SLEEP_INTERACTIVE)
delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128;
+ max_delta = (1 + MAX_BONUS - CURRENT_BONUS(next)) * GRANULARITY;
+ max_delta = JIFFIES_TO_NS(max_delta);
+ if (delta > max_delta)
+ delta = max_delta;
array = next->array;
new_prio = recalc_task_prio(next, next->timestamp + delta);
next reply other threads:[~2006-04-07 9:37 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-07 9:38 Mike Galbraith [this message]
2006-04-07 9:47 ` [patch][rfc] quell interactive feeding frenzy Andrew Morton
2006-04-07 9:52 ` Ingo Molnar
2006-04-07 10:57 ` Mike Galbraith
2006-04-07 11:00 ` Con Kolivas
2006-04-07 11:09 ` Mike Galbraith
2006-04-07 10:40 ` Mike Galbraith
2006-04-07 12:56 ` Con Kolivas
2006-04-07 13:37 ` Mike Galbraith
2006-04-07 13:56 ` Con Kolivas
2006-04-07 14:14 ` Mike Galbraith
2006-04-07 15:16 ` Mike Galbraith
2006-04-09 11:14 ` bert hubert
2006-04-09 11:39 ` Mike Galbraith
2006-04-09 12:14 ` bert hubert
2006-04-09 18:07 ` Mike Galbraith
2006-04-10 9:12 ` bert hubert
2006-04-10 10:00 ` Mike Galbraith
2006-04-10 14:56 ` Mike Galbraith
2006-04-13 7:41 ` Mike Galbraith
2006-04-13 10:16 ` Con Kolivas
2006-04-13 11:05 ` Mike Galbraith
2006-04-09 18:24 ` Mike Galbraith
2006-04-09 16:44 Al Boldi
2006-04-09 18:33 ` Mike Galbraith
2006-04-10 14:43 ` Al Boldi
2006-04-11 10:57 ` Con Kolivas
[not found] <200604112100.28725.kernel@kolivas.org>
2006-04-11 17:03 ` Fwd: " Al Boldi
2006-04-11 22:56 ` Con Kolivas
2006-04-12 5:41 ` Al Boldi
2006-04-12 6:22 ` Con Kolivas
2006-04-12 8:17 ` Al Boldi
2006-04-12 9:36 ` Con Kolivas
2006-04-12 10:39 ` Al Boldi
2006-04-12 11:27 ` Con Kolivas
2006-04-12 15:25 ` Al Boldi
2006-04-13 11:51 ` Con Kolivas
2006-04-14 3:16 ` Al Boldi
2006-04-15 7:05 ` Con Kolivas
2006-04-15 20:45 ` Al Boldi
2006-04-15 23:22 ` Con Kolivas
2006-04-16 6:02 ` Con Kolivas
2006-04-16 8:31 ` Al Boldi
2006-04-16 8:58 ` Con Kolivas
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=1144402690.7857.31.camel@homer \
--to=efault@gmx.de \
--cc=akpm@osdl.org \
--cc=kernel@kolivas.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nickpiggin@yahoo.com.au \
--cc=pwil3058@bigpond.net.au \
/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;
as well as URLs for NNTP newsgroup(s).