IO completion architecture for user-mode networking
First Claim
1. A method for adaptively processing completions of data transfer operations in a server comprising a network interface communicably coupled to perform the data transfer operations, a completion queue storing completion information for the data transfer operations, a set of executing threads capable of processing the completion information, the set of executing threads comprising a dedicated thread having a priority level responsive to a status of the completion queue, and wherein an application thread is coupled to an application running on the server to process application system calls, the method comprising the steps of:
- first processing, by the set of executing threads, the completion information in the completion queue according to a first priority level of the dedicated thread;
determining a change in status of the completion queue and in response assigning a second priority level to the dedicated thread; and
second processing, by the set of executing threads, the completion queue in the completion queue according to the second priority level of the dedicated thread.
2 Assignments
0 Petitions
Accused Products
Abstract
A new method and framework for implementing network protocol processing utilizing a combination of application threads and a dedicated thread to process IO completions in a completion queue that automatically detects and adjusts thread priorities to alleviate manual intervention. According to the present invention, as data transfer operations are completed by the network interface, completion information identifying the data transfer operations is posted on the completion queue. The completion information is read and processed by a combination of application and dedicated threads running in the system. A method monitors performance of the system to detect whether poor processor utilization or excessive context switches occurs, in which case a different thread is used to process the completion information. In order to context switch to a different thread, the priority level of the dedicated thread is set to a HIGH level to utilize the dedicated thread or the priority level of the dedicated thread is set a LOW level to utilize an application thread.
56 Citations
33 Claims
-
1. A method for adaptively processing completions of data transfer operations in a server comprising a network interface communicably coupled to perform the data transfer operations, a completion queue storing completion information for the data transfer operations, a set of executing threads capable of processing the completion information, the set of executing threads comprising a dedicated thread having a priority level responsive to a status of the completion queue, and wherein an application thread is coupled to an application running on the server to process application system calls, the method comprising the steps of:
-
first processing, by the set of executing threads, the completion information in the completion queue according to a first priority level of the dedicated thread;
determining a change in status of the completion queue and in response assigning a second priority level to the dedicated thread; and
second processing, by the set of executing threads, the completion queue in the completion queue according to the second priority level of the dedicated thread. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computer-readable medium having computer-executable instructions for facilitating adaptively processing completions of data transfer operations in a server comprising a network interface communicably coupled to perform the data transfer operations, a completion queue storing completion information for the data transfer operations, a set of executing threads capable of processing the completion information, the set of executing threads comprising a dedicated thread having a priority level responsive to a status of the completion queue, and wherein an application thread is coupled to an application running on the server to process application system calls, the computer-readable medium having computer-executable instructions facilitating performing the steps of:
-
first processing, by the set of executing threads, the completion information in the completion queue according to a first priority level of the dedicated thread;
determining a change in status of the completion queue and in response assigning a second priority level to the dedicated thread; and
second processing, by the set of executing threads, the completion queue in the completion queue according to the second priority level of the dedicated thread. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. An IO completion framework in a computer system for adaptively processing completion entries in a completion queue, the framework comprising:
-
a network interface for receiving and enqueueing the completion entries in the completion queue; and
a set of executing threads comprising;
at least a dedicated thread, the dedicated thread having a priority attribute; and
a monitor for setting the priority attribute in accordance with a status of the completion queue. - View Dependent Claims (30, 31, 32, 33)
-
Specification