Balancing usage of hardware devices among clients
First Claim
Patent Images
1. A method for balancing hardware usage, the method comprising:
- receiving an IO job associated with a client;
estimating an amount of time a storage device will take to complete IO jobs associated with the client;
determining that the estimated amount of time the storage device will take to complete IO jobs associated with the client exceeds an amount of time that was allocated to complete IO jobs from the client; and
storing the IO job in a queuereceiving an IO job associated with a second client;
determining that the second client is associated with information that identifies an amount of time that the storage device can spend completing IO job requests from the second client;
sending the IO job request associated with the second client to the storage device;
determining that the amount of time that the storage device can spend completing IO job requests from the second client exceeds a predetermined maximum amount of time; and
reducing the amount of time that the storage device can spend completing IO job requests from the second client to the predetermined maximum amount of time.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques are disclosed for managing the flow of IO jobs from a client to a hardware device such that resource starvation is reduced without significantly impacting throughput. Each flow can be assigned an amount of time that a hardware device can deplete completing IO jobs from the client. When the allocated amount of time is used IO jobs associated with the client can be stored in a queue until the client obtains more time.
60 Citations
18 Claims
-
1. A method for balancing hardware usage, the method comprising:
-
receiving an IO job associated with a client; estimating an amount of time a storage device will take to complete IO jobs associated with the client; determining that the estimated amount of time the storage device will take to complete IO jobs associated with the client exceeds an amount of time that was allocated to complete IO jobs from the client; and storing the IO job in a queue receiving an IO job associated with a second client; determining that the second client is associated with information that identifies an amount of time that the storage device can spend completing IO job requests from the second client; sending the IO job request associated with the second client to the storage device; determining that the amount of time that the storage device can spend completing IO job requests from the second client exceeds a predetermined maximum amount of time; and reducing the amount of time that the storage device can spend completing IO job requests from the second client to the predetermined maximum amount of time. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer system comprising:
-
a processor; a storage device; and a memory in communication with at least the processor when powered, the memory including instructions stored thereon that upon execution by the processor cause the processor to; store a value indicative of an amount of time the storage device can spend completing IO jobs from a client; receive IO jobs associated with the client; estimate an amount of time the storage device will need to complete the IO jobs; revise the value based on the estimated amount of time required to complete the IO jobs; and send the IO jobs to the storage device. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A computer readable medium excluding signals per se including processor executable instructions for balancing IO requests, the computer readable storage medium comprising instructions that upon execution by a processor cause the processor to:
-
store a plurality of negative time values, each negative time value associated with a client, each negative time value being indicative of an estimated amount of time that a storage device spent completing IO jobs associated with the client; store a value indicative of an issue line, the value indicative of the issue line separating positive time values from the negative values, the positive time values associated with clients that are eligible to send IO jobs to the storage device; receive a IO job completion signal from the storage device; advance the issue line an amount of time to make IO jobs associated with at least one negative time value eligible for sending to the storage device; and send IO jobs that are eligible based on the advanced issue line to the storage device; and reduce an amount of time from the time value associated with the eligible IO jobs, the amount of time calculated based on an estimated amount of time required to complete the IO jobs sent to the storage device and a priority level for a client associated with the newly positive time value. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification