Hi team!
Here’s a valuable case for you.
[Question]
There are 34 paths on a virtual disk. The min_task algorithm is used to select paths. Load balancing between controllers is enabled. Why do performance statistics show that read I/Os are distributed on 32 paths only?

[Possible Cause]
When the queue depth of a virtual disk is smaller than the number of paths, after UltraPath selects paths for I/Os in the queue, paths in front of the path chain have completed forwarding I/Os. At this time, UltraPath selects the paths in front of the path chain again to forward I/Os. Therefore, some paths at the bottom of the path chain have not forwarded any I/O.
In this case, after UltraPath selects a path for 32 times, I/Os on the paths in front of the path chain have been forwarded. UltraPath selects the paths from the beginning of the path chain and so the remaining two paths have not forward any I/O.
[Solution]
When I/Os are performed on multiple virtual disks, loads can be balanced between paths.
For I/O operations on a single virtual disk, you can run the following command to set the queue depth to a value larger than the number of paths of the virtual disk first:
chdev -l hdiskX -a queue_depth=VALUE
Ensure that the disk is not in use before running this command.
Table1 Parameter description | |
Parameter | Description |
hdiskX | Name of the virtual disk that you want to operate. Obtain the name from the system administrator. |
VALUE | Queue depth that you want to set. Set the value based on the number of paths of the virtual disk. |
After running the chdev -l hdisk2 -a queue_depth=64 command, the following result is displayed:
-bash-3.00# chdev -l hdisk2 -a queue_depth=64
hdisk2 changed
After the result is displayed, run the lsattr -El hdisk2 command to confirm the configuration. The command output is as follows:
-bash-3.00# lsattr -El hdisk2
clr_q no Device CLEARS its Queue on error True
location Location Label True
lun_id 0x2000000000000 Logical Unit Number ID False
max_transfer 0x40000 Maximum TRANSFER Size True
node_name 0x21000022a1073fdd FC Node Name False
pvid 00007e1d245280d00000000000000000 Physical volume identifier False
q_err yes Use QERR bit True
q_type simple Queuing TYPE True
queue_depth 64 Queue DEPTH True
reassign_to 120 REASSIGN time out value True
rw_timeout 30 READ/WRITE time out value True
scsi_id 0x10600 SCSI ID False
start_timeout 60 START unit time out value True
ww_name 0x20180022a1073fdd FC World Wide Name False
-bash-3.00#
The preceding command output shows that the queue depth has been changed to 64.