Tuning Volume Replicator

Volume Replicator provides the vxtune command that enables you to tune memory tunables to best suit your environment. This command is especially useful if you want to experiment with different values to arrive at an optimum value that suits your requirements.

Syntax for vxtune command

vxtune [-r] [ <tunable> [<value>] ]

The following table describes the parameters that you can specify with the vxtune command.

Table: Parameters for vxtune command

Parameter

Description

tunable

Specifies the tunable name whose value you want to display or change.

value

Specifies the value that you want to set for the tunable.

Note:

The iopath_logging tunable should be enabled only after consulting the Support team. If enabled without caution, it can adversely affect the performance of Volume Replicator.

The following table describes various Volume Replicator memory tunables.

Table: Volume Replicator tunables

Tunable

Value

NMCOM_POOL_SIZE

(vol_max_nmpool_sz)

Specifies the maximum memory that Volume Replicator uses on a Secondary, to hold the write requests coming from the Primary. The default value for this tunable is 16384 K, however you can specify a value from 4096K to 524288K. However, if you have assigned a lower value than the specified one, then you may need to restart the system for the changed values to get into effect.

READBACK_POOL_SIZE

(vol_max_rdback_sz)

Specifies the maximum memory that Volume Replicatoruses, when write requests are read back from the Replicator Log. The default value for this tunable is 8192 K. However, if you have assigned a lower value than the specified one, then you may need to restart the system for the changed values to get into effect

BASE_MEMORY

(vol_min_lowmem_sz)

Specifies the minimum threshold of available Volume Replicator memory that is needed to keep the write requests in memory on the Primary RVG before sending it to Secondary. The default value for this tunable is 1024K, however you can specify a value from 512K to 10240K. However, if you have assigned a lower value than the specified one, then you may need to restart the system for the changed values to get into effect.

MAX_MEMORY

(vol_rvio_maxpool_sz)

Specifies the maximum memory that is requested from the system by Volume Replicator for its use. The default value for this tunable is 32768K, however you can specify a value from 4096K to 1048576K. However, if you have assigned a lower value than the specified one, then you may need to restart the system for the changed values to get into effect.

MAX_TCP_COUNT

(max_tcp_conn_count)

Specifies the maximum number of TCP connections per RLINK. The default value for maximum TCP connections per RLINK is 64. This value is used as upper bound while calculating the number of connections required per RLINK. When the value is changed, the following message is displayed:

Command executed successfully. Note: The changed
value will get reflected only in the next connect
cycle with the Secondary. To force reconnect, 
please pause and resume replication.

NMCOM_MAX_MESSAGES

(nmcom_max_msgs)

Specifies the number of outstanding messages waiting to be processed on the Secondary array. It takes the value from 128 K to 2048 K. The default value is 512 K. It is recommended that the values for this tunable should be changed only after consulting the support team.

MAX_RECEIVE_GAP

(max_rcvgap)

Specifies the tolerable gap between the expected message ID and the actual out of order received message ID on the Secondary. It takes the value from 5 to 25, however, the default value is 5. Values for this tunable should be altered only after consulting the support team.

RLINK_READBACK_LIMIT

(rlink_rdbklimit)

Specifies the upper limit that is allocated for per RLINK readback memory. You can specify a value from 4096K to 65536K. The default value, however, is 16384K. Values for this tunable should be changed with the assistance of support team

COMPRESSION_SPEED

(compression_speed)

Specifies the current speed limit of the compression that Volume Replicator performs. The default value for this tunable is 7. You can specify a value ranging from 1 to 9.

Examples:

  • To display value for this tunable, run the following command: vxtune compression_speed

  • To set the value to 5: vxtune compression_speed 5

The compression speed is inversely proportionate to the compression that Volume Replicator performs. If compression_speed value is smaller, then the amount of data that gets compressed is larger. If the value is bigger, then the amount of compressed data is smaller.

COMPRESSION_THREAD

(compression_threads)

Specifies the number of threads that are dedicated for compression and decompression of data. It can take values in the range 1 to 63. The default value is 10. Its value can be displayed or set through the vxtune command.

Examples:

  • To display value for this tunable, run the following command: vxtune compression_threads

  • To set the value to 5: vxtune compression_threads 5

The maximum value to which compression_threads value can be set depends on the number of CPUs the system has. If CPU usage is very high during compression, then you can change the compression_threads value to lower the CPU usage. However, setting the tunable value to a very low value can considerably increase the data compression time.

COMPRESSION_WINDOW

(compression_window)

Specifies the data window size in kilobytes (KB) for compression. The default value for this tunable is 0, which means a window of unlimited size. If compression_window tunable is set to a default value of 0, then almost all of the data that is sent to the DR site is sent in a compressed state when the RLINK is set with COMPRESSION_ENABLED flag. Data compression can sometimes cause high amount of CPU or memory consumption. The compression_window tunable can be set to reduce the resource usage. If compression_window size is set to a smaller value, then the amount of data that gets compressed on the primary is less and the remaining data is sent in an uncompressed form to the secondary. However, if this tunable is set with a high value, then large amount of data is sent to the secondary in a compressed form.

Examples:

  • To display the value of this tunable through vxtune command:

    vxtune compression_window

  • To set the value of compression_window to 256 KB:

    vxtune compression_window 256

COMPRESSION_THRESHOLD (compression_threshold)

Specifies the CPU usage threshold after which Volume Replicator starts reducing the compression_thread to reduce the CPU utilization and, if required, disable Volume Replicator compression. This value is node-specific and is applicable on both Primary and Secondary.

You can specify a value from 0 to 100. The default value is 0. You can disable Adaptive Compression by specifying this value as 0.

When the RLINK is set with COMPRESSION_ENABLED flag, data compression can sometimes cause high amount of CPU consumption. The compression_threshold tunable can be set to reduce the CPU usage. If compression_threshold size is set to a value other than zero (for example, 30) and the CPU consumption goes beyond the mentioned threshold, then Volume Replicator starts decreasing the rate of compression on the Primary or decompression on the Secondary depending on the node on which the value is set.

Examples:

  • To display the value of this tunable through the vxtune command:

    vxtune compression_threshold

  • To set the value of compression_threshold to 50:

    vxtune compression_threshold 50

FORCE_MAX_CONNECTION

(force_max_conn)

Specifies whether to force Volume Replicator to use the maximum number of TCP connections. It takes the value of either True or False. If this tunable is set to True, then the automatic way of estimating the number of connections that are required for RLINK based on latency of network can be overridden and the value specified for max_tcp_conn_count can be used instead

NETWORK_LOSS_TOLERANC

(rp_incr_decr)

Specifies the degree of network loss-tolerance during replication. Increasing the value of rp_incr_decr increases the degree of network error tolerance. The default value of rp_incr_decr is 8, which works fine for good networks. However, it takes value between 1 to 100. This tunable should be changed only after consulting the support team.

TCP_SOURCE_RESTRICT

(tcp_src_port_restrict)

Specifies whether to restrict the TCP source port usage of Volume Replicator data connections. This tunable takes the value of either True or False. The value is shown as True when data port range is used for source ports. These range of ports should be opened as source ports in firewall. To get multi-connection working across a firewall or NAT environment, you are required to open port 4145 for both UDP and TCP.

IOPATH_LOGGING

(iopath_logging)

Specifies whether to enable IO path logging and takes the value of either True or False. By setting iopath_ logging to True, extra log messages get logged to the log files which help in debugging certain issues in I/O. However, the extra log messages can affect the I/O performance adversely.

NAT_SUPPORT

(nat_support)

This tunable specifies the presence of Network Address Translation (NAT) in the network. Use the vxtune command to see whether NAT is enabled or not. It takes the value of either True or False. When NAT support is enabled, the value is shown as True and when disabled it is shown as False.

See Tuning the Volume Replicator memory parameters.

HB_TIMEOUT

(hb_timeout)

Specifies the number of heartbeat messages that can be missed before the RLINK gets disconnected. The default value is 15 and it can take values from 1 to 60. It should only be tuned for lossy networks where the Volume Replicator frequently disconnects the RLINKs because it doesn't receive heartbeat messages.

TCP_ROUND_ROBIN

(tcp_round_robin)

Specifies whether Volume Replicator should use round-robin method of sending data over multiple TCP connections. The value can be either True or False.

DHCP_IP_Support

(dhcp_ip_support)

Determines whether or not DHCP IPs can be used while configuring Volume Replicator.

The value can either be True or False.

This tunable must be enabled if you plan to set up replication in an Azure environment. DHCP IP addressess are assigned to the virtual machines that are created in an Azure environment. To identify the DHCP IP addresses, DHCP_IP tunable must be set to True.

More Information

About Volume Replicator memory monitoring and control support

Displaying the tunable values