cvs commit: src/sys/kern kern_condvar.c kern_sx.c kern_synch.c
kern_thread.c kern_timeout.c sched_4bsd.c sched_ule.c
subr_sleepqueue.c src/sys/sys condvar.h proc.h sched.h
sleepqueue.h src/sys/vm vm_glue.c vm_meter.c
Jeff Roberson
jeff at FreeBSD.org
Wed Mar 12 06:31:07 UTC 2008
jeff 2008-03-12 06:31:07 UTC
FreeBSD src repository
Modified files:
sys/kern kern_condvar.c kern_sx.c kern_synch.c
kern_thread.c kern_timeout.c sched_4bsd.c
sched_ule.c subr_sleepqueue.c
sys/sys condvar.h proc.h sched.h sleepqueue.h
sys/vm vm_glue.c vm_meter.c
Log:
- Pass the priority argument from *sleep() into sleepq and down into
sched_sleep(). This removes extra thread_lock() acquisition and
allows the scheduler to decide what to do with the static boost.
- Change the priority arguments to cv_* to match sleepq/msleep/etc.
where 0 means no priority change. Catch -1 in cv_broadcastpri() and
convert it to 0 for now.
- Set a flag when sleeping in a way that is compatible with swapping
since direct priority comparisons are meaningless now.
- Add a sysctl to ule, kern.sched.static_boost, that defaults to on which
controls the boost behavior. Turning it off gives better performance
in some workloads but needs more investigation.
- While we're modifying sleepq, change signal and broadcast to both
return with the lock held as the lock was held on enter.
Reviewed by: jhb, peter
Revision Changes Path
1.63 +14 -9 src/sys/kern/kern_condvar.c
1.59 +10 -9 src/sys/kern/kern_sx.c
1.307 +10 -19 src/sys/kern/kern_synch.c
1.268 +2 -2 src/sys/kern/kern_thread.c
1.110 +1 -1 src/sys/kern/kern_timeout.c
1.116 +6 -1 src/sys/kern/sched_4bsd.c
1.231 +9 -1 src/sys/kern/sched_ule.c
1.46 +23 -27 src/sys/kern/subr_sleepqueue.c
1.15 +1 -1 src/sys/sys/condvar.h
1.505 +2 -2 src/sys/sys/proc.h
1.36 +1 -1 src/sys/sys/sched.h
1.13 +4 -4 src/sys/sys/sleepqueue.h
1.227 +1 -2 src/sys/vm/vm_glue.c
1.97 +6 -16 src/sys/vm/vm_meter.c
More information about the cvs-src
mailing list