summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2004-07-18 15:59:03 +0000
committerscottl <scottl@FreeBSD.org>2004-07-18 15:59:03 +0000
commit7ad60316cd2a6fab33bff1ecd701c1d696895b96 (patch)
treeac22ab2a20ec2a247773c0b4fbd9fd368f767eb2 /sys
parentcf328c10576453a3e63ec1ff22f92f1b352db615 (diff)
downloadFreeBSD-src-7ad60316cd2a6fab33bff1ecd701c1d696895b96.zip
FreeBSD-src-7ad60316cd2a6fab33bff1ecd701c1d696895b96.tar.gz
Enable ADAPTIVE_MUTEXES by default by changing the sense of the option to
NO_ADAPTIVE_MUTEXES. This option has been enabled by default on amd64 for quite some time, and has been extensively tested on i386 and sparc64. It shows measurable performance gains in many circumstances, and few negative effects. It would be nice in t he future if adaptive mutexes actually went to sleep after a certain amount of spinning, but that will require quite a bit more testing.
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/conf/GENERIC1
-rw-r--r--sys/conf/NOTES5
-rw-r--r--sys/conf/options2
-rw-r--r--sys/kern/kern_mutex.c6
4 files changed, 7 insertions, 7 deletions
diff --git a/sys/amd64/conf/GENERIC b/sys/amd64/conf/GENERIC
index 4cd44a4..87ca19f 100644
--- a/sys/amd64/conf/GENERIC
+++ b/sys/amd64/conf/GENERIC
@@ -28,7 +28,6 @@ ident GENERIC
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options SCHED_ULE # ULE scheduler
-options ADAPTIVE_MUTEXES # mutexes first spin lock, then sleep
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options FFS # Berkeley Fast Filesystem
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 0ec51a5..6e33605 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -169,8 +169,9 @@ options SMP # Symmetric MultiProcessor Kernel
# ADAPTIVE_MUTEXES changes the behavior of blocking mutexes to spin
# if the thread that currently owns the mutex is executing on another
-# CPU.
-options ADAPTIVE_MUTEXES
+# CPU. This behaviour is enabled by default, so this option can be used
+# to disable it.
+options NO_ADAPTIVE_MUTEXES
# MUTEX_NOINLINE forces mutex operations to call functions to perform each
# operation rather than inlining the simple cases. This can be used to
diff --git a/sys/conf/options b/sys/conf/options
index 042a025..d1dcb2a 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -56,7 +56,7 @@ KDB_TRACE opt_kdb.h
KDB_UNATTENDED opt_kdb.h
# Miscellaneous options.
-ADAPTIVE_MUTEXES
+NO_ADAPTIVE_MUTEXES
ALQ
CODA_COMPAT_5 opt_coda.h
COMPAT_43 opt_compat.h
diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c
index 662cd4c..ffb75e3 100644
--- a/sys/kern/kern_mutex.c
+++ b/sys/kern/kern_mutex.c
@@ -421,7 +421,7 @@ _mtx_lock_sleep(struct mtx *m, int opts, const char *file, int line)
{
struct turnstile *ts;
struct thread *td = curthread;
-#if defined(SMP) && defined(ADAPTIVE_MUTEXES)
+#if defined(SMP) && !defined(NO_ADAPTIVE_MUTEXES)
struct thread *owner;
#endif
uintptr_t v;
@@ -503,7 +503,7 @@ _mtx_lock_sleep(struct mtx *m, int opts, const char *file, int line)
continue;
}
-#if defined(SMP) && defined(ADAPTIVE_MUTEXES)
+#if defined(SMP) && !defined(NO_ADAPTIVE_MUTEXES)
/*
* If the current owner of the lock is executing on another
* CPU, spin instead of blocking.
@@ -518,7 +518,7 @@ _mtx_lock_sleep(struct mtx *m, int opts, const char *file, int line)
}
continue;
}
-#endif /* SMP && ADAPTIVE_MUTEXES */
+#endif /* SMP && !NO_ADAPTIVE_MUTEXES */
/*
* We definitely must sleep for this lock.
OpenPOWER on IntegriCloud