Abstract: While there is currently great interest in the problem of providing real-time communication and computation services in general purpose operating systems, the issue of real-time scheduling of internal operating system activities has received relatively little attention. Without real-time scheduling of the operating system itself, the system is susceptible to conditions such as receiver livelock -- a situation in which an operating system spends all its time processing arriving network packets, and application processes, even if scheduled with a real-time scheduler, are starved. We investigate the problem of scheduling operating system activities such as network protocol processing in a proportional share manner. We describe a proportional share implementation of the FreeBSD operating system and demonstrate that it solves the receiver livelock problem. Packets are processed within the operating system only at the cumulative rate at which the destination applications are prepared to receive them. Our solution ensures that if a packet is processed by the operating system, it is delivered to the application and processed in real-time. If packets arrive faster than an application is prepared to process them, they are discarded after consuming minimal system resources. In this manner the performance of Rwell behavedS applications is unaffected by "misbehaving" applications. We demonstrate this effect by running a set of multimedia applications under a variety of network conditions on a set of increasingly sophisticated proportional share implementations of FreeBSD and comparing their performance. This work contributes to our knowledge of the engineering of proportional share real-time systems.
A copy of the slides for the talk presented at the conference is also available.