Subject: CVS commit: [vmlocking] src/sys
To: None <source-changes@NetBSD.org>
From: Andrew Doran <ad@netbsd.org>
List: source-changes
Date: 11/01/2007 21:58:29
Module Name: src
Committed By: ad
Date: Thu Nov 1 21:58:29 UTC 2007
Modified Files:
src/sys/arch/amd64/amd64 [vmlocking]: machdep.c
src/sys/arch/i386/i386 [vmlocking]: machdep.c
src/sys/arch/x86/include [vmlocking]: cpuvar.h
src/sys/arch/x86/x86 [vmlocking]: x86_machdep.c
src/sys/compat/mach [vmlocking]: mach_thread.c
src/sys/kern [vmlocking]: init_sysctl.c kern_clock.c kern_condvar.c
kern_cpu.c kern_fork.c kern_idle.c kern_kthread.c kern_lock.c
kern_lwp.c kern_proc.c kern_sleepq.c kern_softint.c kern_synch.c
kern_timeout.c kern_turnstile.c sched_4bsd.c sched_m2.c
subr_xcall.c sys_aio.c sys_lwp.c tty.c
src/sys/sys [vmlocking]: cpu_data.h lwp.h param.h proc.h sched.h
sleepq.h userret.h
src/sys/uvm [vmlocking]: uvm_glue.c
Log Message:
- Fix interactivity problems under high load. Beacuse soft interrupts
are being stacked on top of regular LWPs, more often than not aston()
was being called on a soft interrupt thread instead of a user thread,
meaning that preemption was not happening on EOI.
- Don't use bool in a couple of data structures. Sub-word writes are not
always atomic and may clobber other fields in the containing word.
- For SCHED_4BSD, make p_estcpu per thread (l_estcpu). Rework how the
dynamic priority level is calculated - it's much better behaved now.
- Kill the l_usrpri/l_priority split now that priorities are no longer
directly assigned by tsleep(). There are three fields describing LWP
priority:
l_priority: Dynamic priority calculated by the scheduler.
This does not change for kernel/realtime threads,
and always stays within the correct band. Eg for
timeshared LWPs it never moves out of the user
priority range. This is basically what l_usrpri
was before.
l_inheritedprio: Lent to the LWP due to priority inheritance
(turnstiles).
l_kpriority: A boolean value set true the first time an LWP
sleeps within the kernel. This indicates that the LWP
should get a priority boost as compensation for blocking.
lwp_eprio() now does the equivalent of sched_kpri() if
the flag is set. The flag is cleared in userret().
- Keep track of scheduling class (OTHER, FIFO, RR) in struct lwp, and use
this to make decisions in a few places where we previously tested for a
kernel thread.
- Partially fix itimers and usr/sys/intr time accounting in the presence
of software interrupts.
- Use kthread_create() to create idle LWPs. Move priority definitions
from the various modules into sys/param.h.
- newlwp -> lwp_create
To generate a diff of this commit:
cvs rdiff -r1.52.2.9 -r1.52.2.10 src/sys/arch/amd64/amd64/machdep.c
cvs rdiff -r1.601.2.10 -r1.601.2.11 src/sys/arch/i386/i386/machdep.c
cvs rdiff -r1.8.2.3 -r1.8.2.4 src/sys/arch/x86/include/cpuvar.h
cvs rdiff -r1.8.2.3 -r1.8.2.4 src/sys/arch/x86/x86/x86_machdep.c
cvs rdiff -r1.39.6.3 -r1.39.6.4 src/sys/compat/mach/mach_thread.c
cvs rdiff -r1.98.2.9 -r1.98.2.10 src/sys/kern/init_sysctl.c
cvs rdiff -r1.106.6.8 -r1.106.6.9 src/sys/kern/kern_clock.c
cvs rdiff -r1.5.2.8 -r1.5.2.9 src/sys/kern/kern_condvar.c
cvs rdiff -r1.2.2.8 -r1.2.2.9 src/sys/kern/kern_cpu.c
cvs rdiff -r1.136.2.9 -r1.136.2.10 src/sys/kern/kern_fork.c
cvs rdiff -r1.1.6.3 -r1.1.6.4 src/sys/kern/kern_idle.c
cvs rdiff -r1.16.6.12 -r1.16.6.13 src/sys/kern/kern_kthread.c
cvs rdiff -r1.110.2.18 -r1.110.2.19 src/sys/kern/kern_lock.c
cvs rdiff -r1.61.2.24 -r1.61.2.25 src/sys/kern/kern_lwp.c
cvs rdiff -r1.107.2.17 -r1.107.2.18 src/sys/kern/kern_proc.c
cvs rdiff -r1.7.2.19 -r1.7.2.20 src/sys/kern/kern_sleepq.c
cvs rdiff -r1.1.2.19 -r1.1.2.20 src/sys/kern/kern_softint.c
cvs rdiff -r1.186.2.20 -r1.186.2.21 src/sys/kern/kern_synch.c
cvs rdiff -r1.21.4.5 -r1.21.4.6 src/sys/kern/kern_timeout.c
cvs rdiff -r1.6.2.7 -r1.6.2.8 src/sys/kern/kern_turnstile.c
cvs rdiff -r1.1.6.12 -r1.1.6.13 src/sys/kern/sched_4bsd.c
cvs rdiff -r1.3.2.5 -r1.3.2.6 src/sys/kern/sched_m2.c
cvs rdiff -r1.1.2.5 -r1.1.2.6 src/sys/kern/subr_xcall.c
cvs rdiff -r1.5.2.10 -r1.5.2.11 src/sys/kern/sys_aio.c
cvs rdiff -r1.12.2.11 -r1.12.2.12 src/sys/kern/sys_lwp.c
cvs rdiff -r1.193.2.13 -r1.193.2.14 src/sys/kern/tty.c
cvs rdiff -r1.7.6.9 -r1.7.6.10 src/sys/sys/cpu_data.h
cvs rdiff -r1.56.2.17 -r1.56.2.18 src/sys/sys/lwp.h
cvs rdiff -r1.255.4.14 -r1.255.4.15 src/sys/sys/param.h
cvs rdiff -r1.243.2.8 -r1.243.2.9 src/sys/sys/proc.h
cvs rdiff -r1.33.2.10 -r1.33.2.11 src/sys/sys/sched.h
cvs rdiff -r1.5.2.4 -r1.5.2.5 src/sys/sys/sleepq.h
cvs rdiff -r1.11.4.1 -r1.11.4.2 src/sys/sys/userret.h
cvs rdiff -r1.104.2.11 -r1.104.2.12 src/sys/uvm/uvm_glue.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.