Claims
- 1. A method of utilizing informed throttling to guarantee quality of service to a plurality of clients, comprising:
for each client comparing a performance level received by the client to a corresponding contracted service level; based on the compared performance level, determining if the client qualifies as a victim whose received performance level is less than the corresponding contracted service level; based on the compared performance level, determining if the client qualifies as a candidate whose received performance level is better than the corresponding contracted service level; and selectively and dynamically issuing a throttling command to the candidate client.
- 2. The method of claim 1, further comprising providing a quality of service enforcement point by monitoring I/O streams to the clients.
- 3. The method of claim 2, further comprising gathering and processing information regarding a quality of service provided to the clients.
- 4. The method of claim 2, grouping, in a throttle set, a plurality of candidate clients.
- 5. The method of claim 4, further comprising computing a throttle value that corresponds to each candidate client in the throttle set.
- 6. The method of claim 5, further comprising applying the throttle value to each corresponding candidate client in the throttle set.
- 7. The method of claim 2, wherein determining if the client qualifies as a victim comprises classifying the client into one of a plurality of heuristic-dependent categories.
- 8. The method of claim 7, wherein classifying the clients comprises classifying the client into one of four heuristic-dependent categories:
a QoS_Met category; a QoS_Fail category; a QoS_Exempt category; and a QoS_Excess category.
- 9. The method of claim 8, wherein each of the four heuristic-dependent categories is based on:
a demand by the client; a preexisting specification of a quality of service specified by the client; and a current performance experienced by the client.
- 10. The method of claim 9, wherein the demand by the client is represented by any one or more of: bytes per second of I/O access, and I/O's per second.
- 11. The method of claim 9, wherein at least some of the four heuristic-dependent categories are based on predetermined delivery metrics.
- 12. The method of claim 10, wherein at least some of the four heuristic-dependent categories are based on latency.
- 13. The method of claim 10, wherein the QoS_Met category indicates that the client's demand does not exceed the corresponding contracted service level, and that the client's demand is properly met.
- 14. The method of claim 10, wherein the QoS_Fail category indicates that the client's demand does not exceed the corresponding contracted service level, and that the client's demand is improperly not met.
- 15. The method of claim 10, wherein the QoS_Exempt category indicates that the client's demand exceeds the corresponding contracted service level, and that the client's demand is properly not met.
- 16. The method of claim 15, wherein selectively and dynamically issuing the throttling command to the candidate client, comprises issuing the throttling command to the client that has been classified in the QoS_Exempt category, only if at least one victim client has been identified.
- 17. The method of claim 10, wherein the QoS_Excess category indicates that the client's demand exceeds the corresponding contracted service level, and that the client's demand is properly met.
- 18. The method of claim 7, wherein classifying the client into one of a plurality of heuristic-dependent categories comprises classifying the client at the end of a sampling period.
- 19. The method of claim 18, wherein classifying the client at the end of the sampling period comprises classifying the client based on performance statistics gathered by the quality of service enforcement point during the sampling period.
- 20. The method of claim 19, wherein if no client exists in the QoS_Fail category, the quality of service enforcement point does not revise previously made decisions; and
if there exists a client in the QoS_Fail category, the quality of service enforcement point takes corrective action by selectively throttling one or more I/O streams.
- 21. The method of claim 1, further comprising making a determination to identify the clients that compete for resources; and
based on the determination, selectively throttling I/O streams to candidate clients.
- 22. The method of claim 21, wherein making the determination comprises using input from storage configuration and human operators.
- 23. The method of claim 21, wherein making the determination comprises inferences from monitored data.
- 24. The method of claim 21, wherein selectively throttling the I/O streams to the candidate clients comprises selecting the candidate clients from a QoS_Fail category.
- 25. The method of claim 1, wherein making the determination comprises using location-independent information.
- 26. The method of claim 25, further comprising using at least one predictive model to predict how a throttling determination affects candidate clients' performance.
- 27. The method of claim 1, further comprising classifying workloads in relation to tolerance for throttling elasticity.
- 28. The method of claim 27, wherein classifying workloads comprises using information supplied by human operators.
- 29. The method of claim 27, wherein classifying workloads comprises using information inferred by mining correlations.
- 30. The method of claim 27, further comprising injecting spurious I/Os to analyze a systemic response.
- 31. The method of claim 30, further comprising using the systemic response as input for determining throttling elasticity.
- 32. The method of claim 30, further comprising using the systemic response as input for creating a competition map.
- 33. The method of claim 2, further comprising defining service level agreements for the I/O streams.
- 34. The method of claim 33, further comprising grouping the I/O streams into QoS groups.
- 35. The method of claim 34, wherein each I/O stream is part of exactly one QoS group and corresponds to one service level agreement.
- 36. The method of claim 1, further comprising assigning relative priorities to clients.
- 37. The method of claim 36, wherein clients with higher relative priorities are guaranteed the level of service specified in their contracts before clients with lower relative priorities.
- 38. The method of claim 37, wherein clients with lower relative priorities are considered for throttling before clients with higher relative priorities.
- 39. The method of claim 38, further comprising selectively assigning a high priority to a client having a predetermined contract type.
- 40. The method of claim 38, further comprising selectively assigning a high priority to a client having a predetermined fee structure.
- 41. A computer program product having instruction codes embedded on a medium, for utilizing informed throttling to guarantee quality of service to a plurality of clients, comprising:
a first set of instruction codes which, for each client compares a performance level received by the client to a corresponding contracted service level; a second set of instruction codes which, based on the compared performance level, determines if the client qualifies as a victim whose received performance level is less than the corresponding contracted service level; a third set of instruction codes which, based on the compared performance level, determines if the client qualifies as a candidate whose received performance level is better than the corresponding contracted service level; and a fourth set of instruction codes that selectively and dynamically issues a throttling command to the candidate client.
- 42. A system for utilizing informed throttling to guarantee quality of service to a plurality of clients, comprising:
means for comparing, for each client, a performance level received by the client to a corresponding contracted service level; means for determining, based on the compared performance level, if the client qualifies as a victim whose received performance level is less than the corresponding contracted service level; means for determining, based on the compared performance level, if the client qualifies as a candidate whose received performance level is better than the corresponding contracted service level; and means for selectively and dynamically issuing a throttling command to the candidate client.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] The present application is related to copending U.S. patent application, Ser. No.10/187,227, filed on Jun. 28, 2002, titled “A Method for Improving Performance In A Computer Storage System By Regulating Resource Requests From Clients,” assigned to the same assignee as the present application, and incorporated herein by reference in its entirety.