Multi-core storage processor assigning other cores to process requests of core-affined streams
First Claim
1. A network attached storage system for providing a distributed file system service to host computers via a network, comprising:
- network interface circuitry to be coupled to the network;
one or more data storage devices to store file system data; and
a storage processor coupled to the network interface circuitry and the data storage devices to perform file system operations of the distributed file system service using the data storage devices for underlying data storage, the file system operations including file read and file write operations,the storage processor including a multi-core processing unit and memory, the multi-core processing unit having a set of cores for respective independent instruction execution of instructions stored in the memory, the instructions including;
(1) first instructions of a distributed file system application including respective sets of execution threads for the cores, each execution thread used to perform file system operations based on corresponding requests from the host computers,(2) second instructions of sets of network stream modules forming respective stream network stacks, sets of two or more of the stream network stacks being executed by respective cores, each stream network stack including a stream head to and from which the execution threads read and write stream data corresponding to the requests from and responses to the host computers via respective distinct host-specific connection-layer connections, and(3) third instructions of collector modules executed by the respective cores, a collector module of each core being operative on a per-request basis to (a) dynamically and preferentially assign execution threads of the core to the stream heads of the core to process first file system requests and responses in stream data of the respective stream network stacks, and (b) co-operate with collector modules of the other cores to dynamically and non-preferentially assign execution threads of the other cores to the stream heads of the core to process second file system requests and responses in stream data of the respective stream network stacks to promote efficient use of the cores in providing the distributed file system service.
9 Assignments
0 Petitions
Accused Products
Abstract
A multi-core processor of a network attached storage system processes requests from host computers for services of a file system service. Each core maintains endpoints of respective connection-layer connections to the hosts to affine respective streams of network traffic with the core, and dynamically and preferentially assigns execution threads of the core to process file system service requests of the streams affined with the core. Each core also co-operates with the other cores to dynamically and non-preferentially (a) assign execution threads of the core to process file system service requests of the streams affined with the other cores, and (b) assign execution threads of the other cores to process file system service requests of the streams affined with the core, promoting efficient use of the cores for the processing workload of the file system service.
-
Citations
14 Claims
-
1. A network attached storage system for providing a distributed file system service to host computers via a network, comprising:
-
network interface circuitry to be coupled to the network; one or more data storage devices to store file system data; and a storage processor coupled to the network interface circuitry and the data storage devices to perform file system operations of the distributed file system service using the data storage devices for underlying data storage, the file system operations including file read and file write operations, the storage processor including a multi-core processing unit and memory, the multi-core processing unit having a set of cores for respective independent instruction execution of instructions stored in the memory, the instructions including; (1) first instructions of a distributed file system application including respective sets of execution threads for the cores, each execution thread used to perform file system operations based on corresponding requests from the host computers, (2) second instructions of sets of network stream modules forming respective stream network stacks, sets of two or more of the stream network stacks being executed by respective cores, each stream network stack including a stream head to and from which the execution threads read and write stream data corresponding to the requests from and responses to the host computers via respective distinct host-specific connection-layer connections, and (3) third instructions of collector modules executed by the respective cores, a collector module of each core being operative on a per-request basis to (a) dynamically and preferentially assign execution threads of the core to the stream heads of the core to process first file system requests and responses in stream data of the respective stream network stacks, and (b) co-operate with collector modules of the other cores to dynamically and non-preferentially assign execution threads of the other cores to the stream heads of the core to process second file system requests and responses in stream data of the respective stream network stacks to promote efficient use of the cores in providing the distributed file system service. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of operating a multi-core processor of a network attached storage system to process requests from host computers for services of a file system service, the method including, at each of a set of cores of the multi-core processor:
-
maintaining endpoints of respective connection-layer connections to the hosts to affine respective streams of network traffic with the core; dynamically and preferentially assign execution threads of the core to process file system service requests of the streams affined with the core; and co-operate with other cores of the set of cores to dynamically and non-preferentially (a) assign execution threads of the core to process file system service requests of the streams affined with the other cores, and (b) assign execution threads of the other cores to process file system service requests of the streams affined with the core. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification