freebsd-dev/sys
Kirk McKusick 224a6aa241 Severe slowdowns have been reported when creating or removing many
files at once on a filesystem running soft updates. The root of
the problem is that soft updates limits the amount of memory that
may be allocated to dependency structures so as to avoid hogging
kernel memory. The original algorithm just waited for the disk I/O
to catch up and reduce the number of dependencies. This new code
takes a much more aggressive approach. Basically there are two
resources that routinely hit the limit. Inode dependencies during
periods with a high file creation rate and file and block removal
dependencies during periods with a high file removal rate. I have
attacked these problems from two fronts. When the inode dependency
limits are reached, I pick a random inode dependency, UFS_UPDATE
it together with all the other dirty inodes contained within its
disk block and then write that disk block. This trick usually
clears 5-50 inode dependencies in a single disk I/O. For block and
file removal dependencies, I pick a random directory page that has
at least one remove pending and VOP_FSYNC its directory. That
releases all its removal dependencies to the work queue. To further
hasten things along, I also immediately start the work queue process
rather than waiting for its next one second scheduled run.
1999-05-07 02:26:47 +00:00
..
alpha Changes to support diskless booting on the alpha: 1999-05-03 09:36:29 +00:00
amd64 Ensure prototype for pnp_configure() is visible. 1999-05-06 22:16:19 +00:00
boot Changes to support diskless booting on the alpha: 1999-05-03 09:36:29 +00:00
cam Add a number of interrelated CAM feature enhancements and bug fixes. 1999-05-06 20:16:39 +00:00
coda
compat Fix up a few easy 'assignment used as truth value' and 'suggest parens 1999-05-06 18:44:42 +00:00
compile
conf Add missing comment characters from wi driver description. 1999-05-06 18:08:23 +00:00
contrib Severe slowdowns have been reported when creating or removing many 1999-05-07 02:26:47 +00:00
ddb
dev Remove old grunge, including references to sys/disk.h (which is going 1999-05-07 01:35:29 +00:00
fs One too many vfsops.. 1999-05-06 22:07:34 +00:00
geom Don't use <sys/disk.h> 1999-05-06 19:19:30 +00:00
gnu Add an additional probe, hopefully allowing me to distinguish 1999-05-03 09:32:31 +00:00
i4b Missing 'int' declaration in devsw_installed variable. 1999-05-06 18:33:48 +00:00
i386 Use id_ointr for setting the pnp interrupt handler, it uses the oldstyle 1999-05-06 22:26:28 +00:00
isa remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
isofs/cd9660 Suser() simplification: 1999-04-27 11:18:52 +00:00
kern remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
libkern
miscfs remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
modules Fixed bitrot in comments. 1999-05-06 03:35:44 +00:00
msdosfs Add sufficient braces to keep egcs happy about potentially ambiguous 1999-05-06 18:13:11 +00:00
net Add sufficient braces to keep egcs happy about potentially ambiguous 1999-05-06 18:13:11 +00:00
netatalk Change suser_xxx() to suser() where it applies. 1999-04-27 12:21:16 +00:00
netatm Suser() simplification: 1999-04-27 11:18:52 +00:00
netinet Fix two warnings; and note a problem where a pointer is stored in an 1999-05-06 22:08:57 +00:00
netipx Suser() simplification: 1999-04-27 11:18:52 +00:00
netkey
netnatm
netns
nfs remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
nfsclient remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
nfsserver remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
ntfs One too many vfsops.. 1999-05-06 22:07:34 +00:00
pc98 remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
pccard Unbreak slot_irq_handler(). The problem here is that slot_irq_handler() 1999-05-04 15:43:02 +00:00
pci Fix a goof on my part; s/struct moduledata */struct module */ 1999-05-06 22:05:39 +00:00
posix4 Well folks, this is it - The second stage of the removal for build support 1999-04-17 08:36:07 +00:00
powerpc Fixed several (not all) warnings. 1999-04-23 19:53:38 +00:00
rpc
svr4 Suser() simplification: 1999-04-27 11:18:52 +00:00
sys remove b_proc from struct buf, it's (now) unused. 1999-05-06 20:00:34 +00:00
tools
ufs Severe slowdowns have been reported when creating or removing many 1999-05-07 02:26:47 +00:00
vm Add brackets to silence egcs and help clarity. 1999-05-06 22:06:45 +00:00
Makefile Use ${.CURDIR} in `exists()' constructs. 1999-04-21 11:09:40 +00:00