Path control module attributes

In addition to the AIX® default path control modules (PCMs), a device-specific PCM might be supplied by a device vendor. The set of user changeable attributes is defined by the device vendor. A device-specific PCM can have device and path attributes.

The following are the device attributes for the AIX default PCMs:
algorithm
Determines the methodology by which the I/O is distributed across the paths for a device. The algorithm attribute has the following values:
Note: Some devices support only a subset of these values.
fail_over
Sends all I/O operations to a single path. If the path is marked as failed or disabled, the next available path is selected for sending all I/O operations. This algorithm maintains all the enabled paths in an ordered list based on the ascending values of the path priority attribute. The valid path that has the lowest path priority value is selected for each I/O operation.
round_robin
Distributes the I/O operations across multiple enabled paths. For devices that have active and passive paths, or preferred and non-preferred paths, only a subset of the paths are used for I/O operations. If a path is marked as failed or disabled, it is no longer used for sending I/O operations. The I/O operation is distributed based on the path priority attribute. Paths that have a higher path priority value receive a greater share of the I/O operations.
shortest_queue
Distributes the I/O operations across multiple enabled paths. For devices that have active and passive paths, or preferred and non-preferred paths, only a subset of the paths are used for I/O operations. This algorithm is similar to the round_robin algorithm. However, the shortest_queue algorithm distributes I/O operations based on the number of pending I/O operations on each path. The path that currently has the fewest pending I/O operations is selected for the next operation. The path priority attribute is ignored when the algorithm is set to shortest_queue.
hcheck_mode
Determines which paths must be checked when the health check capability is used. The attribute supports the following modes:
enabled
Sends the healthcheck command through paths that have a state of enabled. The mode does not send the healthcheck command through paths that have a state of disabled or missing.
failed
Sends the healthcheck command through paths that have a state of failed. The mode does not send the healthcheck command through paths that have a state of enabled, disabled, or missing.
nonactive
(Default) Sends the healthcheck command through paths that have no active I/O to the device, including paths that have a state of failed or enabled. The mode does not send the healthcheck command through paths that have a state of disabled or missing.
hcheck_interval
Defines how often the health check is performed on the paths for a device. The attribute supports a range 0 - 3600 seconds. When a value of 0 is selected, health checking is disabled.
Note: Health check is performed only if the disk is opened by some process and not yet closed. If no entity has the disk opened, the Path Control module does not check the paths even if the hcheck_interval attribute of that device is set to a nonzero value.
dist_tw_width
Defines the duration of a "time window". This is the time frame during which the distributed error detection algorithm cumulates I/Os returning with an error. The dist_tw_width attribute unit of measure is milliseconds. Lowering this attributes value decreases the time duration of each sample taken and decreases the algorithms sensitivity to small bursts of I/O errors. Increasing this attribute value increases the algorithms sensitivity to small bursts of errors and the probability of failing a path.
dist_err_percent
Defines the percentage of "time windows" having an error allowed on a path before the path is failed due to poor performance. The dist_err_percent has a range 0 - 100. The distributed error detection algorithm is disabled when the attribute is set to zero (0). The default setting is zero. The distributed error detection algorithm samples the fabric that connects the device to the adapter for errors. The algorithm calculates a percentage of samples with errors and will fail a path if the calculated value is larger than the dist_err_percent attribute value.

The following is the path attribute for the AIX PCM:

path priority
Modifies the behavior of the algorithm methodology on the list of paths.

When the algorithm attribute value is fail_over, the paths are kept in a list. The sequence in this list determines which path is selected first and, if a path fails, which path is selected next. The sequence is determined by the value of the path priority attribute. A priority of 1 is the highest priority. Multiple paths can have the same priority value, but if all paths have the same value, selection is based on when each path was configured.

When the algorithm attribute value is round_robin, the path priority algorithm assigns a priority value to each path. The paths are selected for I/O operations in proportion to the path priorities. Therefore, paths with higher priority values are selected for more I/O operations. If all path priorities are the same, paths are selected equally.

cntl_hcheck_int

The controller health check sequence is started after a storage fabric transport failure is detected. The cntl_delay_time attribute determines the maximum duration in seconds, when the controller health check sequence is active. If a controller health check command completes successfully, detecting an available path, then the controller health check sequence exits that permits the I/O to resume. At the end of the controller health check sequence, if no paths are detected as good, then all pending and subsequent I/O to the device fails, until the device health checker detects a failed path is returned.

While the controller health check sequence is active, the cntl_hcheck_interval attribute is the amount of time in seconds, when the next set controller health check commands are issued. The cntl_hcheck_interval attribute must be less than the cntl_delay_time, unless set to 0 or disabled. If either cntl_delay_time or cntl_hcheck_interval are set to 0, the feature is disabled.

cntl_delay_time

The controller health check sequence is started after a storage fabric transport failure is detected. The cntl_delay_time attribute determines the maximum duration in seconds, which the controller health check sequence is active. If a controller health check command completes successfully, detecting an available path, then the controller health check sequence exits permitting I/O to resume. At the end of the controller health check sequence, if no paths are detected as good, then all pending and subsequent I/O to the device fails, until the device health checker detects a failed path is returned.

While the controller health check sequence is active, the cntl_hcheck_interval attribute is the amount of time in seconds, which the next set controller health check commands are issued. The cntl_hcheck_interval attribute must be less than the cntl_delay_time, unless set to 0, or disabled. If either cntl_delay_time or cntl_hcheck_interval are set to 0, the feature is disabled.

timeout_policy
Adjusts the behavior of the PCM for the command timeouts and transport errors. When the timeout_policy is set to either fail_path or disable_path, the performance degradation might improve when an Multiple Path I/O (MPIO) device encounters intermittent storage area network (SAN) fabric issues on some paths to the device. The timeout_policy attribute has the following values:
retry_path
The first occurrence of a command timeout on the path does not cause immediate path failure. If a path that failed due to transport problems is recovered by a health check, the recovered path can be used immediately.
fail_path
The path fails on the first occurrence of a command timeout, assuming it is not the last path in the path group. If a path that failed due to transport problems recovers, the path is not used for read or write I/O operations until a period expires with no failures on that path. When this feature is enabled, a delay might occur before the read or write I/O is routed to paths that are recovered from a transport error.
fail_ctlr
This setting causes MPIO to switch from the preferred controller to the non-preferred controller more quickly. If you do not enable this setting, all of the paths to the preferred controller will fail before MPIO switches from the preferred controller to the non-preferred controller. When you enable this setting, MPIO switches when there are errors on two paths to the preferred controller. This setting is similar to the fail_path setting.
disable_path
The path fails on the first occurrence of a command timeout, assuming it is not the last path in the path group. If a path that failed due to transport problem recovers, the path is not used for read or write I/O until a period expires with no failures on that path. If this path continues to experience multiple command timeouts during a period, it might be disabled. Disabled paths remain disabled (and not usable) until you do one of the following actions: run the chpath command to enable the disabled path, reconfigure the affected disk, or reboot the system.