QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6691|回复: 3

How do I Find Out Linux CPU Utilization?

[复制链接]
发表于 2009-4-28 15:13:06 | 显示全部楼层 |阅读模式
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:

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:05  IST  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
05:13:05  IST  all   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:58  IST  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
05:14:58  IST  all   16.46    0.00    2.88    1.08    0.07    0.02    0.00   79.48    835.96
05:14:58  IST    0   16.46    0.00    2.88    1.08    0.07    0.02    0.00   79.48    835.96
05:14:58  IST    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,
  • -u  12 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 had  an  outstanding  disk I/O request.
    • %idle: Percentage  of  time  that 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
  96  2148 vivek    /usr/lib/vmware/bin/vmware-vmx -C /var/lib/vmware/Virtual Machines/Ubuntu 64-bit/Ubuntu 64-bit.vmx -@ ""
0.7  3358 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.2  2177 vivek    [vmware-rtc]
0.0     9 root     [kacpid]
0.0     8 root     [khelper]
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

(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.

(Click to enlarge image)
Further readings
  • For more information and command option please read man pages of top, iostat, mpstat, sar, ps commands.
发表于 2009-4-28 18:14:41 | 显示全部楼层
继续 BS
回复

使用道具 举报

 楼主| 发表于 2009-4-29 09:27:18 | 显示全部楼层
bs what?
回复

使用道具 举报

发表于 2009-4-29 13:02:17 | 显示全部楼层
What I was BSing are too more.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 00:32 , Processed in 0.039615 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表