When do you categorize a server to be running into a CPU bottleneck? And how do you go about collecting that information on Windows and other Unix systems? The yard stick that is very commonly used is that if an individual user process is consuming greater than 10% of the CPU then there is a need to investigate further. Also, if the cumulative CPU usage is consistently more than 80%, then this also indicates a CPU bottleneck. If there are no individual processes using a lot of CPU, then you are trying to put too much work on the server, and should upgrade to either faster processors or add more processing power. Here is what you can do to automatically capture this information on different OS:
HP/UX or AIX or Linux or Solaris:
“sar –o <filename> 60 10 >/dev/null 2>&1 &” will sample the CPU activity every minute for 10 minutes and save the output in a file. If you are running into issues, reduce the time-frame for the data collection.
If user+nice+system > 80% for an extended period of time, then you have a CPU bottleneck.
AIX specific:
“vmstat 10 500″ will display system CPU usage every 10 secs. If id=0 or us+sy>80 for an extended period of time, then this indicates that the system is CPU-bound.
Solaris specific:
“top” will show you the top processes by CPU activity
Note: You may have to install SUNWaccu and SUNWaccr packages if sar is not installed.
Windows:
a) Use the task manager and select the processes tab.
b) Then click either the “CPU” column title to sort the processes
A better approach though is to use perfmon (Performance Monitor) and schedule it to collect the data:
c) Type perfmon from the command line (Start/Run and then perfmon and enter)
d) Then click on the “+” symbol and add “%processor time” for each of the processors you have on your system. You can save this as a blg file and then do further analysis on it later on.

