exec() and mount()
system calls and inode reading). Buffer space is reserved in increments
of 4096-byte pages, but buffers can be much larger than 4096 bytes,
requiring as many as 16 or more pages per buffer, depending on hardware
device and configuration characteristics.
Two methods for allocating buffer space are supported: static and dynamic. The obsolescent static method allocates buffer space and buffer header structures at system boot time. The preferred dynamic buffer cache method allocates buffer space and supporting data structures as they are needed, using predefined minimum and maximum values to establish overall buffer cache space allocation limits.
Most system administrators prefer to specify what percentage or range of
percentages of available system memory can be allocated for buffer use,
letting the system allocate memory for buffers as needed within the
specified limits. Two kernel parameters, dbc_min_pct and dbc_max_pct , control the lower and
upper limit, respectively, as a percentage of system memory. How many
pages of memory are allocated for buffer cache use at any given time is
determined by system needs, but the two parameters ensure that allocated
memory never drops below dbc_min_pct and cannot exceed
dbc_max_pct percent of total system memory. Administrators
of multiple systems usually prefer this method because it provides an
easy way to choose buffer space limits that are directly related to how
much memory is actually installed in each machine, allowing common or
similar kernel configurations throughout the network.
To enable dynamic buffer caching, the kernel parametersnbufandbufpagesmust both be set to zero.
For administrators who choose not to use dynamic buffer caching, the two
kernel parameters, nbuf
and bufpages ,
control static buffer allocation. If bufpages is non-zero,
it specifies the fixed number of 4096-byte pages that are to be
allocated for file system buffer cache. nbuf is provided
for backward compatibility purposes. If set to a non-zero value, it
specifies the maximum number of buffer headers that can exist in the
buffer header array. However, the preferred approach is to set
nbuf to zero, in which case one header is created for each
two bufpages allocated.
bufpages and nbuf to zero, and set
dbc_min_pct and dbc_max_pct to the desired
upper and lower limits as a percentage of total system memory. This
activates dynamic buffer cache allocation.
To allocate a fixed amount of memory for static buffer cache, set
bufpages to the desired number of 4-Kbyte pages, and set
nbuf to zero which allocates space for
bufpages/2 buffer headers in the header array.
dbc_min_pct and dbc_max_pct are ignored.