Unix - System Performance


The purpose of this tutorial is to introduce the performance analyst to some of the free tools available to monitor and manage performance on UNIX systems, and to provide a guideline on how to diagnose and fix performance problems in Unix environment.

UNIX has following major resource types that need to be monitored and tuned −

  • CPU

  • Memory

  • Disk space

  • Communications lines

  • I/O Time

  • Network Time

  • Applications programs

Performance Components

There are following major five component where total system time goes −

Component Description
User state CPU The actual amount of time the CPU spends running the users program in the user state. It includes time spent executing library calls, but does not include time spent in the kernel on its behalf.
System state CPU This is the amount of time the CPU spends in the system state on behalf of this program. All I/O routines require kernel services. The programmer can affect this value by the use of blocking for I/O transfers.
I/O Time and Network Time These are the amount of time spent moving data and servicing I/O requests
Virtual Memory Performance This includes context switching and swapping.
Application Program Time spent running other programs - when the system is not servicing this application because another application currently has the CPU.

Performance Tools

Unix provides following important tools to measure and fine tune Unix system performance −

Command Description
nice/renice Run a program with modified scheduling priority
netstat Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
time Time a simple command or give resource usage
uptime System Load Average
ps Report a snapshot of the current processes.
vmstat Report virtual memory statistics
gprof Display call graph profile data
prof Process Profiling
top Display system tasks

You can use Manpage Help to check complete syntax for each command mentioned here.