Receive-side scaling in a computer system using sub-queues assigned to processing cores
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, each sub-queue corresponding to a different memory region, and wherein each memory region is assigned to a different processing core of the multicore processor such that as data is read from a particular memory region covered by a particular sub-queue, the processing core assigned to the particular memory region processes the data, the processing core being assigned to the particular memory region before the data is received into the circular queue;
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 the particular processing core assigned to the memory region at which the tail pointer is currently located as the particular processing core processes data from the memory region at which the tail pointer is currently located.
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.
7 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, each sub-queue corresponding to a different memory region, and wherein each memory region is assigned to a different processing core of the multicore processor such that as data is read from a particular memory region covered by a particular sub-queue, the processing core assigned to the particular memory region processes the data, the processing core being assigned to the particular memory region before the data is received into the circular queue; 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 the particular processing core assigned to the memory region at which the tail pointer is currently located as the particular processing core processes data from the memory region at which the tail pointer is currently located. - 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 each of the sub-queues are sequentially assigned to a different one of a plurality of 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, the processing core being assigned to the particular sub-queue before the data is received into the circular queue; updating the tail pointer with the particular processing core assigned to the region at which the tail pointer is currently located; 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 non-transitory 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, the processing core being assigned to the particular sub-queue before the data is received into the circular queue; code for updating the tail pointer with the particular processing core assigned to the region at which the tail pointer is currently located; 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