freebsd-dev/sys
Robert Watson a28ce935d9 Modify entropy harvesting locking strategy:
- Trade off granularity to reduce overhead, since the current model
  doesn't appear to reduce contention substantially: move to a single
  harvest mutex protecting harvesting queues, rather than one mutex
  per source plus a mutex for the free list.

- Reduce mutex operations in a harvesting event to 2 from 4, and
  maintain lockless read to avoid mutex operations if the queue is
  full.

- When reaping harvested entries from the queue, move all entries from
  the queue at once, and when done with them, insert them all into a
  thread-local queue for processing; then insert them all into the
  empty fifo at once.  This reduces O(4n) mutex operations to O(2)
  mutex operations per wakeup.

In the future, we may want to look at re-introducing granularity,
although perhaps at the granularity of the source rather than the
source class; both the new and old strategies would cause contention
between different instances of the same source (i.e., multiple
network interfaces).

Reviewed by:	markm
2004-10-09 22:04:13 +00:00
..
alpha Rework how we store process times in the kernel such that we always store 2004-10-05 18:51:11 +00:00
amd64 Make pte_load_store() an atomic operation in all cases, not just i386 PAE. 2004-10-08 08:23:43 +00:00
arm Add optimized version of the bswap macroes for constants if __OPTIMIZED__ is 2004-10-01 16:55:59 +00:00
boot Back out changes which were introduced to delay mounting root file system. 2004-10-05 11:26:43 +00:00
cam Remove the camnet swi and CAM_PERIPH_NET. It has never been used, and given 2004-10-05 04:22:20 +00:00
coda Do not use devsw() but si_devsw direction. This is still bogus but a 2004-09-23 12:19:24 +00:00
compat Close a race between a thread exiting and the freeing of it's stack. 2004-10-06 14:23:00 +00:00
conf Forcibly create symlinked headers, otherwise the build process may fail 2004-10-09 13:51:28 +00:00
contrib Add an additional struct inpcb * argument to pfil(9) in order to enable 2004-09-29 04:54:33 +00:00
crypto
ddb Refactor a bunch of scheduler code to give basically the same behaviour 2004-09-05 02:09:54 +00:00
dev Modify entropy harvesting locking strategy: 2004-10-09 22:04:13 +00:00
doc
fs Rework how we store process times in the kernel such that we always store 2004-10-05 18:51:11 +00:00
gdb Comment-out the debugging printf I left in in case there were some 2004-08-10 19:32:33 +00:00
geom Only do the geometry translations on ad* devices, other devices seems to 2004-10-08 21:27:27 +00:00
gnu Desupport device nodes on EXT2 filesystems. 2004-09-27 20:38:46 +00:00
i4b Kill count device support from config. I've changed the last few 2004-08-30 23:03:58 +00:00
i386 style(9) 2004-10-09 08:31:21 +00:00
ia64 Add the Madison II, which is the second generation Madison. The Madison II 2004-10-06 02:43:28 +00:00
isa Introduce a tunable to disable support for Synaptics touchpads. A number of 2004-09-29 23:49:57 +00:00
isofs/cd9660 Hold proper thread count while frobbing drivers ioctl. 2004-09-24 07:24:02 +00:00
kern Remove inlined m_tag_free(). Rename _m_tag_free() to m_tag_free() 2004-10-09 13:25:19 +00:00
libkern Don't attempt to profile __udivsi3() and friends, as mcount() uses them. 2004-10-01 16:44:08 +00:00
modules Port NetBSD auxio driver. The driver was modified to use led(4) and can 2004-10-09 07:31:03 +00:00
net Change pfil starvation prevention from fail-open to fail-close. 2004-10-08 12:07:20 +00:00
net80211 Add a new network interface flag, IFF_NEEDSGIANT, which will allow 2004-07-27 23:20:45 +00:00
netatalk Inline umich license from COPYRIGHT to make it clear what license the 2004-08-10 03:23:05 +00:00
netatm Avoid casts as lvalues. 2004-07-28 06:59:55 +00:00
netgraph Return 0, not NULL, from a function declared as returning int. 2004-10-09 14:20:18 +00:00
netinet Acquire the send socket buffer lock around tcp_output() activities 2004-10-09 16:48:51 +00:00
netinet6 fixed too delayed routing cache expiry. (tvtohz() converts a time interval to ticks, whereas hzto() converts an absolute time to ticks) 2004-10-06 03:32:26 +00:00
netipsec Remove extraneous SECPOLICY_LOCK_DESTROY calls that cause the mutex to be 2004-10-02 00:19:05 +00:00
netipx Mark Netgraph TTY, KAME IPSEC, and IPX/SPX as requiring Giant for correct 2004-08-28 15:24:53 +00:00
netkey Merge netipsec/key.c:1.17 into KAME pfkey implementation: 2004-09-30 00:49:55 +00:00
netnatm
netncp
netsmb Avoid casts as lvalues. 2004-07-28 06:59:55 +00:00
nfs
nfs4client Remove NFS4 vop method vector for devices: we are desupporing device nodes 2004-09-27 20:02:50 +00:00
nfsclient nfsclient/nfs_bio.c has a PHOLD() without a PRELE(). Neither should 2004-10-01 05:01:41 +00:00
nfsserver Convert a mtx_lock(&Giant) to a mtx_unlock(&Giant) in nfsrv_link() to 2004-08-25 16:52:59 +00:00
opencrypto Don't acquire Giant in cryptof_close(), as the code is intended to be 2004-08-10 03:26:17 +00:00
pc98 Add more PnP serial cards support. 2004-10-01 15:58:54 +00:00
pccard Move PNP IDs back into oldcard files 2004-08-13 06:57:31 +00:00
pci Fix sis, bfe and ndis in the same way dc was fixed: 2004-10-08 16:14:42 +00:00
posix4
powerpc Add sc_iostart to softc and unbreak the build. 2004-09-27 19:51:58 +00:00
rpc Prefer C99's __func__ over GCC's __FUNCTION__. 2004-09-23 18:25:46 +00:00
security Remove the debugging tunable, it was not being used. 2004-09-10 15:14:50 +00:00
sparc64 Flush the register windows before we start changing the context. 2004-10-09 16:42:09 +00:00
sys Add SOCKBUF_UNLOCK_ASSERT(), which asserts that the current thread does 2004-10-09 16:42:57 +00:00
tools
ufs Fix fsbtodb() for UFS1. This fixes an overflow for file sizes >1 TB, 2004-10-09 20:16:06 +00:00
vm In the previous revision, I did not intend to change the default value 2004-10-09 18:51:32 +00:00
Makefile Add a NO_BOOT knob to prevent building the boot blocks and loader. 2004-08-19 09:54:28 +00:00