.\" Copyright (c) 1985 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"	@(#)0.t	5.1 (Berkeley) 4/17/91
.\"
.if n .ND
.TL
Measuring and Improving the Performance of Berkeley UNIX*
.sp
April 17, 1991
.AU
Marshall Kirk McKusick,
Samuel J. Leffler\(dg,
Michael J. Karels
.AI
Computer Systems Research Group
Computer Science Division
Department of Electrical Engineering and Computer Science
University of California, Berkeley
Berkeley, CA  94720
.AB
.FS
* UNIX is a trademark of AT&T Bell Laboratories.
.FE
.FS
\(dg Samuel J. Leffler is currently employed by:
Silicon Graphics, Inc.
.FE
.FS
This work was done under grants from
the National Science Foundation under grant MCS80-05144,
and the Defense Advance Research Projects Agency (DoD) under
ARPA Order No. 4031 monitored by Naval Electronic System Command under
Contract No. N00039-82-C-0235.
.FE
The 4.2 Berkeley Software Distribution of 
.UX
for the VAX\(dd
.FS
\(dd VAX, MASSBUS, UNIBUS, and DEC are trademarks of
Digital Equipment Corporation.
.FE
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.
.PP
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 \fIdbx\fP 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.
.AE
.LP
.sp 2
CR Categories and Subject Descriptors:
D.4.3
.B "[Operating Systems]":
File Systems Management \-
.I "file organization, directory structures, access methods";
D.4.8
.B "[Operating Systems]":
Performance \-
.I "measurements, operational analysis";
.sp
Additional Keywords and Phrases:
Berkeley UNIX,
system performance,
application program interface.
.sp
General Terms:
UNIX operating system,
measurement,
performance.
.de PT
.lt \\n(LLu
.pc %
.nr PN \\n%
.tl '\\*(LH'\\*(CH'\\*(RH'
.lt \\n(.lu
..
.af PN i
.ds LH Performance
.ds RH Contents
.bp 1
.if t .ds CF April 17, 1991
.if t .ds LF DRAFT
.if t .ds RF McKusick, et. al.
.ce
.B "TABLE OF CONTENTS"
.LP
.sp 1
.nf
.B "1.  Introduction"
.LP
.sp .5v
.nf
.B "2.  Observation techniques
\0.1.    System maintenance tools
\0.2.    Kernel profiling
\0.3.    Kernel tracing
\0.4.    Benchmark programs
.LP
.sp .5v
.nf
.B "3.  Results of our observations
\0.1.    User programs
\0.1.1.    Mail system
\0.1.2.    Network servers
\0.2.    System overhead
\0.2.1.    Micro-operation benchmarks
\0.2.2.    Path name translation
\0.2.3.    Clock processing
\0.2.4.    Terminal multiplexors
\0.2.5.    Process table management
\0.2.6.    File system buffer cache
\0.2.7.    Network subsystem
\0.2.8.    Virtual memory subsystem
.LP
.sp .5v
.nf
.B "4.  Performance Improvements
\0.1.    Performance Improvements in the Kernel
\0.1.1.    Name Cacheing
\0.1.2.    Intelligent Auto Siloing
\0.1.3.    Process Table Management
\0.1.4.    Scheduling
\0.1.5.    Clock Handling
\0.1.6.    File System
\0.1.7.    Network
\0.1.8.    Exec
\0.1.9.    Context Switching
\0.1.10.   Setjmp and Longjmp
\0.1.11.   Compensating for Lack of Compiler Technology
\0.2.    Improvements to Libraries and Utilities
\0.2.1.    Hashed Databases
\0.2.2.    Buffered I/O
\0.2.3.    Mail System
\0.2.4.    Network Servers
\0.2.5.    The C Run-time Library
\0.2.6.    Csh
.LP
.sp .5v
.nf
.B "5.  Functional Extensions
\0.1.    Kernel Extensions
\0.1.1.    Subnets, Broadcasts, and Gateways
\0.1.2.    Interface Addressing
\0.1.3.    User Control of Network Buffering
\0.1.4.    Number of File Descriptors
\0.1.5.    Kernel Limits
\0.1.6.    Memory Management
\0.1.7.    Signals
\0.1.8.    System Logging
\0.1.9.    Windows
\0.1.10.   Configuration of UNIBUS Devices
\0.1.11.   Disk Recovery from Errors
\0.2.    Functional Extensions to Libraries and Utilities
\0.2.1.    Name Server
\0.2.2.    System Management
\0.2.3.    Routing
\0.2.4.    Compilers
.LP
.sp .5v
.nf
.B "6.  Security Tightening
\0.1.    Generic Kernel
\0.2.    Security Problems in Utilities
.LP
.sp .5v
.nf
.B "7.  Conclusions
.LP
.sp .5v
.nf
.B Acknowledgements
.LP
.sp .5v
.nf
.B References
.LP
.sp .5v
.nf
.B "Appendix \- Benchmark Programs"
.de _d
.if t .ta .6i 2.1i 2.6i
.\" 2.94 went to 2.6, 3.64 to 3.30
.if n .ta .84i 2.6i 3.30i
..
.de _f
.if t .ta .5i 1.25i 2.5i
.\" 3.5i went to 3.8i
.if n .ta .7i 1.75i 3.8i
..
