Check out the new USENIX Web site.

Eliminating Receive Livelock in an Interrupt-Driven Kernel


Jeffrey C. Mogul
DEC Western Research Laboratory

K. K. Ramakrishnan
AT&T Bell Laboratories

Abstract

Most operating systems use interface interrupts to schedule network tasks. Interrupt-driven systems can provide low overhead and good latency at low offered load, but degrade significantly at higher arrival rates unless care is taken to prevent several pathologies. These are various forms of receive livelock, in which the system spends all its time processing interrupts, to the exclusion of other necessary tasks. Under extreme conditions, no packets are delivered to the user application or the output of the system.

To avoid livelock and related problems, an operating system must schedule network interrupt handling as carefully as it schedules process execution. We modified an interrupt-driven networking implementation to do so; this eliminates receive livelock without degrading other aspects of system performance. We present measurements demonstrating the success of our approach.


Download the full text of this paper in ASCII (55,500 bytes) and POSTSCRIPT (207,144 bytes) form.

To Become a USENIX Member, please see our Membership Information.