Patent ID: 8713572

Claim:
A method of processing a plurality of input/output (IO) request jobs comprising: determining whether one or more IO request jobs are not meeting a quality of service (QoS) target, each IO request job of the one or more IO request jobs having a corresponding priority; selecting a highest priority job from the one or more IO request jobs; if one or more IO request jobs are not meeting the QoS target, determining whether the highest priority job has a corresponding effective rate limit imposed thereon; if the highest priority job has the corresponding effective rate limit imposed thereon, relaxing the corresponding effective rate limit; and if the highest priority job does not have the corresponding effective rate limit imposed thereon, selecting one or more lower priority jobs from the one or more IO request jobs and tightening a corresponding effective limit on the one or more lower priority jobs from the one or more IO request jobs in accordance with a delay factor limit, wherein the step of selecting one or more lower priority jobs includes: beginning at a lowest priority job, determining whether the lowest priority job is being throttled to a throttle limit; if the lowest priority job is not being throttled to the throttle limit, imposing the throttle limit on the lowest priority job to provide an amount of help, wherein an amount by which the corresponding effective rate limit is relaxed is based in part on the amount of help; and if the lowest priority job is being throttled to the throttle limit, advancing to a next higher priority level job.