BOoRFGOnZ 发表于 2009-4-28 15:13:06

How do I Find Out Linux CPU Utilization?

Whenever a Linux system CPU is occupied by a process, it isunavailable for processing other requests. Rest of pending requestsmust wait till CPU is free. This becomes a bottleneck in the system.Following command will help you to identify CPU utilization, so thatyou can troubleshoot CPU related performance problems.
Finding CPU utilization is one of the important tasks. Linux comeswith various utilities to report CPU utilization. With these commands,you will be able to find out:
*CPU utilization
*Display the utilization of each CPU individually (SMP cpu)
*Find out your system's average CPU utilization since the last reboot etc
*Determine which process is eating the CPU(s)
Old good top command to find out Linux cpu loadThe top program provides a dynamic real-time view of a runningsystem. It can display system summary information as well as a list oftasks currently being managed by the Linux kernel.
The top command monitors CPU utilization, process statistics, andmemory utilization. The top section contains information related tooverall system status - uptime, load average, process counts, CPUstatus, and utilization statistics for both memory and swap space.
Top command to find out Linux cpu usageType the top command:
$ top
Output:
http://www.cyberciti.biz/nixcraft/vivek/blogger/uploaded_images/linux-cpu-utilization-774971.png
You can see Linux CPU utilization under CPU stats. The task’s shareof the elapsed CPU time since the last screen update, expressed as apercentage of total CPU time. In a true SMP environment (multipleCPUS), top will operate in number of CPUs. Please note that you need totype q key to exit the top command display.
The top command produces a frequently-updated list of processes. Bydefault, the processes are ordered by percentage of CPU usage, withonly the "top" CPU consumers shown. The top command shows how muchprocessing power and memory are being used, as well as otherinformation about the running processes.
Find Linux CPU utilization using mpstat and other toolsPlease note that you need to install special package called sysstatto take advantage of following commands. This package includes systemperformance tools for Linux (Red Hat Linux / RHEL includes these toolsby default).
# apt-get install sysstat
Use up2date command if you are using RHEL:
# up2date sysstat
Display the utilization of each CPU individually using mpstatIf you are using SMP (Multiple CPU) system, use mpstat command todisplay the utilization of each CPU individually. It report processorsrelated statistics. For example, type command:
# mpstat Output:
Linux 2.6.15.4 (debian)         Thursday 06 April 2006

05:13:05ISTCPU   %user   %nice    %sys %iowait    %irq   %soft%steal   %idle    intr/s
05:13:05ISTall   16.52    0.00    2.87    1.09    0.07    0.02    0.00   79.42    830.06The mpstat command display activities for each available processor,processor 0 being the first one. Global average activities among allprocessors are also reported. The mpstat command can be used both onSMP and UP machines, but in the latter, only global average activitieswill be printed.:
# mpstat-P ALL
Output:
Linux 2.6.15.4 (wwwportal1.xxxx.co.in)         Thursday 06 April 2006

05:14:58ISTCPU   %user   %nice    %sys %iowait    %irq   %soft%steal   %idle    intr/s
05:14:58ISTall   16.46    0.00    2.88    1.08    0.07    0.02    0.00   79.48    835.96
05:14:58IST    0   16.46    0.00    2.88    1.08    0.07    0.02    0.00   79.48    835.96
05:14:58IST    1   15.77    2.70    3.17    2.01    0.05    0.03    0.00   81.44    822.54Another output from my HP Dual Opteron 64 bit server:# mpstat -P ALLOutput:
Linux 2.6.5-7.252-smp (ora9.xxx.in)   04/07/06

07:44:18   CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s
07:44:18   all    3.01   57.31    0.36    0.13    0.01    0.00   39.19   1063.46
07:44:18       0    5.87   69.47    0.44    0.05    0.01    0.01   24.16    262.11
07:44:18       1    1.79   48.59    0.36    0.23    0.00    0.00   49.02    268.92
07:44:18       2    2.19   42.63    0.28    0.16    0.01    0.00   54.73    260.96
07:44:18       3    2.17   68.56    0.34    0.06    0.03    0.00   28.83    271.47Report CPU utilization using sar commandYou can display today’s CPU activity, with sar command:
# sar
Output:
Linux 2.6.9-42.0.3.ELsmp (dellbox.xyz.co.in)         01/13/2007

12:00:02 AM       CPU   %user   %nice   %system   %iowait   %idle
12:10:01 AM       all      1.05      0.00      0.28      0.04   98.64
12:20:01 AM       all      0.74      0.00      0.34      0.38   98.54
12:30:02 AM       all      1.09      0.00      0.28      0.10   98.53
12:40:01 AM       all      0.76      0.00      0.21      0.03   99.00
12:50:01 AM       all      1.25      0.00      0.32      0.03   98.40
01:00:01 AM       all      0.80      0.00      0.24      0.03   98.92
...
.....
..
04:40:01 AM       all      8.39      0.00   33.17      0.06   58.38
04:50:01 AM       all      8.68      0.00   37.51      0.04   53.78
05:00:01 AM       all      7.10      0.00   30.48      0.04   62.39
05:10:01 AM       all      8.78      0.00   37.74      0.03   53.44
05:20:02 AM       all      8.30      0.00   35.45      0.06   56.18
Average:          all      3.09      0.00      9.14      0.09   87.68
Comparison of CPU utilizationThe sar command writes to standard output the contents of selectedcumulative activity counters in the operating system. The accountingsystem, based on the values in the count and interval parameters. Forexample display comparison of CPU utilization; 2 seconds apart; 5times, use:
# sar -u 2 5
Output (for each 2 seconds. 5 lines are displayed):
Linux 2.6.9-42.0.3.ELsmp (www1lab2.xyz.ac.in)         01/13/2007

05:33:24 AM       CPU   %user   %nice   %system   %iowait   %idle
05:33:26 AM       all      9.50      0.00   49.00      0.00   41.50
05:33:28 AM       all   16.79      0.00   74.69      0.00      8.52
05:33:30 AM       all   17.21      0.00   80.30      0.00      2.49
05:33:32 AM       all   16.75      0.00   81.00      0.00      2.25
05:33:34 AM       all   14.29      0.00   72.43      0.00   13.28
Average:          all   14.91      0.00   71.49      0.00   13.61Where,
[*]-u12 5 :Report CPU utilization. The following values are displayed:[*]%user: Percentage of CPU utilization that occurred while executing at the user level (application).[*]%nice: Percentage of CPU utilization that occurred while executing at the user level with nice priority.[*]%system:Percentage of CPU utilization that occurred while executing at the system level (kernel).[*]%iowait: Percentage of time that the CPU or CPUs were idle during which the system hadanoutstandingdisk I/O request.[*]%idle: Percentageoftimethat the CPU or CPUs were idle and the system did not have an outstanding disk I/O request.To get multiple samples and multiple reports set an output file forthe sar command. Run the sar command as a background process using.
# sar -o output.file 12 8 >/dev/null 2>&1 &
Better use nohup command so that you can logout and check back report later on:
# nohup sar -o output.file 12 8 >/dev/null 2>&1 &
All data is captured in binary form and saved to a file (data.file).The data can then be selectively displayed ith the sar command usingthe -f option.
# sar -f data.file
Task: Find out who is monopolizing or eating the CPUsFinally, you need to determine which process is monopolizing oreating the CPUs. Following command will displays the top 10 CPU userson the Linux system.
# ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
OR
# ps -eo pcpu,pid,user,args | sort -r -k1 | less
Output:
%CPU   PID USER   COMMAND
962148 vivek    /usr/lib/vmware/bin/vmware-vmx -C /var/lib/vmware/Virtual Machines/Ubuntu 64-bit/Ubuntu 64-bit.vmx -@ ""
0.73358 mysql    /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock
0.4 29129 lighttpd /usr/bin/php
0.4 29128 lighttpd /usr/bin/php
0.4 29127 lighttpd /usr/bin/php
0.4 29126 lighttpd /usr/bin/php
0.22177 vivek   
0.0   9 root   
0.0   8 root   
Now you know vmware-vmx process is eating up lots of CPU power. pscommand displays every process (-e) with a user-defined format (-opcpu). First field is pcpu (cpu utilization). It is sorted in reverseorder to display top 10 CPU eating process.
iostat commandYou can also use iostat command which report Central Processing Unit(CPU) statistics and input/output statistics for devices andpartitions. It can be use to find out your system's average CPUutilization since the last reboot.
# iostatOutput:
Linux 2.6.15.4 (debian)         Thursday 06 April 2006

avg-cpu:%user   %nice %system %iowait%steal   %idle
   16.36    0.00    2.99    1.06    0.00   79.59

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda               0.00         0.00         0.00         16          0
hdb               6.43      85.57       166.74   875340    1705664
hdc               0.03         0.16         0.00       1644          0
sda               0.00         0.00         0.00         24          0 You may want to use following command, which gives you three outputsevery 5 seconds (as previous command gives information since the lastreboot):$ iostat -xtc 5 3
GUI tools for your laptops/desktopsAbove tools/commands are quite useful on remote server. For localsystem with X GUI installed you can try out gnome-system-monitor. Itallows you to view and control the processes running on your system.You can access detailed memory maps, send signals, and terminate theprocesses.
$ gnome-system-monitor
http://www.cyberciti.biz/tips/wp-content/uploads/2007/01/linux-gui-info-2.jpg
(Click to enlarge image)
In addition, the gnome-system-monitor provides an overall view ofthe resource usage on your system, including memory and CPU allocation.
http://www.cyberciti.biz/tips/wp-content/uploads/2007/01/linux-gui-info.jpg
(Click to enlarge image)
Further readings[*]For more information and command option please read man pages of top, iostat, mpstat, sar, ps commands.

jiangtao9999 发表于 2009-4-28 18:14:41

继续 BS

BOoRFGOnZ 发表于 2009-4-29 09:27:18

bs what?

jiangtao9999 发表于 2009-4-29 13:02:17

What I was BSing are too more.
页: [1]
查看完整版本: How do I Find Out Linux CPU Utilization?