 |
» |
|
|
 |
NAMEvxtunefs — tune a VxFS File System SYNOPSIS/sbin/vxtunefs
[-ps]
[-f
tunefstab]
[-o
parameter=value]
[{mount_point|block_special}]... DESCRIPTIONvxtunefs
sets or prints tuneable I/O parameters of mounted file systems.
vxtunefs
can set parameters describing the I/O properties
of the underlying device, parameters to indicate when to treat
an I/O as direct I/O, or parameters to control the extent allocation policy
for the specified file system. With no options specified,
vxtunefs
prints the
existing VxFS parameters
for the specified file systems. vxtunefs
works on a list of mount points specified on
the command line, or all the mounted file systems
listed in the
tunefstab
file.
The default
tunefstab
file is
/etc/vx/tunefstab.
You can change the default
using the
-f
option. vxtunefs
can
be run at any time on a mounted file system, and all parameter changes
take immediate effect. Parameters specified on the command line
override parameters listed in the
tunefstab
file. If
/etc/vx/tunefstab
exists, the VxFS-specific
mount
command invokes
vxtunefs
to set device parameters from
/etc/vx/tunefstab. Options- -f filename
Use
filename
instead of
/etc/vx/tunefstab
as the file containing tuning parameters. - -o parameter=value
Specify parameters for the file systems
listed on the command line.
The parameters are listed below. - -p
Print the tuning parameters for
all the file systems specified on the command line. - -s
Set the new tuning parameters for the VxFS file systems
specified on the command line or in the
tunefstab
file.
VxFS Tuning Parameters and GuidelinesThe values for all the following parameters except
read_nstream
and
write_nstream
can be
specified in bytes, kilobytes, megabytes or sectors (512 bytes) by
appending
k,
K,
m,
M,
s,
or
S.
There is no need for a suffix
for the value in bytes. For an application to do efficient
direct I/O or discovered direct I/O,
it should issue read requests that are equal
to the product of
read_nstream
and
read_pref_io.
In general, any multiple or factor
of
read_nstream
multiplied by
read_pref_io
is
a good size for performance.
For writing, the same general rule applies to
the
write_pref_io
and
write_nstream
parameters. When tuning a
file system, the best thing to do is use the tuning parameters
under a real workload. If an application is doing sequential I/O to large files, it should
issue requests larger than the
discovered_direct_iosz.
This performs the I/O requests as discovered
direct I/O requests which are unbuffered like direct I/O, but
which do not require synchronous inode updates when extending the file.
If the file is too large to fit in the cache, using
unbuffered I/O avoids losing useful data out of
the cache, and lowers CPU overhead. The VxFS tuneable parameters are:
- default_indir_size
On VxFS, files can have up to 10 variable
sized extents stored in the inode. After these extents are
used, the file must use indirect extents which are a
fixed size that is set when the file first uses indirect extents.
These indirect extents are 8K by default. The file system
does not use larger indirect extents because it must fail
a write and return
ENOSPC
if there are no extents
available that are the indirect extent size. For file
systems with many large files, the 8K indirect extent
size is too small. The files that get into indirect
extents use a lot of smaller extents instead of a few
larger ones. By using this parameter, the default indirect
extent size can be increased so that large files in indirects
use fewer larger extents. Be careful using this tuneable. If it is too
large, then writes fail when they are unable to allocate
extents of the indirect extent size to a file. In general,
the fewer and the larger the files on a file system, the
larger
default_indir_size
can be. The value of
this parameter is generally a multiple of the
read_pref_io
parameter. This tuneable does not apply to disk layout Version 4. - discovered_direct_iosz
Any file I/O requests larger than the
discovered_direct_iosz
are handled as discovered direct I/O.
A discovered direct I/O is unbuffered like direct I/O,
but it does not require a synchronous commit of the
inode when the file is extended or blocks are allocated.
For larger I/O requests, the CPU time for copying the
data into the
buffer cache
and the cost of using memory
to buffer the I/O becomes more expensive than the cost
of doing the disk I/O. For these I/O requests, using
discovered direct I/O is more efficient than regular I/O.
The default value of this parameter is 256K. - initial_extent_size
Changes the default size of the initial extent. VxFS determines, based on the first write to a new file, the size of
the first extent to allocate to the file. Typically the first extent
is the smallest power of 2 that is larger than the size of the first
write. If that power of 2 is less than 8K, the first extent allocated
is 8K. After the initial extent, the file system increases the size of
subsequent extents (see
max_seqio_extent_size)
with each allocation. Because most applications write to files using a buffer size of 8K or
less, the increasing extents start doubling from a small initial
extent.
initial_extent_size
changes the default initial extent
size to a larger value, so the doubling policy starts from a much larger
initial size, and the file system won't allocate a set of small extents
at the start of file. Use this parameter only on file systems that have a very
large average file size. On such file systems, there are fewer
extents per file and less fragmentation. initial_extent_size
is measured in file system blocks. - max_buf_data_size
Determines the maximum buffer size allocated for file data.
The two accepted values are 8K bytes and 64K bytes.
The larger value can be beneficial for workloads
where large reads/writes are performed sequentially.
The smaller value is preferable
on workloads where the I/O is random
or is done in small chunks.
The default value is 8K bytes. - max_direct_iosz
Maximum size of a direct I/O
request issued by the file system. If there is a
larger I/O request, it is broken up into
max_direct_iosz
chunks. This parameter defines how much
memory an I/O request can lock at once; do not
set it to more than 20% of memory. - max_diskq
Limits the maximum disk queue generated by a single file.
When the file system is flushing data for a file and the number of pages
being flushed exceeds
max_diskq,
processes block until the amount
of data being flushed decreases. Although this does not limit the
actual disk queue, it prevents synchronizing processes from making the
system unresponsive. The default value is 1 megabyte. - max_seqio_extent_size
Increases or decreases the maximum size of an extent.
When the file system is following its default allocation policy for
sequential writes to a file, it allocates an initial extent that is
large enough for the first write to the file. When additional extents
are allocated, they are progressively larger (the algorithm tries to
double the size of the file with each new extent), so each extent can
hold several writes worth of data. This reduces the total
number of extents in anticipation of continued sequential writes. When
there are no more writes to the file, unused space is freed for other files
to use. In general, this allocation stops increasing the size of extents at 2048
blocks, which prevents one file from holding too much unused space. max_seqio_extent_size
is measured in file system blocks. - read_nstream
The number of parallel read
requests of size
read_pref_io
to have outstanding at
one time. The file system uses the product of
read_nstream
and
read_pref_io
to determine
its read ahead size. The default value for
read_nstream
is 1. - read_pref_io
The preferred read request size. The
file system uses this in conjunction with the
read_nstream
value to determine how much data to read ahead. The
default value is 64K. - write_nstream
The number of parallel write
requests of size
write_pref_io
to have outstanding at
one time. The file system uses the product of
write_nstream
and
write_pref_io
to determine
when to do flush behind on writes. The default value
for
write_nstream
is 1. - write_pref_io
The preferred write request size. The
file system uses this in conjunction with the
write_nstream
value to determine how to do flush behind
on writes. The default value is 64K.
FILES- /etc/vx/tunefstab
VxFS file system tuning parameters table.
|