FreeBSD src
Go to file
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
bin This Implements the mumbled about "Jail" feature. 1999-04-28 11:38:52 +00:00
contrib Severe slowdowns have been reported when creating or removing many 1999-05-07 02:26:47 +00:00
crypto MF libexec/telnetd: Determine the host name using an array size of 1999-04-08 21:39:34 +00:00
etc Add extra dirs needed by install. Do the include/* by reusing 1999-05-05 19:44:14 +00:00
games Round two of MetBSD games merges. 1999-05-03 02:08:31 +00:00
gnu Remove $Log garbage from these; it was causing failure when expanded. 1999-05-05 19:09:48 +00:00
include Part of routed upgrade. 1999-05-02 13:20:38 +00:00
kerberos5 Link everything against libcrypt. ELF builds complain without it. 1999-01-25 06:49:43 +00:00
kerberosIV Link everything against libcrypt. ELF builds complain without it. 1999-01-25 06:49:43 +00:00
lib Correct prototype for tigetstr(). 1999-05-05 02:51:45 +00:00
libexec Add missing -A option to SYNOPSIS. 1999-05-04 19:42:01 +00:00
release Added details of PCI network cards which work by emulating the NE2000. 1999-05-06 19:24:45 +00:00
sbin Add a number of interrelated CAM feature enhancements and bug fixes. 1999-05-06 20:16:39 +00:00
secure Typo in comment. 1999-04-25 13:14:36 +00:00
share Fix confusing sentence, the PR noticed the sentence, I rewrote the sentence. 1999-05-06 20:51:31 +00:00
sys Severe slowdowns have been reported when creating or removing many 1999-05-07 02:26:47 +00:00
tools Move the proper set of libraries. 1999-04-05 21:41:56 +00:00
usr.bin Install the right man page. 1999-05-05 07:09:21 +00:00
usr.sbin Modify wicontrol(8) and wi(4) to allow setting the frequency of the 1999-05-06 16:32:45 +00:00
COPYRIGHT Add Id keyword 1998-09-13 23:11:13 +00:00
Makefile Change !defined(NOAOUT) knob to defined(WANT_AOUT). 1999-03-29 10:59:53 +00:00
Makefile.inc0 Change !defined(NOAOUT) knob to defined(WANT_AOUT). 1999-03-29 10:59:53 +00:00
Makefile.inc1 Document NO_FORTRAN. 1999-05-03 17:54:59 +00:00
Makefile.upgrade Set X11BASE to something deliberately bogus in elf_buildworld so that 1999-03-23 08:09:25 +00:00
README No more src/lkm dir... 1999-01-06 14:02:35 +00:00
UPDATING Add two recent developments: 1999-04-28 05:18:46 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on: $Id: README,v 1.13 1998/09/13 09:38:34 markm Exp $

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel and the contents of /etc.  Please see the top of the Makefile
in this directory for more information on the standard build targets
and compile-time flags.

Building a kernel with config(8) is a somewhat more involved process,
documentation for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file LINT contains entries for all possible devices, not
just those commonly used, and is meant more as a general reference
than an actual kernel configuration file (a kernel built from it
wouldn't even run).


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

crypto		Export controlled stuff (see crypto/README).

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		DES and DES-related utilities - NOT FOR EXPORT!

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html