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

Managing initiator requests

Why you need to manage initiator requests  Top

Each physical port on the target HBA in the filer 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 implements initiator request management  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% of all the resources. The remaining command blocks are 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%, 20% of the queue resources available at the filer's ports are reserved for the initiators in that igroup. The remaining 79% of the queue resources is 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%, the least critical at 10%, and the remaining two at 20%, leaving 19% 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 solaris-igroup1 throttle_reserve 20

Result

The igroup throttle is created for solaris-igroup1, and it will persist 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

Allowing or disallowing an igroup to borrow resources  Top

To allow or disallow an igroup to 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 solaris-igroup1 throttle_borrow y

Result

When you set the throttle_borrow setting to y, 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. 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 filer uses queue resources from the unreserved pool. In the borrows column, "N/A" indicates that the igroup throttle_borrow option is set to no.

Step

Action

1

Enter the following command:

igroup show -t

Result

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

Displaying igroup throttle usage  Top

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

Step

Action

1

Enter the following command:

igroup show -t -i number_of_seconds [-a]

-a displays all throttles, including ones that are not using any command blocks.

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

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

Display the QFULL column with LUN statistics, which indicates the number of initiator requests that exceeded the number allowed by the igroup throttle, and, as a result, received the QFULL message, by entering the following command:

lun stats -o -i time_in_seconds

Example

lun stats -o -i 1

2

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

lun stats -o

How a cluster failover affects igroup throttles  Top

Igroup throttles manage physical ports, so during a cluster failover, 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

Throttles apply to all ports, and are divided by two

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
solaris-igroup1         20%         0         N/A  (Reduced by takeover to 10%)
solaris-igroup2         10%         0           0  (Reduced by takeover to  5%)

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