freebsd-skq/sys
Colin Percival 2bb93f2d18 Change the queue of locks in kern_rangelock.c from holding lock requests in
the order that they arrive, to holding
(a) granted write lock requests, followed by
(b) granted read lock requests, followed by
(c) ungranted requests, in order of arrival.

This changes the stopping condition for iterating through granted locks to
see if a new request can be granted: When considering a read lock request,
we can stop iterating as soon as we see a read lock request, since anything
after that point is either a granted read lock request or a request which
has not yet been granted.  (For write lock requests, we must still compare
against all granted lock requests.)

For workloads with R parallel reads and W parallel writes, this improves
the time spent from O((R+W)^2) to O(W*(R+W)); i.e., heavy parallel-read
workloads become significantly more scalable.

No statistically significant change in buildworld time has been measured,
but synthetic tests of parallel 'dd > /dev/null' and 'openssl enc >/dev/null'
with the input file cached yield dramatic (up to 10x) improvement with high
(up to 128 processes) levels of parallelism.

Reviewed by:	kib
2013-08-15 20:19:17 +00:00
..
amd64 Use an ANSI C definition of initializecpucache() to match the declaration 2013-08-15 17:44:44 +00:00
arm Rename imx_machdep.c to imx51_machdep.c, because it contains hardware 2013-08-13 21:12:28 +00:00
boot Add optional support for default override of standard setup; but only if 2013-08-12 03:52:23 +00:00
bsm
cam Turn comments about locking into actual lock assertions. 2013-08-15 20:00:32 +00:00
cddl Use kld_{load,unload} instead of mod_{load,unload} for the linker file load 2013-08-14 00:42:21 +00:00
compat Make sendfile() a method in the struct fileops. Currently only 2013-08-15 07:54:31 +00:00
conf Some objects - such as *_genassym.o are not hooked into 2013-08-14 22:19:29 +00:00
contrib Add firmware for the Intel 2030 and variants. 2013-08-11 01:09:16 +00:00
crypto Fix const propagation issues to make GCC happy. 2013-07-11 16:27:11 +00:00
ddb
dev Avoid potential redefinition of the macro. 2013-08-15 20:03:22 +00:00
fs Fix several performance related issues in the new NFS server's 2013-08-14 21:11:26 +00:00
gdb rename scheduler->swapper and SI_SUB_RUN_SCHEDULER->SI_SUB_LAST 2013-07-24 09:45:31 +00:00
geom Return error when opening read-only volumes (like RAID4/5/...) for writing. 2013-08-13 07:56:40 +00:00
gnu/fs/reiserfs
i386 Merge acpica_machdep.h for amd64 and i386 and move to x86. In fact, these 2013-08-13 22:05:10 +00:00
ia64 Tidy up global locks for ACPICA. There is no functional change. 2013-08-13 21:34:03 +00:00
isa
kern Change the queue of locks in kern_rangelock.c from holding lock requests in 2013-08-15 20:19:17 +00:00
kgssapi Add support for host-based (Kerberos 5 service principal) initiator 2013-07-09 01:05:28 +00:00
libkern Fix watchdog pretimeout. 2013-07-27 20:47:01 +00:00
mips Add a missing break. 2013-08-12 00:38:47 +00:00
modules Fix make depend 2013-08-14 08:03:57 +00:00
net Add a missing module version declaration to if_tun(4). 2013-08-07 01:32:08 +00:00
net80211 Replace the homegrown implementation of nitems() with calls to nitems() 2013-08-14 04:24:25 +00:00
netatalk
netgraph Add constant for PPP-Max-PayLoad tag. 2013-07-23 10:25:34 +00:00
netinet Specify SDT probe argument types in the probe definition itself rather than 2013-08-15 04:08:55 +00:00
netinet6 Fix incompatibility in ICMPV6CTL_ND6_PRLIST sysctl, and SIOCGPRLST_IN6, 2013-08-06 17:10:52 +00:00
netipsec Remove the large part of struct ipsecstat. Only few fields of this 2013-07-23 14:14:24 +00:00
netipx
netnatm
netpfil Fix a possible NULL-pointer dereference on the pfsync(4) reconfiguration. 2013-07-29 13:17:18 +00:00
netsmb Remove a reference to LK_DRAIN now that lockmgr(9) is gone from this 2013-06-28 20:21:13 +00:00
nfs Changes to allow using BOOTP_NFSROOT and mounting an nfs root filesystem 2013-07-31 19:14:00 +00:00
nfsclient A problem with the old NFS client where large writes to large files 2013-07-04 00:54:23 +00:00
nfsserver - Convert the bufobj lock to rwlock. 2013-05-31 00:43:41 +00:00
nlm
ofed Make sendfile() a method in the struct fileops. Currently only 2013-08-15 07:54:31 +00:00
opencrypto Make sendfile() a method in the struct fileops. Currently only 2013-08-15 07:54:31 +00:00
pc98 Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
pci Update PCI drivers to no longer look at the MEMIO-enabled bit in the PCI 2013-08-12 23:30:01 +00:00
powerpc The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
rpc Add support for host-based (Kerberos 5 service principal) initiator 2013-07-09 01:05:28 +00:00
security audit_proc_coredump: check return value of audit_new 2013-07-09 09:03:01 +00:00
sparc64 The soft and hard busy mechanism rely on the vm object lock to work. 2013-08-09 11:11:11 +00:00
sys Change the queue of locks in kern_rangelock.c from holding lock requests in 2013-08-15 20:19:17 +00:00
teken
tools
ufs This bug fix is in a code path in rename taken when there is a 2013-08-06 16:50:05 +00:00
vm On the recovery path for vm_page_alloc(), if a page had been requested 2013-08-15 11:01:25 +00:00
x86 Call set_i8254_freq with MODE_STOP (0) rather than a magic number of 0. 2013-08-15 17:21:06 +00:00
xdr
xen Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
Makefile