Shaping I/O traffic by managing queue depth in fractional increments
First Claim
Patent Images
1. A method for managing input/output (I/O) traffic in an information handling system, the method comprising:
- receiving electronic I/O requests from a network-attached server;
determining a queue depth limit;
monitoring latency of processed electronic I/O requests; and
processing received electronic I/O requests, the processing comprising;
managing a virtual bucket comprising a number of virtual tokens, each token representative of authorization for an I/O request to be processed; and
permitting a received I/O request to be processed if the virtual bucket comprises a number of virtual tokens greater than zero, and decrementing the number of virtual tokens by at least one;
wherein the virtual tokens are added to the virtual bucket at any given time tx according to the equation;
Tokens(tx)=QueueDepthLimit*TimeElapsed(tx−
tx-1)/Latencywherein Tokens(tx) gives a value corresponding to a number of virtual tokens to be added to the virtual bucket at time tx;
QueueDepthLimit is the determined queue depth limit;
TimeElapsed(tx−
tx-1) is an amount of time elapsed between time tx and a time tx-1, where tx-1 is a point in time prior to time tx; and
Latency is a latency of processed electronic I/O requests that have completed during the time elapse between time tx and a time tx-1.
15 Assignments
0 Petitions
Accused Products
Abstract
A method for managing input/output (I/O) traffic in an information handling system. The method may include receiving electronic I/O requests from a network-attached server, determining a queue depth limit, monitoring latency of processed electronic I/O requests, and processing received electronic I/O requests. The number of electronic I/O requests permitted to be processed over a period of time may be based on a mathematical combination of the queue depth limit and a latency of processed electronic I/O requests. The determined queue depth limit may be a fractional value.
16 Citations
14 Claims
-
1. A method for managing input/output (I/O) traffic in an information handling system, the method comprising:
-
receiving electronic I/O requests from a network-attached server; determining a queue depth limit; monitoring latency of processed electronic I/O requests; and processing received electronic I/O requests, the processing comprising; managing a virtual bucket comprising a number of virtual tokens, each token representative of authorization for an I/O request to be processed; and permitting a received I/O request to be processed if the virtual bucket comprises a number of virtual tokens greater than zero, and decrementing the number of virtual tokens by at least one; wherein the virtual tokens are added to the virtual bucket at any given time tx according to the equation;
Tokens(tx)=QueueDepthLimit*TimeElapsed(tx−
tx-1)/Latencywherein Tokens(tx) gives a value corresponding to a number of virtual tokens to be added to the virtual bucket at time tx;
QueueDepthLimit is the determined queue depth limit;
TimeElapsed(tx−
tx-1) is an amount of time elapsed between time tx and a time tx-1, where tx-1 is a point in time prior to time tx; and
Latency is a latency of processed electronic I/O requests that have completed during the time elapse between time tx and a time tx-1. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for managing input/output (I/O) traffic in an information handling system, the method comprising:
-
receiving electronic I/O requests from a plurality of network-attached servers; determining a queue depth limit for each of the plurality of network-attached servers; monitoring latency of processed electronic I/O requests; and for each of the network-attached servers, processing received electronic I/O requests by; managing a virtual bucket comprising a number of virtual tokens, each token representative of authorization for an I/O request from at least that network-attached server to be processed; and permitting a received I/O request from that network-attached server to be processed if the virtual bucket comprises a number of virtual tokens greater than zero, and decrementing the number of virtual tokens by at least one; wherein the virtual tokens are added to the virtual bucket at any given time tx according to the equation;
Tokens(tx)=QueueDepthLimit*TimeElapsed(tx−
tx-1)/Latencywherein Tokens(tx) gives a value corresponding to a number of virtual tokens to be added to the virtual bucket at time tx;
QueueDepthLimit is the determined queue depth limit for that network-attached server;
TimeElapsed(tx−
tx-1) is an amount of time elapsed between time tx and a time tx-1, where tx-1 is a point in time prior to time tx; and
Latency is a latency of processed electronic I/O requests that have completed during the time elapsed between time tx and a time tx-1. - View Dependent Claims (9, 10, 11, 12)
-
-
13. An information handling system comprising:
a data storage system receiving I/O requests from two or more network-attached servers; and
a controller managing the data storage system and;storing a queue depth limit for each of the plurality of network-attached servers; monitoring latency of processed I/O requests; and for each of the network-attached servers, processing received I/O requests by; managing a virtual bucket comprising a number of virtual tokens, each token representative of authorization for an I/O request from at least that network-attached server to be processed; and permitting a received I/O request from that network-attached server to be processed if the virtual bucket comprises a number of virtual tokens greater than zero, and decrementing the number of virtual tokens by at least one; wherein the virtual tokens are added to the virtual bucket at any given time tx according to the equation;
Tokens(tx)=QueueDepthLimit*TimeElapsed(tx−
tx-1)/Latencywherein Tokens(tx) gives a value corresponding to a number of virtual tokens to be added to the virtual bucket at time tx;
QueueDepthLimit is the determined queue depth limit for that network-attached server;
TimeElapsed(tx−
tx-1) is an amount of time elapsed between time tx and a time tx-1, where tx-1 is a point in time prior to time tx; and
Latency is a latency of processed electronic I/O requests that have completed during the time elapsed between time tx and a time tx-1.- View Dependent Claims (14)
Specification