next up previous contents index
Next: 6.6 Device Driver Initialization Up: 6 OSKit Device Driver Previous: 6.4.1 Use in out-of-kernel

6.5 Performance

 

Since this framework emphasizes breadth, adaptability, and ease-of-use over raw performance, the performance of device drivers running under this framework is likely to suffer somewhat; how much depends on how well-matched the particular driver is to the driver framework and to the host OS. Various factors can influence driver performance: for example, if the OS's network code does not match the network drivers in terms of whether scatter/gather message buffers are supported or required, performance is likely to suffer somewhat due to extra copying between the driver and the OS's network code. The OS developer will have to take these issues into account when selecting which sets of device drivers to use (e.g., FreeBSD versus Linux network drivers). If the device driver sets are chosen carefully and the OS's driver support code is designed well, in many cases it should be possible to use these drivers with minimal performance loss.

Another consideration is how extensively the OS should rely on this device driver framework. There is nothing preventing the OS from maintaining its own (probably smaller) collection of ``native'' drivers designed and tuned for the particular OS; this way, the OS can achieve maximum performance for particularly common or performance-critical hardware devices, and use the larger set of device drivers easily available through this framework to provide support for other types of hardware that otherwise wouldn't be supported at all. This approach of combining native and emulated drivers is likely to be especially important for kernels that are not well matched to the existing drivers this framework was designed around: e.g., ``stackless'' interrupt model kernels which must run emulated device drivers on special threads or in user space.

For a very rough idea of the performance of drivers and kernels using this framework, see the results in our SOSP'97 paper ``The Flux OSKit: A Substrate for OS and Language Research.'' Performance results for a related but less formal and less encapsulated framework can be found in the USENIX'96 paper ``Linux Device Driver Emulation in Mach.''


next up previous contents index
Next: 6.6 Device Driver Initialization Up: 6 OSKit Device Driver Previous: 6.4.1 Use in out-of-kernel

University of Utah Flux Research Group