Disk array system which performs data reconstruction with dynamic load balancing and user-specified disk array bandwidth for reconstruction operation to maintain predictable degradation
First Claim
1. A method for maintaining predictable performance of a disk array system during data reconstruction operations under varying disk loads, wherein the disk array system comprises a disk controller and a disk array coupled to the disk controller, wherein the disk array comprises a plurality of disk drives, wherein when a new drive is inserted in the disk array, the disk controller performs data reconstruction operations to place data on the new drive, the method comprising the steps of:
- receiving one or more requests from a host, wherein said host requests comprise reads or writes of data on the disk array, wherein said one or more host requests are stored on an execution queue for execution;
determining a number of said host requests on said execution queue;
creating one or more rebuild requests to rebuild data on the new drive;
placing a number of said rebuild requests on said execution queue, wherein said number of said rebuild requests placed on said execution queue is determined in response to said step of determining said number of said host requests on said execution queue, wherein said step of placing places said number of said rebuild requests on said execution queue to dynamically compensate for said number of host requests on said execution queue, andreceiving a user-specified amount of disk array bandwidth to be used by the disk controller for said data reconstruction operations, wherein said step of creating said one or more rebuild requests includes creating said rebuild requests of a certain size based on said determined number of host requests on said execution queue and said user-specified amount of disk array bandwidth to be used for said reconstruction operations.
7 Assignments
0 Petitions
Accused Products
Abstract
A disk controller and method which dynamically compensates for host command queue depth during the data rebuild process and thus maintains a predictable level of performance during data reconstruction operations. During non-idle periods, a rebuild task monitors the current host command queue depth generated by the host and submits additional rebuild requests accordingly. Rebuild requests are preferably sized based on the current rebuild queue depth and the user-selected performance allotment for rebuild operations to maintain a predictable level of performance degradation. Therefore, the rebuild task dynamically compensates for host command queue depth by queueing an appropriate number of rebuild requests of varying size so that neither requesting task dominates. This compensates for instances when the host queues requests deeply, such as during write cache flushing, while also preserving responsiveness when the host has one single thread of activity. In an alternate embodiment, the disk controller includes a first queue which is relatively deep and a second intermediate queue which is relatively shallow. Host requests are queued into the first queue and are then filtered into the intermediate queue. The rebuild task queues rebuild requests directly into the intermediate level queue, whose command queue depth is limited to very few requests. In this embodiment, the variation in command queue depth due to host requests is filtered out and by the first queue, and performance degradation is controlled more consistently.
-
Citations
23 Claims
-
1. A method for maintaining predictable performance of a disk array system during data reconstruction operations under varying disk loads, wherein the disk array system comprises a disk controller and a disk array coupled to the disk controller, wherein the disk array comprises a plurality of disk drives, wherein when a new drive is inserted in the disk array, the disk controller performs data reconstruction operations to place data on the new drive, the method comprising the steps of:
-
receiving one or more requests from a host, wherein said host requests comprise reads or writes of data on the disk array, wherein said one or more host requests are stored on an execution queue for execution; determining a number of said host requests on said execution queue; creating one or more rebuild requests to rebuild data on the new drive; placing a number of said rebuild requests on said execution queue, wherein said number of said rebuild requests placed on said execution queue is determined in response to said step of determining said number of said host requests on said execution queue, wherein said step of placing places said number of said rebuild requests on said execution queue to dynamically compensate for said number of host requests on said execution queue, and receiving a user-specified amount of disk array bandwidth to be used by the disk controller for said data reconstruction operations, wherein said step of creating said one or more rebuild requests includes creating said rebuild requests of a certain size based on said determined number of host requests on said execution queue and said user-specified amount of disk array bandwidth to be used for said reconstruction operations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A disk array system which maintains predictable performance during data reconstruction operations under varying disk loads, comprising:
-
a disk array comprising a plurality of disk drives, said plurality of disk drives including a new drive; an execution queue for storing data requests for said disk array; and a disk controller coupled to said execution queue and said disk array which performs data reconstruction operations to place data on the new drive in said disk array, wherein the disk controller comprises; means for receiving one or more requests from a host, wherein said host requests comprise reads or writes of data on the disk array, wherein said receiving means places said one or more host requests on said execution queue for execution; means for determining a number of host requests on said execution queue; means for creating a plurality of rebuild requests to rebuild data on the new drive; means for placing a number of said rebuild requests on said execution queue, wherein said means for placing places said number of said rebuild requests on said execution queue to dynamically compensate for said number of host requests on said execution queue; and means for receiving a user-specified amount of disk array bandwidth to be used by the disk controller for said data reconstruction operations, wherein said means for creating said one or more rebuild requests creates said rebuild requests of a certain size based on said determined number of host requests on said execution queue and said user-specified amount of disk array bandwidth to be used for said reconstruction operations. - View Dependent Claims (11, 12, 13)
-
-
14. A disk array system which maintains predictable performance during data reconstruction operations under varying disk loads, comprising:
-
a disk array comprising a plurality of disk drives, said plurality of disk drives including a new drive; an execution queue for storing data requests for said disk array; and a disk controller coupled to said execution queue and said disk array which performs data reconstruction operations to place data on the new drive in said disk array, wherein the disk controller comprises; means for receiving one or more requests from a host, wherein said host requests comprise reads or writes of data on the disk array, wherein said receiving means places said one or more host requests on said execution queue for execution; means for determining a number of host requests on said execution queue; means for creating a plurality of rebuild requests to rebuild data on the new drive; means for placing a number of said rebuild requests on said execution queue, wherein said means for placing places said number of said rebuild requests on said execution queue to dynamically compensate for said number of host requests on said execution queue, and a memory including one or more bits for storing a Desired Rebuild Queue Depth variable; wherein the disk controller further comprises; means for adjusting said Desired Rebuild Queue Depth variable based on said determination of said number of host requests on said execution queue; wherein said means for placing comprises; means for examining said Desired Rebuild Queue Depth variable; and means for placing a number of said rebuild requests on said execution queue based on said Desired Rebuild Queue Depth variable. - View Dependent Claims (15)
-
-
16. A method for maintaining predictable performance of a disk system during data reconstruction operations under a wide variety of disk loads, wherein the disk system comprises a disk controller and a disk array coupled to the disk controller, wherein the disk controller comprises a plurality of disk drives, wherein when a new drive is inserted in the system, the disk controller performs data reconstruction operations to place data on the new drive, the method comprising the steps of:
-
receiving one or more requests from a host, wherein said host requests comprise reads or writes of data on the disk array; placing said one or more host requests on a first queue, wherein said first queue has a first depth; transferring said one or more host requests from said first queue to a second queue, wherein said second queue has a second depth less than said first depth creating one or more rebuild requests to rebuild data on the new drive; placing one or more of said rebuild requests directly on said second queue; and executing said one or more host requests and said one or more rebuild requests from said second queue, wherein execution of said one or more rebuild requests results in a predictable level of degradation to execution of said one or more host requests. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A disk array system which maintains predictable performance during data reconstruction operations under varying disk loads, comprising:
-
a disk array comprising a plurality of disk drives, said plurality of disk drives including a new drive; a first queue for storing host requests for said disk array, wherein said first queue has a first size; a second queue for storing host requests and rebuild requests, wherein said second queue has a second size less than said first size, wherein host requests propagate from said first queue to said second queue prior to execution; and a disk controller coupled to said first and second queues and said disk array which performs data reconstruction operations to place data on the new drive in said disk array, wherein the disk controller comprises; means for receiving one or more requests from said host, wherein said host requests comprise reads or writes of data on the disk array; means for placing said one or more host requests on said first queue; means for transferring said one or more host requests from said first queue to said second queue; means for creating one or more rebuild requests to rebuild data on the new drive; means for placing one or more of said rebuild requests directly on said second queue; and means for executing said one or more host requests and said one or more rebuild requests from said second queue, wherein execution of said one or more rebuild requests results in a predictable level of degradation to execution of said one or more host requests. - View Dependent Claims (22, 23)
-
Specification