Apparatus and method for dynamic command queue depth adjustment for storage area network nodes
First Claim
1. An initiator node for a storage area network, the node intended to be coupled over the storage area network to at least one storage node having command queue capability, the initiator node comprising:
- at least one processor capable of executing instructions;
a memory system having stored a current queue depth, and a maximum queue depth associated with each storage node of the at least one storage node;
wherein the memory system stores instructions for initializing the maximum queue depth for the at least one storage node to a value dependent on a type of the at least one storage node, instructions for limiting the number of commands queued to a storage node of the at least one storage node to the current queue depth associated with the storage node, and instructions for dynamically adjusting the current queue depth associated with the storage node based upon queue refusals generated by the storage node and the maximum queue depth associated with the storage node.
4 Assignments
0 Petitions
Accused Products
Abstract
An initiator node for a storage area network used with storage nodes having command queue capability maintains a current queue depth, and a maximum queue depth associated with each storage node. It initializing the maximum queue dependent on the type of the storage nodes it sees, and limits the number of commands queued to each storage node to the current queue depth associated with the storage node. It dynamically adjusts the current queue depth for each storage node based upon queue refusals generated by the storage nodes and the maximum queue depth associated with the storage nodes.
57 Citations
19 Claims
-
1. An initiator node for a storage area network, the node intended to be coupled over the storage area network to at least one storage node having command queue capability, the initiator node comprising:
-
at least one processor capable of executing instructions;
a memory system having stored a current queue depth, and a maximum queue depth associated with each storage node of the at least one storage node;
wherein the memory system stores instructions for initializing the maximum queue depth for the at least one storage node to a value dependent on a type of the at least one storage node, instructions for limiting the number of commands queued to a storage node of the at least one storage node to the current queue depth associated with the storage node, and instructions for dynamically adjusting the current queue depth associated with the storage node based upon queue refusals generated by the storage node and the maximum queue depth associated with the storage node. - View Dependent Claims (2, 3)
-
-
4. In a storage area network node, a method of controlling a maximum number of commands queued to a storage node comprising the steps of:
-
maintaining a maximum queue depth associated with the storage node and initializing the maximum queue depth according to a type of the storage node;
maintaining a count of outstanding commands that have been submitted to the storage node;
maintaining a current queue depth associated with the storage node and initializing the current queue depth to a value not less than a minimum queue depth nor greater than the maximum queue depth;
holding commands for later submission to the storage node if the count of commands that have been submitted is greater or equal to the current queue depth;
adjusting the current queue depth associated with the storage node downwardly when the current queue depth is greater than the minimum queue depth and the storage node refuses to queue a command issued by the initiator node; and
adjusting the current queue depth upwardly when the current queue depth is less than the maximum queue depth associated with the storage node and the storage node has not refused to queue any commands issued by the initiator node for a first predetermined period of time. - View Dependent Claims (5, 6, 7, 8, 9)
-
-
10. An apparatus having computer readable instructions, the apparatus comprising:
-
first maintenance means for maintaining a maximum queue depth associated with a storage node, the maximum queue depth initialized according to a type of the storage node;
second maintenance means for maintaining a current queue depth associated with the storage node, the current queue depth initialized to a value not less than a minimum queue depth nor greater than the maximum queue depth;
first adjustment means for adjusting the current queue depth associated with the storage node downwardly when the current queue depth is greater than the minimum queue depth and the storage node refuses to queue an issued command; and
second adjustment means for adjusting the current queue depth associated with the storage node upwardly when the current queue depth is less than the maximum queue depth associated with the storage node and the storage node has not refused to queue any issued commands for a first predetermined period of time. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
Specification