224a6aa241
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. |
||
---|---|---|
.. | ||
amd | ||
awk | ||
bc | ||
bind | ||
binutils | ||
bison | ||
cpio | ||
cvs | ||
diff | ||
gcc | ||
gdb | ||
global | ||
gperf | ||
groff | ||
ipfilter | ||
isc-dhcp | ||
libgmp | ||
libpam | ||
libpcap | ||
libreadline | ||
nvi | ||
opie | ||
patch | ||
perl5 | ||
pnpinfo | ||
sendmail | ||
sys/softupdates | ||
tcp_wrappers | ||
tcpdump | ||
telnet | ||
texinfo | ||
top | ||
traceroute |