vxtune (1M)

NAME

vxtune - display and modify Veritas Volume Manager tunable parameters

SYNOPSIS

vxtune [-u {h|unit}] [-lr] [component_name|tunable_name]

vxtune tunable_name value

vxtune -o export file=file_name [component]

vxtune -o import file=file_name

vxtune -h|-H|help [components|tunables|tunable_name]

DESCRIPTION

The vxtune utility manages the tunable parameters that are used by Veritas Volume Manager (VxVM) and its components such as Veritas Volume Replicator (VVR) and Cluster Volume Manager (CVM).

VxVM classifies the tunables according to the component that uses the tunable. The component can be one of the following:

basevm core VxVM functionality.
cvm Cluster Volume Manager (CVM).
fmr FlashSnap (formerly known as Fast Mirror Resync).       
vvr Veritas Volume Replicator (VVR).

See the section "Supported tunable parameters" for a complete list of parameters for each component.

When you use vxtune to change the value of a tunable parameter, the values are persistent. Some tunable parameters require a reboot of the system before the new values take effect. After the reboot, the values persist across subsequent reboots. If a reboot is not required, the tunable values are available immediately. The new values may not apply to commands that are already in progress.

The first form of the vxtune command displays the tunable parameters and their values. Specify a supported tunable parameter or component name to display a subset of the tunable parameters. If no argument is given, the command displays all of the tunable parameters. The output shows the tunable name, the current value, the default value, and whether the tunable requires a reboot before a new value takes effect. When you specify the -l option, the output displays an additional column that includes a description of the tunable parameter along with the default unit. Use the -r option to display the values in bytes or the -u option to specify the display units.

The second form of the vxtune command sets the value for a tunable parameter. The specified value can take the following prefixes as base specifiers:

0 Value is in octal.
0x Value is in hexadecimal.

The default is decimal.

The specified value can take the following suffixes as unit multipliers:

g or G Specifies gigabytes.
k or K Specifies kilobytes.
m or M Specifies megabytes.

The default unit depends on the tunable parameter. Refer to the command output for details.

The third form of the command exports the tunable parameters to the specified file. Optionally, specify a component to export the subset of tunable parameters related to that component. By default, the command exports all of the tunable parameters.

The fourth form of the command imports the tunable parameters from the specified file. The file must have the format that the export operation created.

The fifth form of the command provides help on the command.

KEYWORDS

-o import
  Imports the tunable paramaters from the specified file. The file must have the format that the export operation created.
-o export
  Exports the tunable parameters to the specified file. Optionally, specify a component to export the subset of tunable parameters related to that component. By default, the command exports all of the tunable parameters.

OPTIONS

The following options are available:
-l Specifies long output, which includes a description of the tunable along with the default unit.
-u Specifies that the values display with human-friendly units.
-r Specifies that the values display in bytes (raw). This option is supported for backwards compatibility.

Supported Tunable Parameters

The values of the following tunables may be displayed or set with the vxtune command.

The following tunable parameters apply for core Veritas Volume Manager (VxVM):

vol_checkpt_default
  The interval at which utilities performing recoveries or resynchronization operations load the current offset into the kernel as a checkpoint. A system failure during such operations does not require a full recovery, but can continue from the last reached checkpoint. The default value is 20480 sectors (10MB). Increasing this size reduces the overhead of checkpoints on recovery operations at the expense of additional recovery following a system failure during a recovery.
vol_default_iodelay
  The count in clock ticks for which utilities pause if they have been directed to reduce the frequency of issuing I/O requests, but have not been given a specific delay time. This tunable is used by utilities performing operations such as resynchronizing mirrors or rebuilding RAID-5 columns.
The default value is 50 ticks.
Increasing this value results in slower recovery operations and consequently lower system impact while recoveries are being performed.
vol_max_adminio_poolsz
  The maximum size of the memory pool that is used for administrative I/O operations. VxVM uses this pool when throttling administrative I/O. The default value is 64MB. The maximum size must not be greater than the value of the voliomem_maxpool_sz parameter.
vol_maxio
  The maximum size of logical I/O operations that can be performed without breaking up the request. I/O requests to VxVM that are larger than this value are broken up and performed synchronously. Physical I/O requests are broken up based on the capabilities of the disk device and are unaffected by changes to this maximum logical request limit. The default value is 2048 sectors (1MB). The value of voliomem_maxpool_sz must be at least 10 times greater than the value of vol_maxio.
If DRL sequential logging is configured, the value of voldrl_min_regionsz must be set to at least half the value of vol_maxio. Specify the value in sectors.
vol_maxioctl
  The maximum size of data that can be passed into VxVM via an ioctl call. Increasing this limit allows larger operations to be performed. Decreasing the limit is not generally recommended, because some utilities depend upon performing operations of a certain size and can fail unexpectedly if they issue oversized ioctl requests.
The default value is 32768 bytes (32KB).
vol_maxparallelio
  The number of I/O operations that the vxconfigd daemon is permitted to request from the kernel in a single VOL_VOLDIO_READ per VOL_VOLDIO_WRITE ioctl call. The default value is 256. This value should not be changed.
vol_maxspecialio
  The maximum size of an I/O request that can be issued by an ioctl call. Although the ioctl request itself can be small, it can request a large I/O request be performed. This tunable limits the size of these I/O requests. If necessary, a request that exceeds this value can be failed, or the request can be broken up and performed synchronously. The default value is 4096 sectors (2MB).
Raising this limit can cause difficulties if the size of an I/O request causes the process to take more memory or kernel virtual mapping space than exists and thus deadlock. The maximum limit for this tunable is 20% of the smaller of physical memory or kernel virtual memory. It is inadvisable to go over this limit, because deadlock is likely to occur.
If stripes are larger than the value of this tunable, full stripe I/O requests are broken up, which prevents full-stripe read/writes. This throttles the volume I/O throughput for sequential I/O or larger I/O requests.
This tunable limits the size of an I/O request at a higher level in VxVM than the level of an individual disk. For example, for an 8 by 64KB stripe, a value of 256KB only allows I/O requests that use half the disks in the stripe; thus, it cuts potential throughput in half. If you have more columns or you have used a larger interleave factor, then your relative performance is worse.
This tunable must be set, as a minimum, to the size of your largest stripe (RAID-0 or RAID-5).
vol_stats_enable
  Enables or disables the I/O stat collection for Veritas Volume manager objects. The default value is 1, since this functionality is enabled by default.
vol_subdisk_num
  The maximum number of subdisks that can be attached to a single plex. The default value of this tunable is 4096.
voliomem_chunk_size
  The granularity of memory chunks used by VxVM when allocating or releasing system memory. A larger granularity reduces CPU overhead due to memory allocation by allowing VxVM to retain hold of a larger amount of memory.
The value of this tunable parameter depends on the page size of the system. You cannot specify a value larger than the default value. If you change the value, VxVM aligns the values to the page size when the system reboots. The default value is 524288 (512KB) for 8K page size.
voliomem_maxpool_sz
  The maximum memory requested from the system by VxVM for internal purposes. This tunable has a direct impact on the performance of VxVM as it prevents one I/O operation from using all the memory in the system. VxVM allocates two pools that can grow up to this size, one for RAID-5 and one for mirrored volumes. Additional pools are allocated if instant (Copy On Write) snapshots are present.
A write request to a RAID-5 volume that is greater than one fourth of the pool size is broken up and performed in chunks of one tenth of the pool size. A write request to a mirrored volume that is greater than the pool size is broken up and performed in chunks of the pool size. The minimum allowable value for this tunable is 5% of memory. If you specify a value less than that, the value is adjusted to 5% of value. The default value is 134217728 (128MB)
The value of voliomem_maxpool_sz must be greater than the value of volraid_minpool_size. The value of voliomem_maxpool_sz must be at least 10 times greater than the value of vol_maxio.
voliot_errbuf_dflt
  The default size of the buffer maintained for error tracing events. This buffer is allocated at driver load time and is not adjustable for size while VxVM is running.
The default value is 16384 bytes (16KB).
Increasing this buffer can provide storage for more error events at the expense of system memory. Decreasing the size of the buffer can result in an error not being detected via the tracing device. Applications that depend on error tracing to perform some responsive action are dependent on this buffer.
voliot_iobuf_default
  The default size for the creation of a tracing buffer in the absence of any other specification of desired kernel buffer size as part of the trace ioctl. The default value is 8192 bytes (8KB). If trace data is often being lost due to this buffer size being too small, then increase this value.
voliot_iobuf_limit
  The upper limit to the size of memory that can be used for storing tracing buffers in the kernel. Tracing buffers are used by the VxVM kernel to store the tracing event records. As trace buffers are requested to be stored in the kernel, the memory for them is drawn from this pool.
Increasing this size can allow additional tracing to be performed at the expense of system memory usage. Setting this value to a size greater than can readily be accommodated on the system is inadvisable. The default value is 4194304 bytes (4MB).
voliot_iobuf_max
  The maximum buffer size that can be used for a single trace buffer. Requests of a buffer larger than this size are silently truncated to this size. A request for a maximal buffer size from the tracing interface results (subject to limits of usage) in a buffer of this size. The default size for this buffer is 1048576 bytes (1MB). Increasing this buffer can provide for larger traces to be taken without loss for very heavily used volumes.
Do not increase this value above the value for the voliot_iobuf_limit tunable value.
voliot_max_open
  The maximum number of tracing channels that can be open simultaneously. Tracing channels are clone entry points into the tracing device driver. Each vxtrace process running on a system consumes a single trace channel.
The default number of channels is 32.
The allocation of each channel takes up approximately 20 bytes even when the channel is not in use.
volraid_rsrtransmax
  The maximum number of transient reconstruct operations that can be performed in parallel for RAID-5. A transient reconstruct operation is one that occurs on a non-degraded RAID-5 volume that has not been predicted. Limiting the number of these operations that can occur simultaneously removes the possibility of flooding the system with many reconstruct operations, and so reduces the risk of causing memory starvation.
The default value is 1.
Increasing this size improves the initial performance on the system when a failure first occurs and before a detach of a failing object is performed, but can lead to memory starvation.

The following tunable parameters apply for Cluster Volume Manager (CVM):

In this release, there are no specific tunable parameters for Cluster Volume Manager (CVM). Refer to the tunable parameters for core Veritas Volume Manager.

The following tunable parameters apply for FlashSnap (FMR):

vol_fmr_logsz
  The maximum size in kilobytes of the bitmap that Non-Persistent FastResync uses to track changed blocks in a volume. The number of blocks in a volume that are mapped to each bit in the bitmap depends on the size of the volume, and this value changes if the size of the volume is changed.
The default value is 4KB. The maximum and minimum permitted values are 1KB and 8KB.
Specify a value as a number between 1 and 8. Do not specify a unit. VxVM interprets the specified value as Kilobytes and converts the value accordingly (multiplies it by 1024).
For example, if the volume size is 1 gigabyte and the system block size is 512 bytes, a value for this tunable of 4 yields a map that contains 16,384 bits, each bit representing one region of 128 blocks.
The larger the bitmap size, the fewer the number of blocks that are mapped to each bit. This can reduce the amount of reading and writing required on resynchronization, at the expense of requiring more non-pageable kernel memory for the bitmap. Additionally, on clustered systems, a larger bitmap size increases the latency in I/O performance, and it also increases the load on the private network between the cluster members. This is because every other member of the cluster must be informed each time a bit in the map is marked. Since the region size must be the same on all nodes in a cluster for a shared volume, the value of this tunable on the master node overrides the tunable values on the slave nodes, if these values are different. Because the value of a shared volume can change, the value of this tunable is retained for the life of the volume.
In configurations which have thousands of mirrors with attached snapshot plexes, the total memory overhead can represent a significantly higher overhead in memory consumption than is usual for VxVM. The value of this tunable does not have any effect on Persistent FastResync.
voldrl_dirty_regions
  This parameter applies to enhanced DCO layout (version 30) only. Represents the number of dirty regions to cache before another write to the same region causes a DRL update. A smaller number results in more frequent updates to the DRL, which decreases performance. A larger number results in better I/O performance, but requires that the DRL uses more memory. The default value is 1024.
voldrl_max_drtregs
  The maximum number of dirty regions that can exist on the system for non-sequential DRL on volumes. A larger value may result in improved system performance at the expense of recovery time. This tunable can be used to regulate the worse-case recovery time for the system following a failure. The default value is 2048.
voldrl_max_seq_dirty
  The maximum number of dirty regions allowed for sequential DRL. This is useful for volumes that are usually written to sequentially, such as database logs. Limiting the number of dirty regions allows for faster recovery if a crash occurs. The default value is 3.
voldrl_min_regionsz
  The minimum number of sectors for a dirty region logging (DRL) volume region. With DRL, VxVM logically divides a volume into a set of consecutive regions. Larger region sizes tend to cause the cache hit-ratio for regions to improve. This improves the write performance, but it also prolongs the recovery time. The default value is 1024 sectors. If DRL sequential logging is configured, the value of voldrl_min_regionsz must be set to at least half the value of vol_maxio.
voldrl_volumemax_drtregs
  Maximum per-volume limit on dirty regions for a mirrored volume using traditional DRL. For heavily-used volumes, increase the value of this parameter to improve performance. The default value is 256.
voldrl_volumemax_drtregs_20
  Maximum per-volume limit on dirty regions for a mirrored volume using version 20 DCO. For heavily-used volumes, increase the value of this parameter to improve performance. The default value is 1024.
volpagemod_max_memsz
  The amount of memory, measured in kilobytes, that is allocated for caching FastResync and cache object metadata. The default value is 65536k (64MB). The valid range for this tunable is from 0 to 50% of physical memory. The memory allocated for this cache is exclusively dedicated to it. It is not available for other processes or applications.
Setting the value below 512KB fails if cache objects or volumes that have been prepared for instant snapshot operations are present on the system.
If you do not use the FastResync or DRL features that are implemented using a version 20 DCO volume, the value can be set to 0. However, if you subsequently decide to enable these features, you can use the vxtune command to change the value to a more appropriate one.
VxVM interprets the specified value as Kilobytes and converts the value accordingly (multiplies it by 1024). Specify a value appropriately to achieve the desired size.
The required size for this tunable paramater is determined by the region size and the number of volumes for which space-optimized instant snapshots are taken:

size_in_KB = 6 * (total_volume_size_in_GB) * (64/region_size_in_KB)


For example, a single 1TB volume requires around 6MB of paging memory if the region size is 64KB. If there were 10 such volumes, 60MB of paging memory would be required.

The following tunable parameters apply to the Veritas Volume Replicator (VVR) component:

vol_cmpres_enabled
  A per-system tunable parameter that enables or disables compression globally. The default value is 0, since compression is disabled by default.
vol_cmpres_threads
  A per-system tunable that lets you set the number of compression threads on the Primary host or the number of decompression threads on the Secondary host between 1 and 64. The default value is 10. You can tune this setting dependent on your CPU usage.
vol_max_nmpool_sz
  The amount of buffer space available for requests coming in to the Secondary over the network. The default value is 64MB.
vol_max_rdback_sz
  The amount of buffer space available for readbacks. The default value is 128MB.
vol_max_wrspool_sz
  The write ship buffer space, which is the amount of buffer space that can be allocated on the logowner to receive writes sent by the non-logowner. The default value is 64MB.
vol_min_lowmem_sz
  The minimum buffer space. VVR frees the write if the amount of buffer space available is below this threshold. The default value is about 520 kilobytes, twice the size of a maximum write. This value is auto-tunable. The value that you specify is used as an initial value and could change depending on the application write behavior.
vol_nm_hb_timeout
  The heartbeat timeout value. The default value is 10 seconds.
vol_rvio_maxpool_sz
  The amount of buffer space that can be allocated within the operating system to handle incoming writes. The default value is 128MB.

EXAMPLES

Display the tunable parameters that vxtune supports:

vxtune

Display the tunable parameters for the component VVR:


vxtune vvr

Display the value of vol_min_lowmem_sz on a host:


vxtune vol_min_lowmem_sz

Modify the value of vol_min_lowmem_sz to 2 megabytes on a host:


vxtune vol_min_lowmem_sz 2M

EXIT CODES

The vxtune utility exits with a non-zero status if the attempted operation fails.

A non-zero exit code is not a complete indicator of the problems encountered but denotes the first condition that prevented further execution of the utility.

The vxtune command only affects the tunable values on the host on which it is run. To change the tunable values on multiple hosts, run the command separately on each host. For example, for the log-owner node and any of its failover nodes in a cluster.

SEE ALSO

vrport(1M), vxmemstat(1M), vxsnap(1M)

Veritas Storage Foundation and High Availability Solutions Replication Administrator’s Guide
Veritas Storage Foundation and High Availability Solutions Tuning Guide


VxVM 4.0 vxtune (1M)