Overview of Unix/Linux System Tuning

Performance Monitoring and Tuning

Make sure you collect performance data on production servers.  Turn your collected performance data into useful reports.  If things aren't as they should be (the baseline and system requirements determine this):

  1. Define the problem
  2. Determine the cause(s)
  3. Decide what to do about it (state specific performance goals)
  4. Formulate a plan (a change order, which gets scheduled)
  5. Monitor the result

Remember: If it ain't broke, don't fix!

Some Things You Can Tune

You can change some parameters with echo and /proc/sys/* (or for Solaris you can also use rctladm).

Modern systems are almost completely self-tuning.  Change tunable parameters only very reluctantly!  Changing any parameters usually does more harm than good.  Usually the default kernel parameters are fine, and changing them makes performace much worse (or breaks something).  If you wish to tweak the tunable parameters do a Google search first.  A (somewhat dated) starting point is Server Oriented System Tuning Info.  A modern Linux performance tuning guide can be found at access.redhat.com/.../Red_Hat_Enterprise_Linux-7-Performance_Tuning_Guide-en-US.pdf.

Performance is determined by the following:

Process Control

Useful tools: ps, top, w, /proc, signals (kill -l, man 7 signal), kill, killall, nice, renice, lsof, fuser.

Schedule non-time sensitive jobs via cron.

Process resource limits can be controlled with:

   ulimit [-a] [-H]

Where -a = show all limits and -H means show hard limits.

This limits are typically set in the login scripts (or from PAM).