public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
@ 2002-01-04 17:05 Ingo Molnar
  2002-01-04 17:38 ` Andrey Nekrasov
  2002-01-05  3:41 ` Evgeniy Polyakov
  0 siblings, 2 replies; 9+ messages in thread
From: Ingo Molnar @ 2002-01-04 17:05 UTC (permalink / raw)
  To: linux-kernel; +Cc: Linus Torvalds, Alan Cox, Anton Blanchard


this is the next release of the O(1) scheduler:

	http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.5.2-A1.patch
	http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.4.17-A1.patch

this release includes fixes and small improvements. (The 2.5.2-A1 patch is
against the 2.5.2-pre7 kernel.) I cannot reproduce any more failures with
this patch, but i couldnt test the vfat lockup problem. The X lockup
problem never occured on any of my boxes, but it might be fixed by one of
the changes included in this patch nevertheless.

Changes:

 - idle process notification fixes. This fixes the idle=poll breakage
   reported by Anton Blanchard.

 - fix a bug in setscheduler() which crashed if a non-SCHED_OTHER task did
   a setscheduler() call. This fixes the crash reported by Randy Hron. The
   Linux Test Project's syscall tests do not cause a crash anymore.

 - do some more unlikely()/likely() tagging of branches along the hotpath,
   suggested by Jeff Garzik.

 - fix the compile failures in md.c and loop.c and other files, reported
   by many people.

 - fix the too-big-by-one error in the bitmat sizing define, noticed by
   Anton Blanchard.

 - fix a bug in rt_lock() + setscheduler() that had a potential for a
   spinlock lockup.

 - introduce the idle_tick() function, so that idle CPUs can do
   load-balancing as well.

 - do LINUX_VERSION_CODE checking in jffs2 (Jeff Garzik)

 - optimize the big-kernel-lock releasing/acquiring code some more. From
   now on it's absolutely illegal to schedule() from cli()-ed code. (not
   that it was legal.) This moves a few instructions off the scheduler
   hotpath.

 - move the ->need_resched setting into idle_init().

 - do not clear RT tasks in reparent_to_init(). There's nothing bad with
   running RT tasks in the background.

 - RT task's priority order was inverted, it should be 0-99, not 99-0.

 - make load-balancing a bit less eager when there are lots of processes
   running: it needs a ~10% imbalance in runqueue lengths to trigger a
   rebalance.

 - (there is a small hack in serial.c in the 2.5.2-pre7 patch, to make it
   compile.)

Comments, bug reports, suggestions are welcome,

	Ingo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 17:05 [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1 Ingo Molnar
@ 2002-01-04 17:38 ` Andrey Nekrasov
  2002-01-04 19:56   ` Ingo Molnar
  2002-01-05  3:41 ` Evgeniy Polyakov
  1 sibling, 1 reply; 9+ messages in thread
From: Andrey Nekrasov @ 2002-01-04 17:38 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

Hello Ingo Molnar,


2.4.17 + A1 patch:

...
gcc -D__KERNEL__ -I/usr/src/linux-2.4.17-A1/include -Wall -Wstrict-prototypes
-Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe
-mpreferred-stack-boundary=2 -march=i686    -c -o syncookies.o syncookies.c
gcc -D__KERNEL__ -I/usr/src/linux-2.4.17-A1/include -Wall -Wstrict-prototypes
-Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe
-mpreferred-stack-boundary=2 -march=i686    -c -o ipconfig.o ipconfig.c
ipconfig.c: In function `ip_auto_config':
ipconfig.c:1148: `UNNAMED_MAJOR' undeclared (first use in this function)
ipconfig.c:1148: (Each undeclared identifier is reported only once
ipconfig.c:1148: for each function it appears in.)
make[3]: *** [ipconfig.o] Error 1
make[3]: Leaving directory `/usr/src/linux-2.4.17-A1/net/ipv4'
make[2]: *** [first_rule] Error 2
make[2]: Leaving directory `/usr/src/linux-2.4.17-A1/net/ipv4'
make[1]: *** [_subdir_ipv4] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.17-A1/net'
make: *** [_dir_net] Error 2
suse:/usr/src/linux #


ps. vanilla kernel compile ok.


Once you wrote about "[patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.":
 
> this is the next release of the O(1) scheduler:
> 
> 	http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.5.2-A1.patch
> 	http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.4.17-A1.patch
> 
> this release includes fixes and small improvements. (The 2.5.2-A1 patch is
> against the 2.5.2-pre7 kernel.) I cannot reproduce any more failures with
> this patch, but i couldnt test the vfat lockup problem. The X lockup
> problem never occured on any of my boxes, but it might be fixed by one of
> the changes included in this patch nevertheless.
> 
> Changes:
> 
>  - idle process notification fixes. This fixes the idle=poll breakage
>    reported by Anton Blanchard.
> 
>  - fix a bug in setscheduler() which crashed if a non-SCHED_OTHER task did
>    a setscheduler() call. This fixes the crash reported by Randy Hron. The
>    Linux Test Project's syscall tests do not cause a crash anymore.
> 
>  - do some more unlikely()/likely() tagging of branches along the hotpath,
>    suggested by Jeff Garzik.
> 
>  - fix the compile failures in md.c and loop.c and other files, reported
>    by many people.
> 
>  - fix the too-big-by-one error in the bitmat sizing define, noticed by
>    Anton Blanchard.
> 
>  - fix a bug in rt_lock() + setscheduler() that had a potential for a
>    spinlock lockup.
> 
>  - introduce the idle_tick() function, so that idle CPUs can do
>    load-balancing as well.
> 
>  - do LINUX_VERSION_CODE checking in jffs2 (Jeff Garzik)
> 
>  - optimize the big-kernel-lock releasing/acquiring code some more. From
>    now on it's absolutely illegal to schedule() from cli()-ed code. (not
>    that it was legal.) This moves a few instructions off the scheduler
>    hotpath.
> 
>  - move the ->need_resched setting into idle_init().
> 
>  - do not clear RT tasks in reparent_to_init(). There's nothing bad with
>    running RT tasks in the background.
> 
>  - RT task's priority order was inverted, it should be 0-99, not 99-0.
> 
>  - make load-balancing a bit less eager when there are lots of processes
>    running: it needs a ~10% imbalance in runqueue lengths to trigger a
>    rebalance.
> 
>  - (there is a small hack in serial.c in the 2.5.2-pre7 patch, to make it
>    compile.)
> 
> Comments, bug reports, suggestions are welcome,
> 
> 	Ingo
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
bye.
Andrey Nekrasov, SpyLOG.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 17:38 ` Andrey Nekrasov
@ 2002-01-04 19:56   ` Ingo Molnar
  2002-01-04 20:19     ` Adrian Bunk
  0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2002-01-04 19:56 UTC (permalink / raw)
  To: Andrey Nekrasov; +Cc: linux-kernel


On Fri, 4 Jan 2002, Andrey Nekrasov wrote:

> ipconfig.c: In function `ip_auto_config':
> ipconfig.c:1148: `UNNAMED_MAJOR' undeclared (first use in this function)
> ipconfig.c:1148: (Each undeclared identifier is reported only once
> ipconfig.c:1148: for each function it appears in.)

> ps. vanilla kernel compile ok.

hm, the patch does not change ipconfig.c.

	Ingo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 19:56   ` Ingo Molnar
@ 2002-01-04 20:19     ` Adrian Bunk
  2002-01-04 22:28       ` Ingo Molnar
  0 siblings, 1 reply; 9+ messages in thread
From: Adrian Bunk @ 2002-01-04 20:19 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Andrey Nekrasov, linux-kernel

On Fri, 4 Jan 2002, Ingo Molnar wrote:

> On Fri, 4 Jan 2002, Andrey Nekrasov wrote:
>
> > ipconfig.c: In function `ip_auto_config':
> > ipconfig.c:1148: `UNNAMED_MAJOR' undeclared (first use in this function)
> > ipconfig.c:1148: (Each undeclared identifier is reported only once
> > ipconfig.c:1148: for each function it appears in.)
>
> > ps. vanilla kernel compile ok.
>
> hm, the patch does not change ipconfig.c.

It seems the following part of your patch broke it (net/ipv4/ipconfig.c
includes include/linux/sched.h; linux/tty.h includes linux/major.h that
defines UNNAMED_MAJOR):

--- linux/include/linux/sched.h.orig    Thu Jan  3 18:49:58 2002
+++ linux/include/linux/sched.h Fri Jan  4 15:27:20 2002
@@ -21,7 +21,6 @@
 #include <asm/mmu.h>

 #include <linux/smp.h>
-#include <linux/tty.h>
 #include <linux/sem.h>
 #include <linux/signal.h>
 #include <linux/securebits.h>



The right solution is perhaps for ipconfig.c to include major.h directly?

--- net/ipv4/ipconfig.c.old	Fri Jan  4 21:14:50 2002
+++ net/ipv4/ipconfig.c	Fri Jan  4 21:15:39 2002
@@ -32,6 +32,7 @@
 #include <linux/types.h>
 #include <linux/string.h>
 #include <linux/kernel.h>
+#include <linux/major.h>
 #include <linux/sched.h>
 #include <linux/random.h>
 #include <linux/init.h>


> 	Ingo

cu
Adrian




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 22:28       ` Ingo Molnar
@ 2002-01-04 21:45         ` Heinz Diehl
  0 siblings, 0 replies; 9+ messages in thread
From: Heinz Diehl @ 2002-01-04 21:45 UTC (permalink / raw)
  To: linux-kernel

On Fri Jan 04 2002, Ingo Molnar wrote:

> thanks for the detective work - i've reverted this part of the 2.4.17
> patch and have uploaded the -A2 patch.

The -A2 patch applies well to 2.4.17, however compilation fails:

[....]
gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes
-Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common
-pipe -mpreferred-stack-boundary=2 -march=k6    -DEXPORT_SYMTAB -c filemap.c
In file included from filemap.c:26:
/usr/src/linux/include/linux/compiler.h:13: warning: likely' redefined
/usr/src/linux/include/linux/sched.h:445: warning: this is the location of
the previous definition
/usr/src/linux/include/linux/compiler.h:14: warning: unlikely' redefined
/usr/src/linux/include/linux/sched.h:444: warning: this is the location of
the previous definition
filemap.c: In function page_cache_read':
filemap.c:696: SCHED_YIELD' undeclared (first use in this function)
filemap.c:696: (Each undeclared identifier is reported only once
filemap.c:696: for each function it appears in.)
make[2]: *** [filemap.o] Error 1
make[2]: Leaving directory /usr/src/linux/mm'
make[1]: *** [first_rule] Error 2
make[1]: Leaving directory /usr/src/linux/mm'
make: *** [_dir_mm] Error 2
elfie:/usr/src/linux #

-- 
# Heinz Diehl, 68259 Mannheim, Germany

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 20:19     ` Adrian Bunk
@ 2002-01-04 22:28       ` Ingo Molnar
  2002-01-04 21:45         ` Heinz Diehl
  0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2002-01-04 22:28 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Andrey Nekrasov, linux-kernel


On Fri, 4 Jan 2002, Adrian Bunk wrote:

> It seems the following part of your patch broke it (net/ipv4/ipconfig.c
> includes include/linux/sched.h; linux/tty.h includes linux/major.h that
> defines UNNAMED_MAJOR):
>
> --- linux/include/linux/sched.h.orig    Thu Jan  3 18:49:58 2002
> +++ linux/include/linux/sched.h Fri Jan  4 15:27:20 2002
> @@ -21,7 +21,6 @@
>  #include <asm/mmu.h>
>
>  #include <linux/smp.h>
> -#include <linux/tty.h>
>  #include <linux/sem.h>
>  #include <linux/signal.h>
>  #include <linux/securebits.h>

thanks for the detective work - i've reverted this part of the 2.4.17
patch and have uploaded the -A2 patch.

	Ingo


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 11:42 [announce] [patch] ultra-scalable O(1) SMP and UP scheduler Ingo Molnar
@ 2002-01-04 22:44 ` Dieter Nützel
  2002-01-05 17:12   ` Adrian Bunk
  0 siblings, 1 reply; 9+ messages in thread
From: Dieter Nützel @ 2002-01-04 22:44 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Linux Kernel List

[-- Attachment #1: Type: text/plain, Size: 1115 bytes --]

On Friday, 4. January 2002 12:42, Ingo Molnar wrote:
> On Fri, 4 Jan 2002, Dieter [iso-8859-15] Nützel wrote:
> > What next? Maybe a combination of O(1) and preempt?
>
> yes, fast preemption of kernel-mode tasks and the scheduler code are
> almost orthogonal. So i agree that to get the best interactive performance
> we need both.

[....]
gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes
-Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common
-pipe -mpreferred-stack-boundary=2 -march=k6    -DEXPORT_SYMTAB -c filemap.c
In file included from filemap.c:26:
/usr/src/linux/include/linux/compiler.h:13: warning: likely' redefined
/usr/src/linux/include/linux/sched.h:445: warning: this is the location of
the previous definition
/usr/src/linux/include/linux/compiler.h:14: warning: unlikely' redefined
/usr/src/linux/include/linux/sched.h:444: warning: this is the location of
the previous definition

But _NO_ fails.

-A2 crash immediatly during first boot.
Second run some crashes and stuck in boot up.

I'll try a clean 2.4.17 + A2 (plus needed ReiserFS stuff), now.

-Dieter


[-- Attachment #2: messages-short.bz2 --]
[-- Type: application/x-bzip2, Size: 3548 bytes --]

[-- Attachment #3: messages-short-ksymoops.bz2 --]
[-- Type: application/x-bzip2, Size: 14889 bytes --]

[-- Attachment #4: boot.omsg.bz2 --]
[-- Type: application/x-bzip2, Size: 2955 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 17:05 [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1 Ingo Molnar
  2002-01-04 17:38 ` Andrey Nekrasov
@ 2002-01-05  3:41 ` Evgeniy Polyakov
  1 sibling, 0 replies; 9+ messages in thread
From: Evgeniy Polyakov @ 2002-01-05  3:41 UTC (permalink / raw)
  To: mingo; +Cc: linux-kernel, torvalds, alan, anton

On Fri, 4 Jan 2002 18:05:23 +0100 (CET)
Ingo Molnar <mingo@elte.hu> wrote:

> 
> this is the next release of the O(1) scheduler:
> 
> 	http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.5.2-A1.patch
> 	http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.4.17-A1.patch
> 
> this release includes fixes and small improvements. (The 2.5.2-A1 patch
is
> against the 2.5.2-pre7 kernel.) I cannot reproduce any more failures
with
> this patch, but i couldnt test the vfat lockup problem. The X lockup
> problem never occured on any of my boxes, but it might be fixed by one
of
> the changes included in this patch nevertheless.

Nop. System hangs after couple of minutes in X mode... :(
vfat is compiled into the 2.4.17 vanilla-kernel.
Non smp i386 but with smp kernel.
Any other info?

> 
> 	Ingo

---
WBR. //s0mbre

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1.
  2002-01-04 22:44 ` [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1 Dieter Nützel
@ 2002-01-05 17:12   ` Adrian Bunk
  0 siblings, 0 replies; 9+ messages in thread
From: Adrian Bunk @ 2002-01-05 17:12 UTC (permalink / raw)
  To: Dieter Nützel; +Cc: Ingo Molnar, Linux Kernel List

On Fri, 4 Jan 2002, Dieter Nützel wrote:

> gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes
> -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common
> -pipe -mpreferred-stack-boundary=2 -march=k6    -DEXPORT_SYMTAB -c filemap.c
> In file included from filemap.c:26:
> /usr/src/linux/include/linux/compiler.h:13: warning: likely' redefined
> /usr/src/linux/include/linux/sched.h:445: warning: this is the location of
> the previous definition
> /usr/src/linux/include/linux/compiler.h:14: warning: unlikely' redefined
> /usr/src/linux/include/linux/sched.h:444: warning: this is the location of
> the previous definition
>...

This warning is harmless but I'm wondering why sched.h adds a second
definition of likely/unlikely instead of using the one in compiler.h?

I'd suggest the following patch against 2.4.17-A2:

--- include/linux/sched.h.old	Sat Jan  5 18:03:41 2002
+++ include/linux/sched.h	Sat Jan  5 18:10:16 2002
@@ -7,6 +7,7 @@

 #include <linux/config.h>
 #include <linux/binfmts.h>
+#include <linux/compiler.h>
 #include <linux/threads.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
@@ -441,8 +442,6 @@
  */
 #define _STK_LIM	(8*1024*1024)

-#define unlikely(x) x
-#define likely(x) x
 /*
  * The lower the priority of a process, the more likely it is
  * to run. Priority of a process goes from 0 to 63.

> -Dieter

cu
Adrian



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2002-01-05 17:12 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-01-04 17:05 [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1 Ingo Molnar
2002-01-04 17:38 ` Andrey Nekrasov
2002-01-04 19:56   ` Ingo Molnar
2002-01-04 20:19     ` Adrian Bunk
2002-01-04 22:28       ` Ingo Molnar
2002-01-04 21:45         ` Heinz Diehl
2002-01-05  3:41 ` Evgeniy Polyakov
  -- strict thread matches above, loose matches on Subject: below --
2002-01-04 11:42 [announce] [patch] ultra-scalable O(1) SMP and UP scheduler Ingo Molnar
2002-01-04 22:44 ` [patch] O(1) scheduler, 2.4.17-A1, 2.5.2-pre7-A1 Dieter Nützel
2002-01-05 17:12   ` Adrian Bunk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox