1999 Linux Symposium

optimising device drivers for smp


Optimizing Device Drivers for SMP

Linux is now perceived as being suitable for use as a large server and as a performance computing solution. To help meet the needs of these environments, a lot of work is being put into making Linux scale better on SMP systems. Allowing device drivers to run multi-threaded is an important part of this work.

We will look at the various aspects of making device drivers SMP aware and how to optimize them for maximum performance. It will show how it is possible to write lock-free driver code for sane hardware, which eliminates contention on spin locks, resulting in faster code. Other aspects covered will include the use of memory mapped I/O rather than I/O mapped and the reduction of cache effects by keeping code and data structures local to the CPU. The specific example in the talk will be the driver for the Alteon AceNIC Gigabit Ethernet card, however the techniques are applicable to most types of device drivers within the Linux kernel.

Jes Sorensen

After starting with Linux/m68k on the Amiga back in 1993 Jes took over the role of Linux/m68k port maintainer. He began working at CERN (the European Laboratory for Particle Physics in Geneva, Switzerland) in 1997, and wrote his Master's thesis in electrical engineering. He stayed on as a Fellow and wrote Linux code for CERN, including device drivers for Gigabit Ethernet and HIPPI. He also has worked for the Linux IA-64 (Trillian) project. He can occasionally be spotted at Linux conferences enjoying good beer with fellow Linux enthusiasts. Jes works in the Linuxcare Research Engineering group.

© 2000 Linux Symposium.  All Rights Reserved.