From: Con Kolivas <kernel@kolivas.org>
To: Al Boldi <a1426z@gawab.com>
Cc: ck list <ck@vds.kolivas.org>,
linux-kernel@vger.kernel.org, Mike Galbraith <efault@gmx.de>
Subject: Re: [patch][rfc] quell interactive feeding frenzy
Date: Sat, 15 Apr 2006 17:05:18 +1000 [thread overview]
Message-ID: <200604151705.18786.kernel@kolivas.org> (raw)
In-Reply-To: <200604140616.33370.a1426z@gawab.com>
On Friday 14 April 2006 13:16, Al Boldi wrote:
> Can you try the attached mem-eater passing it the number of kb to be eaten.
>
> i.e. '# while :; do ./eatm 9999 ; done'
>
> This will print the number of bytes eaten and the timing in ms.
>
> Assuming timeslice=100, adjust the number of kb to be eaten such that the
> timing will be less than timeslice (something like 60ms). Switch to
> another vt and start another eatm w/ the number of kb yielding more than
> timeslice (something like 140ms). This eatm should starve completely after
> exceeding timeslice.
>
> This problem also exists in mainline, but it is able to break out of it to
> some extent. Setting eatm kb to a timing larger than timeslice does not
> exhibit this problem.
Thanks for bringing this to my attention. A while back I had different
management of forked tasks and merged it with PF_NONSLEEP. Since then I've
changed the management of NONSLEEP tasks and didn't realise it had adversely
affected the accounting of forking tasks. This patch should rectify it.
Thanks!
---
include/linux/sched.h | 1 +
kernel/sched.c | 9 ++++++---
2 files changed, 7 insertions(+), 3 deletions(-)
Index: linux-2.6.16-ck5/include/linux/sched.h
===================================================================
--- linux-2.6.16-ck5.orig/include/linux/sched.h 2006-04-15 16:32:18.000000000 +1000
+++ linux-2.6.16-ck5/include/linux/sched.h 2006-04-15 16:34:36.000000000 +1000
@@ -961,6 +961,7 @@ static inline void put_task_struct(struc
#define PF_SWAPWRITE 0x01000000 /* Allowed to write to swap */
#define PF_NONSLEEP 0x02000000 /* Waiting on in kernel activity */
#define PF_ISOREF 0x04000000 /* SCHED_ISO task has used up quota */
+#define PF_FORKED 0x08000000 /* Task just forked another process */
/*
* Only the _current_ task can read/write to tsk->flags, but other
Index: linux-2.6.16-ck5/kernel/sched.c
===================================================================
--- linux-2.6.16-ck5.orig/kernel/sched.c 2006-04-15 16:32:18.000000000 +1000
+++ linux-2.6.16-ck5/kernel/sched.c 2006-04-15 16:34:35.000000000 +1000
@@ -18,7 +18,7 @@
* 2004-04-02 Scheduler domains code by Nick Piggin
* 2006-04-02 Staircase scheduling policy by Con Kolivas with help
* from William Lee Irwin III, Zwane Mwaikambo & Peter Williams.
- * Staircase v15
+ * Staircase v15_test2
*/
#include <linux/mm.h>
@@ -809,6 +809,9 @@ static inline void recalc_task_prio(task
else
sleep_time = 0;
+ if (unlikely(p->flags & PF_FORKED))
+ sleep_time = 0;
+
/*
* If we sleep longer than our running total and have not set the
* PF_NONSLEEP flag we gain a bonus.
@@ -847,7 +850,7 @@ static void activate_task(task_t *p, run
p->time_slice = p->slice % rr ? : rr;
if (!rt_task(p)) {
recalc_task_prio(p, now);
- p->flags &= ~PF_NONSLEEP;
+ p->flags &= ~(PF_NONSLEEP | PF_FORKED);
p->systime = 0;
p->prio = effective_prio(p);
}
@@ -1464,7 +1467,7 @@ void fastcall wake_up_new_task(task_t *p
/* Forked process gets no bonus to prevent fork bombs. */
p->bonus = 0;
- current->flags |= PF_NONSLEEP;
+ current->flags |= PF_FORKED;
if (likely(cpu == this_cpu)) {
activate_task(p, rq, 1);
--
-ck
next prev parent reply other threads:[~2006-04-15 7:05 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200604112100.28725.kernel@kolivas.org>
2006-04-11 17:03 ` Fwd: Re: [patch][rfc] quell interactive feeding frenzy 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 [this message]
2006-04-15 18:23 ` [ck] " Michael Gerdau
2006-04-15 20:45 ` Al Boldi
2006-04-15 23:22 ` Con Kolivas
2006-04-16 18:44 ` [ck] " Andreas Mohr
2006-04-17 0:08 ` Con Kolivas
2006-04-19 8:37 ` Andreas Mohr
2006-04-19 8:59 ` jos poortvliet
2006-04-15 22:32 ` jos poortvliet
2006-04-15 23:06 ` Con Kolivas
2006-04-16 6:02 ` Con Kolivas
2006-04-16 8:31 ` Al Boldi
2006-04-16 8:58 ` Con Kolivas
2006-04-16 10:37 ` was " Con Kolivas
2006-04-16 19:03 ` Al Boldi
2006-04-16 23:26 ` Con Kolivas
2006-04-09 16:44 [patch][rfc] " Al Boldi
2006-04-09 18:33 ` Mike Galbraith
2006-04-10 14:43 ` Al Boldi
2006-04-11 10:57 ` Con Kolivas
-- strict thread matches above, loose matches on Subject: below --
2006-04-07 9:38 Mike Galbraith
2006-04-07 9:47 ` 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
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=200604151705.18786.kernel@kolivas.org \
--to=kernel@kolivas.org \
--cc=a1426z@gawab.com \
--cc=ck@vds.kolivas.org \
--cc=efault@gmx.de \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.