Patent ID: 7363451

Claim:
A method for load balancing responsive to an Input/Output (IO) command that may be equally executed by more than one disk drive in an array of disk drives, the method comprising: determining a queue space for each of the disk drives in the array of disk drives that may execute the IO command; comparing the queue space of the disk drives in the array of disk drives that may execute the IO command; responsive to the queue space of the disk drives in the array of disk drives that may execute the IO command being equal, comparing the speeds of said disk drives: responsive to one of the disk drives in the array of disk drives that may execute the IO command having the fastest speed, selecting said disk drive to execute the IO command; responsive to two or more of the disk drives in the array of disk drives that may execute the IO command each having the fastest speed, selecting the disk drive from said two or more disk drives with its head closest to the start sector of the IO command to execute the IO command; and responsive to the queue space of the disk drives in the array of disk drives that may execute the IO command not being equal, identifying from the disk drives in the array of disk drives that may execute the IO command the disk drive with the largest queue space and: responsive to the difference in queue space between said disk drive with the largest queue space and each of the disk drives in the array of disk drives that may execute the IO command being greater than a predetermined number, selecting said disk drive with the largest queue space to execute the IO command; responsive to the difference in queue space between said disk drive with the largest queue space and at least one disk drive in the array of disk drives that may execute the IO command being less than or equal to a predetermined number and said at least one disk drive's queue space being greater than zero, selecting the disk drive with the higher revolutions per minute, as selected between said disk drive with the largest queue space and said at least one disk drive, to execute the IO command; responsive to the difference in queue space between said disk drive with the largest queue space and at least one disk drive in the array of disk drives that may execute the IO command being less than or equal to a predetermined number and said at least one disk drive's queue space being equal to zero, selecting said disk drive with the largest queue space to execute the IO command.