Data storage system with core-affined thread processing of data movement requests
First Claim
1. A method of operating a data storage system to process data movement requests, the data storage system having processing circuitry including one or more multi-core processors each having a respective plurality of processing cores, comprising:
- for each data movement request, executing a multi-threaded library component and underlying device drivers to perform a data movement operation including reading data from a source storage device into a source area of memory, copying data from the source area to a destination area of memory, and writing data from the destination area to a destination storage device, the library component having an initial operation of invoking an underlying driver to initiate the reading of data, and having subsequent operations of (1) in response to completion of data reading by an underlying driver, performing the copying of data, (2) invoking an underlying driver to initiate the writing of data, and (3) in response to completion of data writing by an underlying driver, initiating additional data movement operations to complete data movement for an entire range of the data movement request,wherein executing the multi-threaded component includes;
creating per-core queues for holding the data movement requests during processing, each queue uniquely associated with a respective core of the processing circuitry for holding data movement requests being processed by the associated core;
creating per-core threads each being affined to a respective core and being a unit of executable code operable to execute library component operations for data movement requests of the queue associated with the affined core;
distributing the data movement requests among the per-core queues for parallel processing of the data movement requests by the respective core-affined threads; and
for each data movement request, executing the respective core-affined thread on only the affined core, including (1) initially starting the thread on the affined core to perform the initial operation, and (2) subsequently re-starting the thread on the affined core to perform each of the subsequent operations.
7 Assignments
0 Petitions
Accused Products
Abstract
A data storage system has multi-core processing circuitry and processes data movement requests using a multi-threaded library component having an initial operation of invoking an underlying driver to read data, and subsequent operations of copying data, invoking an underlying driver to write data, and initiating additional data movement operations as necessary to complete data movement for an entire range of the data movement request. Core-affined threads are used to execute library component operations for data movement requests of associated per-core queues. Data movement requests are distributed among the per-core queues for parallel processing of the data movement requests by the respective core-affined threads, and the execution of a core-affined thread includes initially starting the thread on the affined core to perform the initial operation, and subsequently re-starting the thread on the affined core to perform each of the subsequent operations.
-
Citations
20 Claims
-
1. A method of operating a data storage system to process data movement requests, the data storage system having processing circuitry including one or more multi-core processors each having a respective plurality of processing cores, comprising:
-
for each data movement request, executing a multi-threaded library component and underlying device drivers to perform a data movement operation including reading data from a source storage device into a source area of memory, copying data from the source area to a destination area of memory, and writing data from the destination area to a destination storage device, the library component having an initial operation of invoking an underlying driver to initiate the reading of data, and having subsequent operations of (1) in response to completion of data reading by an underlying driver, performing the copying of data, (2) invoking an underlying driver to initiate the writing of data, and (3) in response to completion of data writing by an underlying driver, initiating additional data movement operations to complete data movement for an entire range of the data movement request, wherein executing the multi-threaded component includes; creating per-core queues for holding the data movement requests during processing, each queue uniquely associated with a respective core of the processing circuitry for holding data movement requests being processed by the associated core; creating per-core threads each being affined to a respective core and being a unit of executable code operable to execute library component operations for data movement requests of the queue associated with the affined core; distributing the data movement requests among the per-core queues for parallel processing of the data movement requests by the respective core-affined threads; and for each data movement request, executing the respective core-affined thread on only the affined core, including (1) initially starting the thread on the affined core to perform the initial operation, and (2) subsequently re-starting the thread on the affined core to perform each of the subsequent operations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A data storage system having data storage devices and processing circuitry, the processing circuitry including one or more multi-core processors each having a respective plurality of processing cores, the processing circuitry executing computer program instructions to cause the data storage system to process data movement requests by:
-
for each data movement request, executing a multi-threaded library component and underlying device drivers to perform a data movement operation including reading data from a source storage device into a source area of memory, copying data from the source area to a destination area of memory, and writing data from the destination area to a destination storage device, the library component having an initial operation of invoking an underlying driver to initiate the reading of data, and having subsequent operations of (1) in response to completion of data reading by an underlying driver, performing the copying of data, (2) invoking an underlying driver to initiate the writing of data, and (3) in response to completion of data writing by an underlying driver, initiating additional data movement operations to complete data movement for an entire range of the data movement request, wherein executing the multi-threaded component includes; creating per-core queues for holding the data movement requests during processing, each queue uniquely associated with a respective core of the processing circuitry for holding data movement requests being processed by the associated core; creating per-core threads each being affined to a respective core and being a unit of executable code operable to execute library component operations for data movement requests of the queue associated with the affined core; distributing the data movement requests among the per-core queues for parallel processing of the data movement requests by the respective core-affined threads; and for each data movement request, executing the respective core-affined thread on only the affined core, including (1) initially starting the thread on the affined core to perform the initial operation, and (2) subsequently re-starting the thread on the affined core to perform each of the subsequent operations. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
Specification