IP Library Granted Patent US 6,886,074
Granted Patent B1
US 6,886,074 · App. 10/010,846 · Granted Apr 26, 2005

Method and apparatus for raid load balancing

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,886,074
App. No.
10/010,846
Granted
Apr 26, 2005
Kind
B1
Abstract

Methods and an apparatus for RAID load balancing are provided. One exemplary method includes establishing first and second counters where the first counter is associated with a first drive and the second counter is associated with a second drive. Next, a command is received form an operating system. Then, it is determined if the received command is a read command. If the received command is a read command, then the counters are examined to determine which of the counters is a lower value counter or if the counters are of equal value. Next, a drive associated with the lower value counter is selected or if the counters are of equal value a first drive is selected. The lower value counter is then incremented. Then, the read command is directed to the drive associated with the lower value counter or the first drive if the counters are of equal value.

Claims (59)

1. A method for distributing read commands to disks associated with a redundant array of inexpensive disks (RAID) mirroring system, comprising:

establishing a first and second counter, the first counter associated with a first disk drive, the second counter associated with a second disk drive;

receiving a command from an operating system;

determining if the received command is a read command;

examining the first and second counters if the received command is the read command, the examining including,

determining which of the first and second counters is a lower value counter or if the first and second counters are of equal value;

selecting a drive associated with the lower value counter or if the counters are of equal value selecting a first drive;

incrementing the lower value counter or the first counter if counters are of equal value; and

directing the read command to the drive associated with the lower value counter or the first drive if the counters are of equal value.

2. The method as recited in claim 1 , further including:

providing a multithread environment for receiving multiple commands from the operating system.

3. The method as recited in claim 1 , wherein directing the read command to the drive associated with the lower value counter, includes:

sending the read command to a drive queue of the drive associated with the lower value counter.

4. The method as recited in claim 3 , wherein the drive queue holds 256 commands.

5. The method as recited in claim 1 , wherein the RAID system is one of a software RAID implementation and a hardware RAID implementation.

6. The method as recited in claim 1 , wherein the method operation of determining if the received command is a read command includes, evaluating a command descriptor block associated with the command.

7. A method for maintaining a substantially even load of read commands on multiple disk drives associated with a RAID mirroring system, comprising:

associating each of the multiple disk drives with a counter, each counter being configured to track a queue of read commands for a corresponding disk drive;

examining each counter to identify a least loaded disk drive;

incrementing the counter associated with the least loaded disk drive;

sending a read command to the least loaded disk drive;

processing the read command in the least loaded disk drive;

generating an interrupt; and

decrementing the counter associated with the least loaded disk drive in response to the generated interrupt.

8. The method as recited in claim 7 , further including:

providing a multithread environment, the multithread environment allowing multiple read commands to be processed concurrently.

9. The method as recited in claim 7 , wherein the interrupt is a small computer system interface (SCSI) interrupt.

10. The method as recited in claim 7 , further including:

reporting to an operating system that the read command has been processed.

11. A computer readable media having program instructions for maintaining a substantially even load of read commands on multiple disk drives associated with a RAID mirroring system, comprising:

program instructions for associating each of the multiple disk drives with a counter, each counter being configured to track a queue of read commands for a corresponding disk drive;

program instructions for examining each counter to identify a least loaded disk drive;

program instructions for incrementing the counter associated with the least loaded disk drive;

program instructions for sending a read command to the least loaded disk drive;

program instructions for processing the read command in the least loaded disk drive;

program instructions for generating an interrupt; and

program instructions for decrementing the counter associated with the least loaded disk drive in response to the generated interrupt.

12. The computer readable media as recited in claim 11 , wherein the interrupt is a small computer system interface (SCSI) interrupt.

13. The computer readable media as recited in claim 11 , wherein the RAID system is one of a software RAID implementation and a hardware RAID implementation.

14. The computer readable media as recited in claim 11 , further including:

program instructions for providing a multithread environment, the multithread environment allowing multiple read commands to be processed concurrently.

15. An apparatus for distributing read commands between disk drives, the apparatus comprising:

a central processing unit;

an operating system, the operating system configured to generate commands;

a first and second disk drive, wherein the first and second disk drives are mirrors of one another; and

a RAID driver in communication with the first and second disk drives, the RAID driver including code for identifying a read command from the generated commands and identifying a least busy disk drive, wherein the read command is sent to the least busy disk drive, and a counter associated with the least busy disk drive, the counter being incremented in response to receiving the read command, and decremented in response to an interrupt generated upon completion of processing the read command.

16. The apparatus as recited in claim 15 , wherein the RAID driver is configured to evaluate a command descriptor block.

17. The apparatus as recited in claim 15 , further including:

a first and second queue, the first queue corresponding to the first disk drive the second queue corresponding to the second disk drive, the first and second queue configured to hold multiple commands.

18. The apparatus as recited in claim 15 , further including:

a multithread environment, the multithread environment configured to process multiple read commands concurrently.

19. The apparatus as recited in claim 15 , wherein the RAID driver is a RAID controller.

20. The apparatus as recited in claim 17 , wherein the first and second queue each have a 256 command capacity.

21. An apparatus for maintaining a substantially even load of read commands on multiple disk drives associated with a RAID mirroring system, comprising:

a central processing unit;

an operating system, the operating system configured to generate commands;

a first and second disk drive, wherein each of the first and second disk drives is associated with a counter, each counter being configured to track a queue of read commands; and

a RAID driver in communication with the first and second disk drives, the RAID driver including code for identifying a read command from the generated commands and identifying a least busy disk drive, wherein the read command is sent to the least busy disk drive to increment the counter of the least busy disk drive and the completion of the read command decrements the counter associated with the least busy disk drive in response to a generated interrupt.

22. The apparatus of claim 21 , wherein the generated interrupt is a small computer system interface (SCSI) interrupt.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059358/0001 →
RELEASE OF SECURITY INTEREST Recorded Feb 25, 2022
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059333/0222 →
SECURITY INTEREST Recorded Sep 18, 2018
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 047103/0206 →
SECURITY INTEREST Recorded Jun 25, 2018
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 046426/0001 →
RELEASE OF SECURITY INTEREST Recorded May 29, 2018
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.; MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 046251/0271 →
PATENT SECURITY AGREEMENT Recorded Feb 3, 2016
From: MICROSEMI STORAGE SOLUTIONS, INC. (F/K/A PMC-SIERRA, INC.); MICROSEMI STORAGE SOLUTIONS (U.S.), INC. (F/K/A PMC-SIERRA US, INC.)
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037689/0719 →
RELEASE OF SECURITY INTEREST Recorded Feb 1, 2016
From: BANK OF AMERICA, N.A.
To: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
Reel/Frame 037675/0129 →
SECURITY INTEREST IN PATENTS Recorded Aug 6, 2013
From: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 030947/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2013
From: ADAPTEC, INC.
To: PMC-SIERRA, INC.
Reel/Frame 030899/0567 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2001
From: NARAYANASWAMY, MANJUNATH; NAGSHAIN, MADHURESH
To: ADAPTEC, INC.
Reel/Frame 012372/0344 →