1. Field
This disclosure relates generally to computer network systems, and more specifically but not exclusively, to technologies for improving the efficiency of interrupt delivery at runtime in a network system.
2. Description
In a computer network system, an application or a thread of the application may be scheduled by the Operating System (“OS”) at runtime onto any processor or processing core (hereinafter the term “processor” will be used to refer to a processor or a processing core) depending on the utilization of different processors in the system at that moment and on the OS scheduling policy. Typically the OS runtime thread scheduling policy prefers a processor from a socket which has more than one processor available for thread rescheduling. However, a device interrupt is typically delivered to a processor which is pinned down by a static configuration or to all the processors in the system using a round robin scheme. That is, a device interrupt might not be delivered to a processor where the application/thread that the interrupt is targeted for (“target application/thread”) runs, or to a socket where the processor is located. When this occurs, there is mismatch between an interrupt and a processor that the interrupt is delivered to. Such mismatches, when occur frequently enough, degrade the system performance greatly because of cache thrashing between interrupt processing and the target application/thread, cost of inter-processor locking, inter-processor interrupts, other system software overheads, and etc. For some applications (e.g., UDP (User Datagram Protocol) applications) where the interrupt rate is high, the rate of such mismatch is also high which result in more performance degradation. Therefore, it is desirable to improve the efficiency of interrupt delivery at runtime in a network system.