Date: Wed, 6 Feb 2008 01:02:13 +0000 (UTC) From: Jeff Roberson <jeff@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/sys proc.h rwlock.h src/sys/kern kern_rwlock.c subr_turnstile.c Message-ID: <200802060102.m1612DTh041089@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jeff 2008-02-06 01:02:13 UTC
FreeBSD src repository
Modified files:
sys/sys proc.h rwlock.h
sys/kern kern_rwlock.c subr_turnstile.c
Log:
Adaptive spinning in write path with readers and writer starvation avoidance.
- Move recursion checking into rwlock inlines to free a bit for use with
adaptive spinners.
- Clear the RW_LOCK_WRITE_SPINNERS flag whenever the lock state changes
causing write spinners to restart their loop.
- Write spinners are limited by a count while readers hold the lock as
there is no way to know for certain whether readers are running still.
- In the read path block if there are write waiters or spinners to avoid
starving writers. Use a new per-thread count, td_rw_rlocks, to skip
starvation avoidance if it might cause a deadlock.
- Remove or change invalid assertions in turnstiles.
Reviewed by: attilio (developed parts of the patch as well)
Sponsored by: Nokia
Revision Changes Path
1.35 +172 -156 src/sys/kern/kern_rwlock.c
1.171 +3 -8 src/sys/kern/subr_turnstile.c
1.502 +2 -1 src/sys/sys/proc.h
1.15 +6 -3 src/sys/sys/rwlock.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802060102.m1612DTh041089>
