Library Table of Contents Index Previous Page (Alt-p) Next Page (Alt-n) Comments

Managing Fibre Channel initiator requests

Why you need to manage initiator requests  Top

Each physical port on the target HBA in the storage system has a fixed number of command blocks for incoming initiator requests. When initiators send large numbers of requests, they can monopolize the command blocks and prevent other initiators from accessing the command blocks at that port.

With an igroup throttle, you can perform the following tasks:

How Data ONTAP manages initiator requests  Top

When you use igroup throttles, Data ONTAP calculates the total amount of command blocks available and allocates the appropriate number to reserve for an igroup, based on the percentage you specify when you create a throttle for that igroup. Data ONTAP does not allow you to reserve more than 99 percent of all the resources. The remaining command blocks are always unreserved and are available for use by igroups without throttles.

How to manage initiator requests  Top

You use igroup throttles to specify what percentage of the queue resources they can reserve for their use. For example, if you set an igroup's throttle to be 20 percent, 20 percent of the queue resources available at the storage system's ports are reserved for the initiators in that igroup. The remaining 80 percent of the queue resources are unreserved. In another example, if you have four hosts and they are in separate igroups, you might set the igroup throttle of the most critical host at 30 percent, the least critical at 10 percent, and the remaining two at 20 percent, leaving 20 percent of the resources unreserved.

How to use igroup throttles  Top

When you create igroup throttles, you can use them to ensure that critical initiators are guaranteed access to the queue resources and that less-critical initiators are not flooding the queue resources. You can perform the following tasks:

Creating up an igroup throttle  Top

To create an igroup throttle, complete the following step.

Step

Action

1

Enter the following command:

igroup set igroup_name throttle_reserve percentage

Example

igroup set aix-igroup1 throttle_reserve 20

Result

The igroup throttle is created for aix-igroup1, and it persists through reboots.

Destroying an igroup throttle  Top

To destroy an igroup throttle, complete the following step.

Step

Action

1

Enter the following command:

igroup set igroup_name throttle_reserve 0

Defining whether an igroup can borrow resources  Top

To define whether an igroup can borrow queue resources from the unreserved pool, complete the following step with the appropriate option (yes or no). The default when you create an igroup throttle is no.

Step

Action

1

Enter the following command:

igroup set igroup_name throttle_borrow {yes | no}

Example

igroup set aix-igroup1 throttle_borrow yes

Result

When you set the throttle_borrow setting to yes, the percentage of queue resources used by the initiators in the igroup might be exceeded if resources are available.

Displaying throttle information  Top

To display information about the throttles assigned to igroups, complete the following step.

Step

Action

1

Enter the following command:

igroup show -t 

Sample output

        name        reserved      exceeds        borrows
   aix-igroup1          20%           0            N/A
   aix-igroup2          10%           0              0

Explanation of output

The exceeds column displays the number of times the initiator sends more requests than the throttle allows. The borrows column displays the number of times the throttle is exceeded and the storage system uses queue resources from the unreserved pool. In the borrows column, "N/A" indicates that the igroup throttle_borrow option is set to no.

Displaying igroup throttle usage  Top

To display real-time information about how many command blocks the initiator in the igroup is using and the number of command blocks reserved for the igroup on the specified port, complete the following step.

Step

Action

1

Enter the following command:

igroup show -t -i interval -c count [igroup|-a]

-t displays information on igroup throttles.

-i interval displays statistics for the throttles over an interval in seconds.

-c count determines how many intervals are shown.

igroup is the name of a specific group for which you want to show statistics.

-a displays statistics for all igroups, including idle igroups.

Example

igroup show -t -i 1

Result

The following is a sample display:

     name   reserved      4a      4b       5a       5b
igroup1           20%    45/98   0/98      0/98    0/98
iqroup2           10%     0/49   0/49     17/49    0/49
unreserved              87/344   0/344   112/344   0/344

The first number under the port name indicates the number of command blocks the initiator is using. The second number under the port name indicates the number of command blocks reserved for the igroup on that port.

In this example, the display indicates that igroup1 is using 45 of the 98 reserved command blocks on adapter 4a, and igroup2 is using 17 of the 49 reserved command blocks on adapter 5a.

Igroups without throttles are counted as unreserved.

Displaying LUN statistics on exceeding throttles  Top

To display statistics about I/O requests for LUNs that exceed the igroup throttle, complete the following steps.

Step

Action

1

Enter the following command:

lun stats -o -i time_in_seconds 

-i time_in_seconds is the interval over which performance statistics are reported. For example, -i 1 reports statistics each second.

-o displays additional statistics, including the number of QFULL messages.

Example

lun stats -o -i 1 /vol/vol1/lun2

Result

The output displays performance statistics, including the QFULL column. This column indicates the number of initiator requests that exceeded the number allowed by the igroup throttle, and, as a result, received the SCSI Queue Full response.

2

Display the total count of QFULLS sent for each LUN by entering the following command:

lun stats -o lun_path

How a cluster failover affects igroup throttles  Top

Throttles manage physical ports, so during a cluster takeover, their behavior varies according to the FCP cfmode that is in effect, as shown in the following table.

FCP cfmode

How igroup throttles behave when failover occurs

standby

Throttles apply to the A ports:

  • A ports have local throttles
  • B ports have partner throttles

partner

Throttles apply to the appropriate ports:

  • A ports have local throttles
  • B ports have partner throttles

mixed, dual_fabric, or single_image

Throttles apply to all ports and are divided by two when the cluster is in takeover.

Displaying igroup throttle usage after takeover  Top

To display information about how many command blocks the initiator in the igroup is using and the number of command blocks reserved for the igroup on the specified port after a takeover occurs, complete the following step.

Step

Action

1

Enter the following command:

igroup show -t

Example

igroup show -t

Result

The following is a sample display:

        name        reserved    exceeds    borrows
   aix-igroup1         20%         0         N/A  (Reduced by takeover to 10%)
   aix-igroup2         10%         0           0  (Reduced by takeover to  5%)

Library Table of Contents Index Previous Page (Alt-p) Next Page (Alt-n) Comments