# US 10,871,991 B2 · Multi-core processor in storage system executing dedicated polling thread for increased core availability

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,871,991 B2
- Document ID: US10871991B2
- Status: Granted
- Kind: B2
- Application number: 16/251,779
- Filed: 2019-01-18
- Published: 2020-07-23
- Granted: 2020-12-22
- Earliest claimed: 2019-01-18
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Amitai Alkalay; Lior Kamran; Eldad Zinger
- Web page: https://patentgrep.com/patent/US10871991B2

## CPC

- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0683: {Plurality of storage devices}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

At least one processor of a storage system comprises a plurality of cores and is configured to execute a first thread on a first core of the plurality of cores. The first thread polls at least one interface for an indication of data and, responsive to a detection of an indication of data, processes the data. Responsive to the first thread having no remaining data to be processed, the first thread suspends execution on the first core. The at least one processor is further configured to execute a second thread of a second type on a second core of the plurality of cores. The second thread polls the at least one interface for an indication of data to be processed by the first thread. Responsive to a detection of an indication of data, the second thread causes the first thread to resume execution on the first core.

## Claims

### Claim 1

An apparatus comprising:
a storage system comprising a node and a plurality of storage devices, the node comprising at least one processor coupled to memory and at least one interface, the at least one processor of the node comprising a plurality of cores, the at least one processor configured:
to execute a first thread of a first type on a first core of the plurality of cores to implement at least a portion of an application of the storage system, the first thread comprising an operating system thread, the first thread being configured:
to poll the at least one interface of the node or an indication of data to be processed by the first thread;
responsive to a detection of an indication of data on the at least one interface by the polling of the first thread, to process the data based on the indication; and
responsive to the first thread having no remaining data to be processed, to suspend execution on the first core; and
to execute a second thread of a second type on a second core of the plurality of cores to implement at least a portion of the application of the storage system, the second thread comprising an operating system thread, the second thread being configured to at least partially replace a polling functionality of the first thread by polling the at least one interface of the node for an indication of data to be processed by the first thread and, responsive to a detection of an indication of data on the at least one interface by the polling of the second thread, causing the first thread to resume execution on the first core.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the at least one processor is configured to implement a first application by executing at least the first thread of the first type on the first core.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the at least one processor is further configured to implement a second application by executing at least a third thread of a third type on the first core while the execution of the first thread on the first core is suspended.

### Claim 4 (depends on 3)

The apparatus of claim 3, wherein threads of the first type have a higher priority than threads of the third type such that, in response to the first thread resuming execution on the first core, the at least one processor is configured to suspend execution of the third thread on the first core.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the at least one interface comprises one or more of:
an interface that is configured to receive and reply to input-output requests from a user of the storage system;
an interface that is configured to send messages to and receive messages from other nodes of the storage system;
an interface that is configured for remote direct memory access (RDMA) transferring of buffers to and from other nodes of the storage system; and
an interface that is configured for communicating input-output operations to the plurality of storage devices.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein the first thread is configured to determine whether or not another thread is ready to be executed on the first core prior to suspending execution on the first core in response to the first thread having no remaining data to be processed,
wherein the first thread is configured to suspend execution on the first core in response to the first thread determining that another thread is ready to be executed on the first core and that the first thread has no remaining data to be processed, and
wherein the first thread is configured to not suspend execution on the first core in response to the first thread determining that no other thread is ready to be executed on the first core and that the first thread has no remaining data to be processed.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the first thread of the first type comprises a truck thread and wherein the second thread of the second type comprises a peek-poller thread.

### Claim 8

A method comprising:
executing a first thread of a first type on a first core of a plurality of cores of at least one processing device of a node of a storage system to implement at least a portion of an application of the storage system, the first thread comprising an operating system thread, the at least one processing device comprising a processor coupled to memory, the node comprising at least one interface, the first thread being configured:
to poll the at least one interface of the node for an indication of data to be processed by the first thread;
responsive to a detection of an indication of data on the at least one interface by the polling of the first thread, to process the data based on the indication; and
responsive to the first thread having no remaining data to be processed, to suspend execution on the first core; and
executing a second thread of a second type on a second core of the plurality of cores to implement at least a portion of the application of the storage system, the second thread comprising an operating system thread, the second thread being configured to at least partially replace a polling functionality of the first thread by polling the at least one interface of the node for an indication of data to be processed by the first thread and, responsive to a detection of an indication of data on the at least one interface by the polling of the second thread, causing the first thread to resume execution on the first core.

### Claim 9 (depends on 8)

The method of claim 8, wherein the method implements a first application by executing at least the first thread of the first type on the first core.

### Claim 10 (depends on 9)

The method of claim 9, wherein the method implements a second application by executing at least a third thread of a third type on the first core while the execution of the first thread on the first core is suspended.

### Claim 11 (depends on 10)

The method of claim 10, wherein threads of the first type have a higher priority than threads of the third type, the method further comprising suspending execution of the third thread on the first core in response to the first thread resuming execution on the first core.

### Claim 12 (depends on 8)

The method of claim 8, wherein the at least one interface comprises one or more of:
an interface that is configured to receive and reply to input-output requests from a user of the storage system;
an interface that is configured to send messages to and receive messages from other nodes of the storage system;
an interface that is configured for remote direct memory access (RDMA) transferring of buffers to and from other nodes of the storage system; and
an interface that is configured for communicating input-output operations to the plurality of storage devices.

### Claim 13 (depends on 8)

The method of claim 8, wherein the first thread is configured to determine whether or not another thread is ready to be executed on the first core prior to suspending the execution of the first thread on the first core in response to the first thread having no remaining data to be processed,
wherein the first thread is configured to suspend execution on the first core in response to the first thread determining that another thread is ready to be executed on the first core and that the first thread has no remaining data to be processed, and
wherein the first thread is configured to not suspend execution on the first core in response to the first thread determining that no other thread is ready to be executed on the first core and that the first thread has no remaining data to be processed.

### Claim 14 (depends on 13)

The method of claim 13, wherein the first thread of the first type comprises a truck thread and wherein the second thread of the second type comprises a peek-poller thread.

### Claim 15

A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device of a node of a storage system, the at least one processing device comprising at least one processor coupled to memory, the at least one processor comprising a plurality of cores, the node comprising at least one interface, causes the at least one processing device:
to execute a first thread of a first type on a first core of the plurality of cores to implement at least a portion of an application of the storage system, the first thread comprising an operating system thread, the first thread being configured:
to poll the at least one interface of the node for an indication of data to be processed by the first thread;
responsive to a detection of an indication of data on the at least one interface by the polling of the first thread, to process the data based on the indication; and
responsive to the first thread having no remaining data to be processed, to suspend execution on the first core; and
to execute a second thread of a second type on a second core of the plurality of cores to implement at least a portion of the application of the storage system, the second thread comprising an operating system thread, the second thread being configured to at least partially replace a polling functionality of the first thread by polling the at least one interface of the node for an indication of data to be processed by the first thread and, responsive to a detection of an indication of data on the at least one interface by the polling of the second thread, causing the first thread to resume execution on the first core.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the at least one processing device is configured to implement a first application by executing at least the first thread of the first type on the first core.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the at least one processing device is further configured to implement a second application by executing at least a third thread of a third type on the first core while the execution of the first thread on the first core is suspended.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein threads of the first type have a higher priority than threads of the third type such that, in response to the first thread resuming execution on the first core, the at least one processing device is configured to suspend execution of the third thread on the first core.

### Claim 19 (depends on 15)

The computer program product of claim 15, wherein the at least one interface comprises one or more of:
an interface that is configured to receive and reply to input-output requests from a user of the storage system;
an interface that is configured to send messages to and receive messages from other nodes of the storage system;
an interface that is configured for remote direct memory access (RDMA) transferring of buffers to and from other nodes of the storage system; and
an interface that is configured for communicating input-output operations to the plurality of storage devices.

### Claim 20 (depends on 15)

The computer program product of claim 15, wherein the first thread is configured to determine whether or not another thread is ready to be executed on the first core prior to suspending the execution on the first core in response to the first thread having no remaining data to be processed,
wherein the first thread is configured to suspend execution on the first core in response to the first thread determining that another thread is ready to be executed on the first core and that the first thread has no remaining data to be processed, and
wherein the first thread is configured to not suspend execution on the first core in response to the first thread determining that no other thread is ready to be executed on the first core and that the first thread has no remaining data to be processed.
