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>