Managing read/write locks for multiple CPU cores for efficient access to storage array resources
First Claim
Patent Images
1. A method, operable on a computerized system having multiple CPU cores, for managing access to resources of a storage array, comprising:
- creating an instance of a mutex object that includes a mutex sub-object for each of the CPU cores, each mutex sub-object having a share lock counter;
receiving a request to obtain non-exclusive access to a resource of the storage array;
executing a first set of instructions on a first CPU core of the computerized system, the first CPU core having its own cache, to acquire a share lock on the resource, including incrementing the share lock counter of the mutex sub-object for the first CPU core in the cache of the first CPU core; and
executing a second set of instructions on a second CPU core of the computerized system, the second CPU core having its own cache, to release the share lock on the resource acquired by the first set of instructions executing on the first CPU core, including decrementing the share lock counter of the mutex sub-object for the second CPU core in the cache of the second CPU core,wherein instantiating the mutex object includes instantiating the mutex object within a memory shared among the multiple CPU cores.
9 Assignments
0 Petitions
Accused Products
Abstract
A technique for managing resources on a storage array having multiple CPU cores releases share locks on a resource by decrementing share lock counters associated with the CPU cores that release the share locks, regardless of whether these are the same as the CPU cores that acquired the share locks. As each CPU core changes its own share lock counter, cache trashing caused by changing share lock counters associated with other CPU cores can be avoided.
31 Citations
23 Claims
-
1. A method, operable on a computerized system having multiple CPU cores, for managing access to resources of a storage array, comprising:
-
creating an instance of a mutex object that includes a mutex sub-object for each of the CPU cores, each mutex sub-object having a share lock counter; receiving a request to obtain non-exclusive access to a resource of the storage array; executing a first set of instructions on a first CPU core of the computerized system, the first CPU core having its own cache, to acquire a share lock on the resource, including incrementing the share lock counter of the mutex sub-object for the first CPU core in the cache of the first CPU core; and executing a second set of instructions on a second CPU core of the computerized system, the second CPU core having its own cache, to release the share lock on the resource acquired by the first set of instructions executing on the first CPU core, including decrementing the share lock counter of the mutex sub-object for the second CPU core in the cache of the second CPU core, wherein instantiating the mutex object includes instantiating the mutex object within a memory shared among the multiple CPU cores. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 22, 23)
-
-
13. A computerized apparatus, comprising:
-
multiple CPU cores; and memory, coupled to the CPU cores, the memory storing executable instructions, which when executed by the CPU cores cause the CPU cores to perform a method for managing access to resources of a storage array, the method comprising; creating an instance of a mutex object that includes a mutex sub-object for each of the CPU cores, each mutex sub-object having a share lock counter; receiving a request to obtain non-exclusive access to a resource of the storage array; executing a first set of instructions on a first CPU core of the computerized system, the first CPU core having its own cache, to acquire a share lock on the resource, including incrementing the share lock counter of the mutex sub-object for the first CPU core in the cache of the first CPU core; and executing a second set of instructions on a second CPU core of the computerized system, the second CPU core having its own cache, to release the share lock on the resource acquired by the first set of instructions executing on the first CPU core, including decrementing the share lock counter of the mutex sub-object for the second CPU core in the cache of the second CPU core, wherein instantiating the mutex object includes instantiating the mutex object within a memory shared among the multiple CPU cores. - View Dependent Claims (14, 15, 16, 17)
-
-
18. A non-transitory computer readable medium including instructions which, when executed by multiple CPU cores of a computerized apparatus, cause the CPU cores to perform a method of managing access to resources of a storage array, the method comprising:
-
creating an instance of a mutex object that includes a mutex sub-object for each of the CPU cores, each mutex sub-object having a share lock counter; receiving a request to obtain non-exclusive access to a resource of the storage array; executing a first set of instructions on a first CPU core of the computerized system, the first CPU core having its own cache, to acquire a share lock on the resource, including incrementing the share lock counter of the mutex sub-object for the first CPU core in the cache of the first CPU core; and executing a second set of instructions on a second CPU core of the computerized system, the second CPU core having its own cache, to release the share lock on the resource acquired by the first set of instructions executing on the first CPU core, including decrementing the share lock counter of the mutex sub-object for the second CPU core in the cache of the second CPU core, wherein instantiating the mutex object includes instantiating the mutex object within a memory shared among the multiple CPU cores. - View Dependent Claims (19, 20, 21)
-
Specification