Eliminating receive livelock in an interrupt-driven kernel

Eliminating receive livelock in an interrupt-driven kernel
复制标题

DOI:
10.1145/263326.263335
复制
发表时间:
1996-01
期刊:
--
影响因子:
--
通讯作者:
J. Mogul;K. Ramakrishnan
J. Mogul;K. Ramakrishnan
中科院分区:
其他
文献类型:
--
作者:
J. Mogul;K. Ramakrishnan

文献摘要

被引文献

相似文献

大多数操作系统使用接口中断来调度网络任务。中断驱动的系统可以在低提供的负载下提供低开销和良好的延迟,但在更高的到达率下显著降低,除非注意防止几种病理。这些是各种形式的接收活锁,其中系统将其所有时间都花在处理中断上,从而排除了其他必要的任务。在极端情况下,不会向用户应用程序或系统输出发送任何数据包。为了避免活锁和相关问题,操作系统必须像调度进程执行一样仔细地调度网络中断处理。为此,我们修改了一个中断驱动的网络实现;此修改消除了接收活锁,而不会降低系统性能的其他方面。我们的修改包括在系统负载较重时使用轮询,同时保留在较轻负载时使用中断。我们提供的测量结果证明了我们方法的成功。
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 ofreceive livelock, in which the system spends all of 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 modification eliminates receive livelock without degrading other aspects of system performance. Our modifications include the use of polling when the system is heavily loaded, while retaining the use of interrupts ur.Jer lighter load. We present measurements demonstrating the success of our approach.