RECEIVE-SIDE SCALING IN A COMPUTER SYSTEM
First Claim
1. A computer system configured to receive an incoming data stream, the system comprising:
- a multi-core processor;
a memory unit at least partially configured in a circular queue that receives a data stream, wherein the circular queue is divided into a plurality of sub-queues, and wherein each sub-queue is assigned to a processing core of the multicore processor such that as data is received into a region covered by a particular sub-queue, the processing core assigned to the particular sub-queue processes the data;
wherein a head pointer of the circular queue is updated as data is received into the circular queue and a tail pointer of the circular queue is updated by a particular processing core as it processes data in its assigned sub-queue.
8 Assignments
0 Petitions
Accused Products
Abstract
A system, method, and computer program product are provided for receiving an incoming data stream. The system comprises a multi-core processor with a memory unit that is configured to include a circular queue that receives a data stream. The circular queue is divided into a plurality of sub-queues determined as a multiple of the number of processing cores, and each sub-queue is assigned to one processing core such that as data is received into a region covered by a particular sub-queue, the processing core assigned to the particular sub-queue processes the data. The system is also configured to update a head pointer and a tail pointer of the circular queue. The head pointer is updated as data is received into the circular queue and the tail pointer is updated by a particular processing core as it processes data in its assigned sub-queue.
13 Citations
20 Claims
-
1. A computer system configured to receive an incoming data stream, the system comprising:
-
a multi-core processor; a memory unit at least partially configured in a circular queue that receives a data stream, wherein the circular queue is divided into a plurality of sub-queues, and wherein each sub-queue is assigned to a processing core of the multicore processor such that as data is received into a region covered by a particular sub-queue, the processing core assigned to the particular sub-queue processes the data; wherein a head pointer of the circular queue is updated as data is received into the circular queue and a tail pointer of the circular queue is updated by a particular processing core as it processes data in its assigned sub-queue. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer-implemented method for receiving an incoming data stream comprising:
-
dividing a circular queue in a memory unit into multiple sub-queues, each sub-queue including an equal portion of the circular queue, and wherein the sub-queues are sequentially assigned to the processing cores; receiving the data stream into the circular queue, wherein a head pointer indicating the front of the queue is updated based on an amount of data received into the queue; as data is received in the circular queue; determining whether a tail pointer of the circular queue is within a region of a particular sub-queue; in response to determining that the tail pointer is within the region, retrieving the data in the particular sub-queue, wherein the data is retrieved by the processing core assigned to a particular sub-queue; and notifying a processing core assigned to a next subsequent sub-queue that retrieving of the data in the particular sub-queue is complete. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer program product having a computer readable medium tangibly recording computer program logic for processing and incoming data stream, the computer program product comprising:
-
code for dividing a circular queue in a memory unit into multiple sub-queues, each sub-queue including an equal portion of the circular queue, wherein the number of sub-queues is related to a number of processing cores in a computer processor coupled to the memory unit, and wherein the sub-queues are sequentially assigned to the processing cores; code for receiving the data stream into the circular queue, wherein a head pointer indicating the front of the queue is updated based on the amount of data received into the queue; as data is received in the circular queue; code for determining whether a tail pointer of the circular queue is within a region of a particular sub-queue; code for retrieving data in the particular sub-queue after determining that the tail pointer is within the region, wherein the data is retrieved by the processing core assigned to the particular sub-queue; and code for notifying a processing core assigned to a next subsequent sub-queue that retrieving of the data in the particular sub-queue is complete. - View Dependent Claims (20)
-
Specification