By popular demand, here is release -v22 of the CFS scheduler. It is a
full backport of the latest & greatest sched-devel.git code to
v2.6.23-rc8, v2.6.22.8, v2.6.21.7 and v2.6.20.20. The patches can be
downloaded from the usual place:
http://people.redhat.com/mingo/cfs-scheduler/
This is the first time the development version of the scheduler has been
fed back into the stable backport series, so there's many changes since
v20.5:
15 files changed, 1103 insertions(+), 840 deletions(-)
Even if CFS v20.5 worked well for you, please try this release too, with
a good focus on interactivity testing - because, unless some major
showstopper is found, this codebase is intended for a v2.6.24 upstream
merge.
( Even a quick, subjective report of: "checked this patch, it didnt
crash and it feels like v20.5" or "laggier than v20.5" or "feels
better than v20.5" is useful to us and enables us to judge the general
direction of interactivity. )
The changes in v22 consist of lots of mostly small enhancements,
speedups, interactivity improvements, debug enhancements and tidy-ups -
many of which can be user-visible. (These enhancements have been
contributed by many people - see the changelog below and the git tree
for detailed credits.)
The biggest individual new feature is per UID group scheduling, written
by Srivatsa Vaddagiri, which can be enabled via the
CONFIG_FAIR_USER_SCHED=y .config option. With this feature enabled, each
user gets a fair share of the CPU time, regardless of how many tasks
each user is running.
For example, it took me 0.1 seconds to log in over ssh as root on a
testbox that was running a kernel with per UID group scheduling enabled:
$ time ssh root@testbox /bin/true
real 0m0.125s
user 0m0.013s
sys 0m0.011s
Which testbox had a system load of 1000.17 at this time, due to a rogue
runaway workload of one thousand (!) non-reniced infinite loops:
top - 14:34:05 up 30 min, 3 users, load average: ...Compilation [against 2.6.20.20] fails with buildfarm linux-2.6.20 # make CHK include/linux/version.h CHK include/linux/utsrelease.h CHK include/linux/compile.h CC kernel/sched.o In file included from kernel/sched.c:850: kernel/sched_fair.c:49: error: sysctl_sched_nr_latency causes a section type conflict make[1]: *** [kernel/sched.o] Error 1 make: *** [kernel] Error 2 @kernel/sched_fair.c -const_debug unsigned int sysctl_sched_nr_latency __read_mostly = 20; +const_debug unsigned int sysctl_sched_nr_latency = 20; seems solve that issue but i'm not sure this is the right thing to do or not :) Cheers -- S.Çağlar Onur <caglar@pardus.org.tr> http://cekirdek.pardus.org.tr/~caglar/ Linux is like living in a teepee. No Windows, no Gates and an Apache in house! -
oops, indeed! This happens with certain .config combinations only and it your fix is the right one - and i've updated the patches with this small fix. Anyone who hits this issue should re-download the same patch once more, or should apply the small patch below. Ingo Index: linux/kernel/sched_fair.c =================================================================== --- linux.orig/kernel/sched_fair.c +++ linux/kernel/sched_fair.c @@ -46,7 +46,7 @@ const_debug unsigned int sysctl_sched_ch * Minimal preemption granularity for CPU-bound tasks: * (default: 2 msec, units: nanoseconds) */ -const_debug unsigned int sysctl_sched_nr_latency __read_mostly = 20; +const_debug unsigned int sysctl_sched_nr_latency = 20; /* * sys_sched_yield() compat mode -
El Wed, 26 Sep 2007 13:13:57 +0200 I feel it better than 20.5 but the later is more stable. Let me explain. I patched a 2.6.22.9 kernel with both versions 22 and 20.5[1]. With the 22 version if i lock the screen (run screensaver) or i try to run a wine program i experience a hard lock up no keyboard or mouse and i have to reboot the machine (i can not try to access it via ssh because i do not have a second machine). I run with the nvidia kernel module so I know my report is useless but just for the record... Here it is my config: [1] Hand edited the Makefile hunk no other rejects # # Automatically generated make config: don't edit # Linux kernel version: 2.6.22.9-cfs-v20.5 # Fri Sep 28 16:12:07 2007 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_X86=y CONFIG_MMU=y CONFIG_ZONE_DMA=y CONFIG_QUICKLIST=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_DMI=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # Code maturity level options # CONFIG_EXPERIMENTAL=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_IPC_NS is not set CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set # CONFIG_UTS_NS is not set # CONFIG_AUDIT is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=15 # CONFIG_CPUSETS is not set CONFIG_SYSFS_DEPRECATED=y CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_EMBEDDED=y # CONFIG_UID16 is not set # CONFIG_SYSCTL_SYSCALL is not set # ...
I have seen that twice with v20.5 under 2.6.22.7/.8. Didn't see it yet with v22. xterm would get pissed if I tried to "secure keyboard", so something stole the keyboard focus and wouldn't give it back to xorg. Maybe a locking bug in xorg somewhere? Anyway, my kernel is NOT tainted, so rest assured that at least this one is not nVidia's fault. BTW, v20.5 in 2.6.21.7 would sometimes cause dmcrypt to oops when first mounting a LUKS volume if there was some non-extra-light disk activity going on. Probably something missing in the backport to 2.6.21... Sorry, days down here have been very busy, so I didn't have time to send a proper bug report. -- "One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh -
El Fri, 28 Sep 2007 23:20:13 -0300 I can add another data point 2.6.23-rc8-cfs-v22-g1bef7dc0-dirty does not have any problem with wine or xscreensaver is working fine. Again i use nvidia and a 3 party gpl driver for my wifi rt2500 which have compiled fine with the new kernel (surprise surprise!) If you need any more info just ask. Thanks P.S: I use ubuntu feisty fwiw -- Nunca discutas con un idiota. Al final te hacen rebajarte a su nivel y entonces te acaban ganando debido a su mayor experiencia. -
hm. There are no similar reports so far. Could you try to run the wine program from a VGA text console (first do 'xhost +' in an xterm under X and then 'export DISPLAY=:0' in the text console) and see whether anything gets output to that console? Also enable nmi_watchdog=2 - which could print a backtrace of the point of the hard lockup. but in general there's nothing scheduler-specific about screensavers or wine - but it could be related to 3D mode of the chip (hence related to the nvidia module) - do you get a similar lockup if you try to run 'glxgears'? Ingo -
El Sun, 30 Sep 2007 17:26:22 +0200 Ignore the last mail there was no need to use pictures this no an oops on boot ;) This is the back trace Oct 2 17:37:13 localhost kernel: [ 886.216868] BUG: unable to handle kernel NULL pointer dereference at virtual address 0000012c Oct 2 17:37:13 localhost kernel: [ 886.216874] printing eip: Oct 2 17:37:13 localhost kernel: [ 886.216876] f9374d0c Oct 2 17:37:13 localhost kernel: [ 886.216877] *pde = 00000000 Oct 2 17:37:13 localhost kernel: [ 886.216880] Oops: 0002 [#1] Oct 2 17:37:13 localhost kernel: [ 886.216881] PREEMPT SMP Oct 2 17:37:13 localhost kernel: [ 886.216884] Modules linked in: nls_cp850 isofs udf nls_utf8 ntfs binfmt_misc rfcomm l2cap bluetooth ipt_ULOG x_tables jfs ipv6 dm_crypt af_packet kvm_amd kvm fuse w83627ehf hwmon_vid i2c_dev lp snd_mpu401 snd_mpu401_uart snd_hda_intel snd_pcm_oss snd_mixer_oss snd_seq_dummy snd_pcm snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer nvidia(P) snd_seq_device usbhid i2c_ali15x3 i2c_ali1535 8250_pnp usblp ff_memless uli526x snd i2c_core 8250 serial_core button ali_agp parport_pc parport k8temp hwmon pcspkr evdev rtc snd_page_alloc rt2500 soundcore sg floppy sr_mod raid10 cdrom sd_mod ehci_hcd ohci_hcd ata_generic usbcore raid456 async_xor async_memcpy async_tx xor raid1 raid0 multipath linear md_mod thermal processor fan unix dm_mod Oct 2 17:37:13 localhost kernel: [ 886.216933] CPU: 0 Oct 2 17:37:13 localhost kernel: [ 886.216934] EIP: 0060:[<f9374d0c>] Tainted: P VLI Oct 2 17:37:13 localhost kernel: [ 886.216935] EFLAGS: 00010246 (2.6.23-rc9-cfs-v22-dirty #82) Oct 2 17:37:13 localhost kernel: [ 886.217129] EIP is at os_set_mlock_capability+0xc/0x30 [nvidia] Oct 2 17:37:13 localhost kernel: [ 886.217131] eax: 00000000 ebx: 00000000 ecx: 00000050 edx: 00000202 Oct 2 17:37:13 localhost kernel: [ 886.217134] esi: f74c3000 edi: f749cc00 ebp: df4b3ff0 esp: d319bed4 Oct 2 17:37:13 localhost kernel: [ 886.217136] ds: ...
Better late than never... Hi Ingo & cie., I tested CFS v22 on a 2.6.20.10 and it is working like a charm. I used to have a few lags once in a while with v20.5 on a 2.6.20.6 kernel but they simply vanished with the v22 (although I'm currenctly mostly testing on etch with xorg 7.1 instead of sarge with xfree 4.3 so this might also have an effect...) It seems stable enough to put it in operation by next week on all our workstations. This is great work, thx to all CFS contributors. - vin -
