freebsd-src/contrib
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
..
amd
awk
bc
bind
binutils
bison
cpio
cvs
diff
gcc
gdb
global
gperf
groff
ipfilter
isc-dhcp Fix spelling and typos. 1999-05-06 12:17:58 +00:00
libgmp
libpam
libpcap
libreadline
nvi
opie
patch
perl5
pnpinfo
sendmail
sys/softupdates Severe slowdowns have been reported when creating or removing many 1999-05-07 02:26:47 +00:00
tcp_wrappers
tcpdump
telnet
texinfo
top
traceroute