Measuring and Improving the Performance of Berkeley UNIX*

April 17, 1991

Marshall Kirk McKusick,
Samuel J. Leffler**,
Michael J. Karels

Computer Systems Research Group
Computer Science Division
Department of Electrical Engineering and Computer Science
University of California, Berkeley
Berkeley, CA 94720


The 4.2 Berkeley Software Distribution of UNIXfor the VAX*** had several problems that could severely affect the overall performance of the system. These problems were identified with kernel profiling and system tracing during day to day use. Once potential problem areas had been identified benchmark programs were devised to highlight the bottlenecks. These benchmarks verified that the problems existed and provided a metric against which to validate proposed solutions. This paper examines the performance problems encountered and describes modifications that have been made to the system since the initial distribution.

      The changes to the system have consisted of improvements to the performance of the existing facilities, as well as enhancements to the current facilities. Performance improvements in the kernel include cacheing of path name translations, reductions in clock handling and scheduling overhead, and improved throughput of the network subsystem. Performance improvements in the libraries and utilities include replacement of linear searches of system databases with indexed lookup, merging of most network services into a single daemon, and conversion of system utilities to use the more efficient facilities available in 4.2BSD. Enhancements in the kernel include the addition of subnets and gateways, increases in many kernel limits, cleanup of the signal and autoconfiguration implementations, and support for windows and system logging. Functional extensions in the libraries and utilities include the addition of an Internet name server, new system management tools, and extensions to dbx to work with Pascal. The paper concludes with a brief discussion of changes made to the system to enhance security. All of these enhancements are present in Berkeley UNIX 4.3BSD.

CR Categories and Subject Descriptors: D.4.3 [Operating Systems]: File Systems Management - file organization, directory structures, access methods; D.4.8 [Operating Systems]: Performance - measurements, operational analysis;

Additional Keywords and Phrases: Berkeley UNIX, system performance, application program interface.

General Terms: UNIX operating system, measurement, performance. TABLE OF CONTENTS

1.  Introduction

2.  Observation techniques
 .1.    System maintenance tools
 .2.    Kernel profiling
 .3.    Kernel tracing
 .4.    Benchmark programs

3.  Results of our observations
 .1.    User programs
 .1.1.    Mail system
 .1.2.    Network servers
 .2.    System overhead
 .2.1.    Micro-operation benchmarks
 .2.2.    Path name translation
 .2.3.    Clock processing
 .2.4.    Terminal multiplexors
 .2.5.    Process table management
 .2.6.    File system buffer cache
 .2.7.    Network subsystem
 .2.8.    Virtual memory subsystem

4.  Performance Improvements
 .1.    Performance Improvements in the Kernel
 .1.1.    Name Cacheing
 .1.2.    Intelligent Auto Siloing
 .1.3.    Process Table Management
 .1.4.    Scheduling
 .1.5.    Clock Handling
 .1.6.    File System
 .1.7.    Network
 .1.8.    Exec
 .1.9.    Context Switching
 .1.10.   Setjmp and Longjmp
 .1.11.   Compensating for Lack of Compiler Technology
 .2.    Improvements to Libraries and Utilities
 .2.1.    Hashed Databases
 .2.2.    Buffered I/O
 .2.3.    Mail System
 .2.4.    Network Servers
 .2.5.    The C Run-time Library
 .2.6.    Csh

5.  Functional Extensions
 .1.    Kernel Extensions
 .1.1.    Subnets, Broadcasts, and Gateways
 .1.2.    Interface Addressing
 .1.3.    User Control of Network Buffering
 .1.4.    Number of File Descriptors
 .1.5.    Kernel Limits
 .1.6.    Memory Management
 .1.7.    Signals
 .1.8.    System Logging
 .1.9.    Windows
 .1.10.   Configuration of UNIBUS Devices
 .1.11.   Disk Recovery from Errors
 .2.    Functional Extensions to Libraries and Utilities
 .2.1.    Name Server
 .2.2.    System Management
 .2.3.    Routing
 .2.4.    Compilers

6.  Security Tightening
 .1.    Generic Kernel
 .2.    Security Problems in Utilities

7.  Conclusions



Appendix - Benchmark Programs

Table of Contents