常见的监控CPU的工具基本的就是top mpstat sar vmstat(上下文切换/CPU数目是否够)。再有就是去看/proc/里边的文件信息了,因为里边记录系统运行时刻的东西,牛叉的就是nmon AIX的监控工具。

sar使用请参照:http://www.chinaz.com/server/2013/0401/297942.shtml

top

1
2
3
4
5
top -  10 : 30 : 11  up  46  min,   3  users,  load average:  0.10 1.00 1.00
Tasks: 122  total,  1  running, 120  sleeping, 0  stopped, 1  zombie
Cpus: 0.7 %us, 0.7 %sy, 0.0 %ni, 97.6 %id, 0.0 %wa, 0.7 %hi, 0.3 %si, 0.0 %st 
Mem:1035244k total,537528k used,497716k free,25816k buffers
Swap:0k total,0k used,0k free,351392k cached
1
2
3
4
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                       
   489 root      20   0     0    0    0 S  0.3  0.0   0:03.88 vmmemctl                      
  1385 root      20   0 12780 3596 2748 S  0.3  0.3   0:00.22 sshd                          
  1423 root      20   0  2568 1088  876 R  0.3  0.1   0:00.01 top


输出信息     说明

1
2
3
4
5
6
7
8
10 : 30 : 11      当前时间
up  46  min     系统运行时间
3  users     当前登录用户数,这里是jzhou和root
load average: 0.10 1.00 1.00      系统负载,即任务队列的平均长度。三个数值分别为 1 分钟、 5 分钟、 15 分钟前到现在的平均值,即 0.02 , 0.14 , 0.21
Tasks: 122  total,  1  running, 120  sleeping, 0  stopped, 1  zombie      122 个进程(任务),其中有 2 个处于运行状态, 120 个处于睡眠状态,没有停止的进程,有 1 个僵尸进程
Cpus: 0.7 %us, 0.7 %sy, 0.0 %ni, 97.6 %id, 0.0 %wa, 0.7 %hi, 0.3 %si, 0.0 %st     Cpu运行状态,用户进程(user)占用CPU的 0.7 %,系统进程(system)占用CPU的 0.7 %,用户进程没有改变过优先级的进程,所以user nice值为 0.0 %, 97.6 %的CPU处于空闲状态(idle),没有等待的输入输出,所以iowait的值也为 0.0 %,硬件请求终端时间(hardware interrupt)占CPU的 0.7 %,软终端请求时间占CPU的 0.3 %,st代表steal time,具体作用不是很清楚,网上说是为其它CPU预留的,不清楚
Mem:1035244k total,537528k used,497716k free,25816k buffers     内存总量为1035244k,已使用的内存总量为537528k,497716k为空闲内存总量,25816k用作内核缓存的内存总量。(这是虚拟机的情况,物理机好像还有其它参数)
Swap:0k total,0k used,0k free,351392k cached     交换分区总量为0k,使用的交换分区总量为0k,空闲交换分区总量为0k,351392k为缓冲的交换区总量(cached)、内存中的内容被患处到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

然后看看详细信息部分输出的信息的内容:
输出信息     说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PID     进程标识符
USER     进程所有者用户名
PR/PRI     进程执行的优先级
NI     NICE值,负值表示高优先级,正值表示低优先级
VIRT     进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR     共享内存大小,单位kb
S/STAT     进程状态
                 D:不可中断的睡眠状态
                 R:正在运行,或在队列中的进程
                 S:处于休眠状态
                 T:停止或被追踪
                 Z:僵尸进程
                 W:进入内存交换
                 X:死掉的进程
%CPU     上次更新到现在的CPU时间占用百分比
%MEN     进程使用的物理内存百分比
TIME+     进程使用的CPU时间总计,单位 1 /100s
COMMAND     进程被执行的命令名称

系统平均负载loadavg输出可以理解为每秒钟CPU等待运行的进程个数
系统平均负载被定义为在特定时间间隔内运行队列中的平均任务数。如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用'wait')
- 没有被停止(例如:等待终止)
例如:
# uptime
20:55:40 up 24 days,  3:06,  1 user,  load average: 8.13, 5.90, 4.94

sysstat的安装包是:sysstat-5.0.5-1.i386.rpm,装完了sysstat-5.0.5-1.i386.rpm
后 就会有iostat、mpstat、sar、sa的功能,sysstat-5.0.5-1.i386.rpm

使用yum,如何安装iostat
sysstat 使用yum安装

1
#yum install sysstat

启动sysstat

1
#/etc/init.d/sysstat start

设置sysstat自启动

1
#checkfig sysstat on

MPSTAT
MPSTAT -P ALL 2 3
[root@localhost proc]# mpstat  -P ALL
Linux 2.6.32-431.el6.i686 (localhost.localdomain)       08/12/2016      _i686_  (1 CPU)

10:39:57 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:39:57 AM  all    0.15    0.00    0.42    0.43    0.03    0.12    0.00    0.00   98.84
10:39:57 AM    0    0.15    0.00    0.42    0.43    0.03    0.12    0.00    0.00   98.84
[root@localhost proc]# 

mpstat 是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不 但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍 mpstat与CPU相关的参数,mpstat的语法如下:
mpstat [-P {|ALL}] [internal [count]]
参数的含义如下:
参数 解释

1
2
3
4
5
6
7
8
mpstat -V  显示mpstat版本信息
mpstat -P ALL 显示所有CPU信息
mpstat -P n 显示第n个cup信息,n为数字,计数从 0 开始 
mpstat n m  每个n秒显示一次cpu信息,连续显示m次,最后显示一个平均值
mpstat n    每个n秒显示一次cpu信息,连续显示下去
-P {|ALL} 表示监控哪个CPU, cpu在[ 0 ,cpu个数- 1 ]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用

当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第 一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。与CPU有关的输出的含义如下:
参数 解释 从/proc/stat获得数据
CPU 处理器ID

1
2
3
4
5
6
7
8
user 在internal时间段里,用户态的CPU时间(%) ,不包含 nice值为负 进程 ?usr/?total* 100
nice 在internal时间段里,nice值为负进程的CPU时间(%) ?nice/?total* 100
system 在internal时间段里,核心时间(%) ?system/?total* 100
iowait 在internal时间段里,硬盘IO等待时间(%) ?iowait/?total* 100
irq 在internal时间段里,软中断时间(%) ?irq/?total* 100
soft 在internal时间段里,软中断时间(%) ?softirq/?total* 100
idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%) ?idle/?total* 100
intr/s 在internal时间段里,每秒CPU接收的中断的次数 ?intr/?total* 100