Combined network and application processing in a multiprocessing environment
First Claim
1. A method for processing tasks of a protocol stack on a multi-processor system, comprising:
- creating, at initialization of the multi-processor system, a number of network context data structures equal to a number of processing devices;
allocating a memory resource for each network context so that an execution thread queued to a particular network context accesses the memory resource allocated for the particular network context, the execution thread associated with a network connection data structure representing one or more transport layer connections queued to the particular network context, the memory resource allocated for the particular network context represents the network connection data structure, the network connection data structure comprising a transport layer connection table, wherein each entry in the transport layer connection table references a process control block data structure (PCB), wherein each PCB associated with a transport layer connection is accessed by the execution thread processing a task queued to the particular network context; and
assigning a single processing device of the number of processing devices in the multi-processor system to process the execution thread using the memory resource and processing of the execution thread across layers of the protocol stack, thereby not requiring a lock of the memory resource.
1 Assignment
0 Petitions
Accused Products
Abstract
According to a novel mechanism, each processing device (e.g., a central processing unit (CPU) in a multi-processor system) is assigned to process a single execution thread for a task and the execution thread is processed across various layers of the multi-processor system (such as a network layer and application layer) without being divided into separate threads. Advantageously, upon initialization of the multi-processor system, network context data structures are created equal to the number of processing devices in the system. As used herein, a network context is a logical entity to which zero or more connections are bound during their lifetime. Rather than sharing data structures among execution threads, a multi-processor system allocates memory resources per each network context during initialization of the system. As a result, an execution thread processing a task queued to a particular network context accesses memory resources allocated for that network context only.
80 Citations
18 Claims
-
1. A method for processing tasks of a protocol stack on a multi-processor system, comprising:
-
creating, at initialization of the multi-processor system, a number of network context data structures equal to a number of processing devices; allocating a memory resource for each network context so that an execution thread queued to a particular network context accesses the memory resource allocated for the particular network context, the execution thread associated with a network connection data structure representing one or more transport layer connections queued to the particular network context, the memory resource allocated for the particular network context represents the network connection data structure, the network connection data structure comprising a transport layer connection table, wherein each entry in the transport layer connection table references a process control block data structure (PCB), wherein each PCB associated with a transport layer connection is accessed by the execution thread processing a task queued to the particular network context; and assigning a single processing device of the number of processing devices in the multi-processor system to process the execution thread using the memory resource and processing of the execution thread across layers of the protocol stack, thereby not requiring a lock of the memory resource. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for processing tasks of a protocol stack on a multi-processor system, comprising:
-
maintaining a number of network context data structures equal to a number of processing devices that process one or more tasks assigned to a particular network context; maintaining memory resources for each network context so that a single execution thread that process a first task queued to a first network context accesses a memory resource allocated for the first network context, the memory resource represents a network connection data structure, the network connection data structure comprising a transport layer connection table, wherein each entry in the transport layer connection table references a process control block data structure (PCB), wherein each PCB associated with a transport layer connection is accessed by the execution thread processing a task queued to the particular network context; and processing, by a single processing device of the number of processing devices, the single execution thread for the first task using the memory resources for the first network context and processing the single execution thread for the first task across a network layer and an application layer of the multi-processor system, wherein each network context is associated with a transport layer connection for a lifetime of the connection. - View Dependent Claims (11, 12)
-
-
13. A system for processing tasks of a protocol stack, the system comprising:
-
a plurality of network context data structures maintained in a memory, equal to a number of processing devices for processing tasks assigned to a particular network context; a plurality of memory resources, each resource associated with a network context so that a single execution thread processing a task queued to a particular network context accesses memory resources allocated for that network context, the protocol stack comprising a transport layer and an application layer, each network context associated with a transport layer connection for a lifetime of that connection; two or more processing devices for processing tasks assigned to the particular network context, each processing device assigned to process a single execution thread for a task using the allocated memory resources, wherein a memory resource of the plurality of memory resources allocated for the particular network context represents a transport control protocol (TCP) data structure accessed by the single execution thread processing tasks queued to the particular network context, wherein the TCP data structure represents an array of indexes, each index corresponding to a linked list of one or more process control blocks (PCB) storing data about processing the task; and processing the execution thread for the task across layers of the protocol stack, whereby the processing is performed without requiring to lock the allocated memory resources. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification