Default settings and best practices for VAAI XCOPY transfer size on ESXi
search cancel

Default settings and best practices for VAAI XCOPY transfer size on ESXi

book

Article ID: 426084

calendar_today

Updated On:

Products

VMware vSphere ESX 7.x

Issue/Introduction

This article addresses the default configuration of the VAAI (vStorage APIs for Array Integration) XCOPY primitive, specifically the MaxHWTransferSize parameter.

It clarifies the potential performance impact of using the default value on certain storage arrays (e.g., Dell PowerStore, PowerMax, or Unity) and provides instructions on how to adjust this setting based on vendor recommendations.

Environment

ESXi7.x and above

Cause

In a vSphere environment utilizing hardware-accelerated storage (VAAI), you may experience the following symptoms during write-heavy operations such as Storage vMotion, Cloning, or Snapshot consolidation:
 
• High CPU utilization on the Storage Array controllers.
 
• Storage management alerts indicating an "excessive amount of Write Pending (WP)" cache.
 
• Slower than expected offload performance during XCOPY operations.
 
XCOPY is a VAAI primitive that offloads data copying tasks from the ESXi host to the storage array. This allows the array to copy data internally without routing it through the host's network stack.
 
• The Default Behavior: By default, ESXi sets the /DataMover/MaxHWTransferSize to 4096 KB (4MB).
 
• The Issue: When the segment size is capped at 4MB, the ESXi host must split large data moves into a high volume of small SCSI commands.
 
• The Impact: On modern high-performance arrays (such as many Dell EMC models), processing this high volume of small commands creates significant overhead. This can saturate the storage processors and fill the Write Pending cache, impacting the overall performance of the array.

 

Resolution

  Note: VMware by Broadcom defines the default MaxHWTransferSize as 4MB to ensure compatibility across a wide range of storage devices. We do not define a specific "best practice" value for third-party storage arrays.

While it is common for vendors (such as Dell) to recommend increasing this value to 16MB (16384 KB), you must verify the recommended setting with your specific storage vendor before making changes.
 
 
1. Check the Current Transfer Size
 
To confirm if your host is using the default setting, open an SSH session to the ESXi host and run the following command:
 
Bash
 
esxcfg-advcfg -g /DataMover/MaxHWTransferSize
 
• Result: If the output is Value of MaxHWTransferSize is 4096, the host is using the default 4MB segment size.
 
 
 
2. Adjust the Transfer Size (If recommended by Vendor)
 
If your storage vendor (e.g., Dell Support) confirms that your array is optimized for a 16MB transfer size, use the following command to increase the value.
 
To set the value to 16MB (16384 KB):
 
Bash
 
esxcfg-advcfg -s 16384 /DataMover/MaxHWTransferSize
 
 
3. Verify the Change
 
Run the get command again to ensure the value has been updated:
 
Bash
 
esxcfg-advcfg -g /DataMover/MaxHWTransferSize
 
• Expected Output: Value of MaxHWTransferSize is 16384

 

Contact the array vendor to obtain recommended settings for their systems. 

Additional Information

Configure XCOPY Parameters