Method and apparatus for resource allocation in a raid system
First Claim
Patent Images
1. A computer-implemented method for managing allocation of resources to I/O tasks in a RAID system, the method comprising:
- generating configuration information about said RAID system;
defining a plurality of I/O tasks;
defining a plurality of resource pools;
determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types;
associating a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools;
allocating to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said respective set of resources associated with said associated respective first resource pool;
associating a second I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools;
scheduling said second I/O task for execution based at least in part on resources in said respective first resource pool from said plurality of resource pools not currently allocated to other I/O tasks, thereby controlling execution of said second I/O task using said respective resource pool; and
scheduling a predetermined number of additional I/O tasks for execution based at least in part on a quantity of a respective set of resources in one resource pool of said plurality of resource pools.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention implements an I/O task architecture in which an I/O task requested by the storage manager, for example a stripe write, is decomposed into a number of lower-level asynchronous I/O tasks that can be scheduled independently. Resources needed by these lower-level I/O tasks are dynamically assigned, on an as-needed basis, to balance the load and use resources efficiently, achieving higher scalability. A hierarchical order is assigned to the I/O tasks to ensure that there is a forward progression of the higher-level I/O task and to ensure that resources do not become deadlocked.
128 Citations
34 Claims
-
1. A computer-implemented method for managing allocation of resources to I/O tasks in a RAID system, the method comprising:
-
generating configuration information about said RAID system; defining a plurality of I/O tasks; defining a plurality of resource pools; determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types; associating a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; allocating to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said respective set of resources associated with said associated respective first resource pool; associating a second I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; scheduling said second I/O task for execution based at least in part on resources in said respective first resource pool from said plurality of resource pools not currently allocated to other I/O tasks, thereby controlling execution of said second I/O task using said respective resource pool; and scheduling a predetermined number of additional I/O tasks for execution based at least in part on a quantity of a respective set of resources in one resource pool of said plurality of resource pools. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer-implemented method for managing allocation of resources to I/O tasks in a RAID system, the method comprising:
-
generating configuration information about said RAID system; defining a plurality of I/O tasks; defining a plurality of resource pools; determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types, and determining said respective set of resources based at least in part on a hierarchical order of said plurality of I/O tasks and a predetermined proportion of resources needed at each level of said hierarchical order; associating a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; and allocating to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said respective set of resources associated with said associated respective first resource pool. - View Dependent Claims (15)
-
-
16. A computer-implemented method for managing allocation of resources to I/O tasks in a RAID system, the method comprising:
-
generating configuration information about said RAID system; defining a plurality of I/O tasks; defining a plurality of resource pools; determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types; associating a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; allocating to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said respective set of resources associated with said associated respective first resource pool; and associating said plurality of I/O tasks with a hierarchical order, and wherein the step of defining a plurality of resource pools comprises defining a plurality of resource pools, each resource pool corresponding to a level in said hierarchical order, and wherein the step of determining further comprises determining said respective set of resources based at least in part on a predetermined proportion of resources needed at each level of said hierarchical order, and wherein the step of associating comprises associating one or more I/O tasks on a same hierarchical level in said hierarchical order with a resource pool corresponding to said same hierarchical level. - View Dependent Claims (17)
-
-
18. A storage system for managing allocation of resources to I/O tasks in a RAID system, said storage system comprising:
-
an instantiator module configured to generate configuration information about said RAID system and to define a plurality of I/O tasks; and a resource manager configured to define a plurality of resource pools, to determine for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types, to associate a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools and to allocate to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said respective set of resources associated with said associated respective first resource pool, the resource manager further configured to associate a second I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools and scheduling said second I/O task for execution based at least in part on resources in said respective first resource pool from said plurality of resource pools not currently allocated to other I/O tasks, thereby controlling execution of said second I/O task using said respective resource pool; the resource manager further configured to schedule a predetermined number of additional I/O tasks for execution based at least in part on a quantity of a respective set of resources in one resource pool of said plurality of resource pools; and wherein the resource manager and instantiator module are executed using a processor within the storage system. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A storage system for managing allocation of resources to I/O tasks in a RAID system, said storage system comprising:
-
an instantiator module configured to generate configuration information about said RAID system and to define a plurality of I/O tasks; and a resource manager configured to define a plurality of resource pools, to determine for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types, to associate a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools and to allocate to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said respective set of resources associated with said associated respective first resource pool, and is further configured to define said plurality of I/O tasks with a hierarchical order, to define a plurality of resource pools, each resource pool corresponding to a level in said hierarchical order, and to associate one or more I/O tasks on a same hierarchical level in said hierarchical order with a resource pool corresponding to said same hierarchical level, wherein the resource manager and instantiator module are executed using a processor within the storage system.
-
-
30. An article of manufacture having computer-readable program portions embodied therein for managing allocation of resources to I/O tasks in a RAID system, said article comprising:
-
a computer-readable program portion for defining a plurality of I/O tasks; a computer-readable program portion for defining a plurality of resource pools; a computer-readable program portion for determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types; a computer-readable program portion for associating a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; a computer-readable program portion for allocating to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said associated respective first resource pool; computer-readable program portion for associating a second I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; a computer-readable program portion for scheduling said second I/O task for execution based at least in part on resources in said respective first resource pool from said plurality of resource pools not currently allocated to other I/O tasks, thereby controlling execution of said second I/O task using said respective resource pool; and a computer-readable program portion for scheduling a predetermined number of additional I/O tasks for execution based at least in part on a quantity of a respective set of resources in one resource pool of said plurality of resource pools. - View Dependent Claims (31, 32)
-
-
33. An article of manufacture having computer-readable program portions embodied therein for managing allocation of resources to I/O tasks in a RAID system, said article comprising:
-
a computer-readable program portion for defining a plurality of I/O tasks; a computer-readable program portion for defining a plurality of resource pools; a computer-readable program portion for determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on said configuration information and said plurality of I/O tasks, each set of resources comprising one or more resource types; a computer-readable program portion for associating a first I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; a computer-readable program portion for allocating to said first I/O task a requested resource from said associated respective first resource pool if said requested resource is available from said associated respective first resource pool; a computer-readable program portion for defining said plurality of I/O tasks with a hierarchical order; a computer-readable program portion for defining a plurality of resource pools, each resource pool corresponding to a level in said hierarchical order; and a computer-readable program portion for associating one or more I/O tasks on a same hierarchical level in said hierarchical order with a resource pool corresponding to said same hierarchical level.
-
-
34. A method, comprising:
-
generating configuration information about a RAID system; defining a plurality of I/O tasks; defining a plurality of resource pools; determining for each resource pool a respective set of resources associated with that resource pool, the set of resources based at least in part on the configuration information and the plurality of I/O tasks, each set of resources comprising more than one resource type; associating a first I/O task from the plurality of I/O tasks with a respective first resource pool from the plurality of resource pools; allocating to the first I/O task a requested resource from the associated respective first resource pool if the requested resource is available from the respective set of resources associated with said associated respective first resource pool; associating a second I/O task from said plurality of I/O tasks with a respective first resource pool from said plurality of resource pools; scheduling said second I/O task for execution based at least in part on resources in said respective first resource pool from said plurality of resource pools not currently allocated to other I/O tasks, thereby controlling execution of said second I/O task using said respective resource pool; and scheduling a predetermined number of additional I/O tasks for execution based at least in part on a quantity of a respective set of resources in one resource pool of said plurality of resource pools.
-
Specification