×

Data storage system with core-affined thread processing of data movement requests

  • US 10,289,306 B1
  • Filed: 01/31/2018
  • Issued: 05/14/2019
  • Est. Priority Date: 01/31/2018
  • Status: Active Grant
First Claim
Patent Images

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 all claims
  • 7 Assignments
Timeline View
Assignment View
    ×
    ×