Improving IPC by Kernel Design

  • Autor:

    Jochen Liedtke

  • Quelle:

    Proceedings of the 14th ACM Symposium on Operating System Principles (SOSP), Asheville, NC, December 1993

  • Datum: 12.1993
  • Abstract:

    Inter-process communication (ipc) has to be fast and effective, otherwise programmers will not use remote procedure calls (RPC),multithreading andmultitasking adequately. Thus ipc performance is vital for modern operating systems, especially microkernel based ones. Surprisingly, most microkernels exhibit poor ipc performance, typically requiring 100 µs for a short message transfer on a modern processor, running with 50 MHz clock rate.

    In contrast, we achieve 5 µs; a twentyfold improvement.

    This paper describes the methods and principles used, starting from the architectural design and going down to the coding level. There is no single trick to obtaining this high performance; rather, a synergetic approach in design and implementation on all levels is needed. The methods and their synergy are illustrated by applying them to a concrete example, the L3 microkernel (an industrial-quality operating system in daily use at several hundred sites). The main ideas are to guide the complete kernel design by the ipc requirements, and to make heavy use of the concept of virtual address space inside the microkernel itself.

    As the L3 experiment shows, significant performance gains are possible: compared with Mach, they range from a factor of 22 (8-byte messages) to 3 (4-Kbyte messages). Although hardware specific details influence both the design and implementation, these techniques are applicable to the whole class of conventional general purpose von Neumann processors supporting virtual addresses. Furthermore, the effort required is reasonably small, for example the dedicated parts of the microkernel can be concentrated in a single medium sized module.

    BibTex:

    @InProceedings{Liedtke93ImprovingIPC,
      author = {Jochen Liedtke},
      title = {Improving IPC by Kernel Design},
      booktitle = {Proceedings of the 14th Symposium on Operating System Principles (SOSP-14)},
      address = {Asheville, NC},
      month = dec,
      year = 1993,
      url = {http://l4ka.org/publications/}
    }