前言:
Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存、CPU、硬盘……)出了问题。在Linux系统中,所有的运行参数保存在虚拟目录/proc中,换句话说,我们使用的性能监控工具取到的数据值实际上就是源自于这个目录,当涉及到系统高估时,我们就可以修改/proc目录中的相关参数了,当然有些是不能乱改的。下面就让我们了解一下这些常用的性能监控工具。
1、uptime
uptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况。
uptime的输出包含一项内容是load average,显示了最近1,5,15分钟的负荷情况。它的值代表等待CPU处理的进程数,如果CPU没有时间处理这些进程,load average值会升高;反之则会降低。
load average的最佳值是1,说明每个进程都可以马上处理并且没有CPU cycles被丢失。对于单CPU的机器,1或者2是可以接受的值;对于多路CPU的机器,load average值可能在8到10之间。
也可以使用uptime命令来判断网络性能。例如,某个网络应用性能很低,通过运行uptime查看服务器的负荷是否很高,如果不是,那么问题应该是网络方面造成的。
以下是uptime的运行实例:

1
2
[root@m01 ~] # uptime
  22:32:41 up 5 min,  1 user,  load average: 0.00, 0.01, 0.01

也可以查看/proc/loadavg和/proc/uptime两个文件,注意不能编辑/proc中的文件,要用cat等命令来查看,如:

1
2
[root@m01 ~] # cat /proc/loadavg
0.00 0.01 0.01 1 /73  1276

2、dmesg
dmesg命令主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。
另外,使用dmesg可以确定您的服务器安装了那些硬件。每次系统重启,系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg命令可以查看该记录。
dmesg输出实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@m01 ~] # dmesg | more
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-1
7) (GCC) )[root@m01 ~] #1 SMP Tue May 10 17:27:01 UTC 2016
Command line: ro root=UUID=f14c0ada-2e81-447f-b679-8ca3b7dd8d00 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFO
NT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
KERNEL supported cpus:
   Intel GenuineIntel
   AMD AuthenticAMD
   Centaur CentaurHauls
Disabled fast string operations
BIOS-provided physical RAM map:
  BIOS-e820: 0000000000000000 - 000000000009ec00 (usable)
  BIOS-e820: 000000000009ec00 - 00000000000a0000 (reserved)
  BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
  BIOS-e820: 0000000000100000 - 000000001fee0000 (usable)
  BIOS-e820: 000000001fee0000 - 000000001feff000 (ACPI data)
  BIOS-e820: 000000001feff000 - 000000001ff00000 (ACPI NVS)
  BIOS-e820: 000000001ff00000 - 0000000020000000 (usable)
  BIOS-e820: 00000000f0000000 - 00000000f8000000 (reserved)
  BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
  BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)
SMBIOS version 2.7 @ 0xF69C0
SMBIOS 2.7 present.
DMI: VMware, Inc. VMware Virtual Platform /440BX  Desktop Reference Platform, BIOS 6.00 07 /02/2015


3、top
top命令显示处理器的活动状况。缺省情况下,显示占用CPU最多的任务,并且每隔5秒钟做一次刷新。
Process priority的数值决定了CPU处理进程的顺序。LIUNX内核会根据需要调整该数值的大小。nice value局限于priority。priority的值不能低于nice value(nice value值越低,优先级越高)。您不可以直接修改Process priority的值,但是可以通过调整nice level值来间接地改变Process priority值,然而这一方法并不是所有时候都可用。如果某个进程运行异常的慢,可以通过降低nice level为该进程分配更多的CPU。
Linux 支持的 nice levels 由19 (优先级低)到-20 (优先级高),缺省值为0。
执行/bin/ps命令可以查看到当前进程的情况。
4、iostat
iostat由Red Hat Enterprise Linux AS发布。同时iostat也是Sysstat的一部分,可以下载到,网址是http://perso.wanadoo.fr/sebastien.godard/
执行iostat命令可以从系统启动之后的CPU平均时间,类似于uptime。除此之外,iostat还对创建一个服务器磁盘子系统的活动报告。该报告包含两部分:CPU使用情况和磁盘使用情况。
iostat显示实例:

1
2
3
4
5
6
7
8
9
[root@m01 ~] # iostat 
Linux 2.6.32-573.el6.x86_64 (linux-node01.xuanwie.com)  08 /25/2017       _x86_64_        (1 CPU)
 
avg-cpu:  %user   % nice  %system %iowait  %steal   %idle
            0.27    0.00    0.80    0.52    0.00   98.41
 
Device:            tps   Blk_read /s    Blk_wrtn /s    Blk_read   Blk_wrtn
scd0              0.00         0.02         0.00        384          0
sda               1.09        34.96        34.90     598242     597096

CPU占用情况包括四块内容:

1
2
3
4
%user:显示user level (applications)时,CPU的占用情况。
% nice :显示user level在 nice  priority时,CPU的占用情况。
%system:显示system level (kernel)时,CPU的占用情况。
%idle: 显示CPU空闲时间所占比例。

磁盘使用报告分成以下几个部分:
Device: 块设备的名字
tps: 该设备每秒I/O传输的次数。多个I/O请求可以组合为一个,每个I/O请求传输的字节数不同,因此可以将多个I/O请求合并为一个。
Blk_read/s, Blk_wrtn/s: 表示从该设备每秒读写的数据块数量。块的大小可以不同,如1024, 2048 或 4048字节,这取决于partition的大小。
例如,执行下列命令获得设备/dev/sda1 的数据块大小:

1
# dumpe2fs -h /dev/sda1|grep "Block size"

输出结果如下

1
2
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096

Blk_read, Blk_wrtn: 指示自从系统启动之后数据块读/写的合计数。
也可以查看这几个文件/proc/stat,/proc/partitions,/proc/diskstats的内容。
5、vmstat
vmstat提供了processes, memory, paging, block I/O, traps和CPU的活动状况

1
2
3
4
[root@m01 ~] # vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
  r  b   swpd    free    buff  cache   si   so    bi    bo    in    cs us sy  id  wa st
  0  0 260852 184824  13640  31424    0   15    17    17   65  129  0  1 98  1  0

一秒钟刷新一次

1
2
3
4
5
6
7
8
9
10
[root@m01 ~] # vmstat -n 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
  r  b   swpd    free    buff  cache   si   so    bi    bo    in    cs us sy  id  wa st
  0  0 260852 184824  13648  31444    0   15    17    17   64  129  0  1 98  1  0
  0  0 260852 184776  13648  31444    0    0     0     0   26   48  0  1 99  0  0
  0  0 260852 184776  13648  31444    0    0     0     0   19   40  0  0 100 0  0
  0  0 260852 184776  13648  31444    0    0     0     0   24   45  0  1 99  0  0
  0  0 260852 184776  13648  31444    0    0     0     4   24   48  0  1 99  0  0
  0  0 260852 184776  13648  31444    0    0     0     0   29   49  0  1 99  0  0
  0  0 260852 184776  13648  31444    0    0     0     0   19   40  0  0 100 0  0

各输出列的含义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Process
– r: The number of processes waiting  for  runtime.
– b: The number of processes  in  uninterruptable  sleep .
Memory
– swpd: The amount of virtual memory used (KB).
–  free : The amount of idle memory (KB).
– buff: The amount of memory used as buffers (KB).
Swap
– si: Amount of memory swapped from the disk (KBps).
– so: Amount of memory swapped to the disk (KBps).
IO
– bi: Blocks sent to a block device (blocks /s ).
– bo: Blocks received from a block device (blocks /s ).
System
–  in : The number of interrupts per second, including the clock.
– cs: The number of context switches per second.
CPU (these are percentages of total CPU  time )
- us: Time spent running non-kernel code (user  time , including  nice  time ).
– sy: Time spent running kernel code (system  time ).
–  id : Time spent idle. Prior to Linux 2.5.41, this included IO-wait  time .
– wa: Time spent waiting  for  IO. Prior to Linux 2.5.41, this appeared as zero.

6、sar (常用)
sar是Red Hat Enterprise Linux AS发行的一个工具,同时也是Sysstat工具集的命令之一,可以从以下网址下载:http://perso.wanadoo.fr/sebastien.godard/
sar用于收集、报告或者保存系统活动信息。sar由三个应用组成:sar显示数据、sar1和sar2用于收集和保存数据。
使用sar1和sar2,系统能够配置成自动抓取信息和日志,以备分析使用。配置举例:在/etc/crontab中添加如下几行内容
同样的,你也可以在命令行方式下使用sar运行实时报告。如图所示:
从收集的信息中,可以得到详细的CPU使用情况(%user, %nice, %system, %idle)、内存页面调度、网络I/O、进程活动、块设备活动、以及interrupts/second

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@m01 ~] # sar
Linux 2.6.32-573.el6.x86_64 (linux-node01.xuanwie.com)  08 /25/2017       _x86_64_        (1 CPU)
 
06:33:09 PM       LINUX RESTART
 
06:40:01 PM     CPU     %user     % nice    %system   %iowait    %steal     %idle
06:50:01 PM     all      0.01      0.00      0.19      0.01      0.00     99.79
07:00:01 PM     all      0.01      0.00      0.19      0.01      0.00     99.79
07:10:01 PM     all      0.01      0.00      0.24      0.12      0.00     99.64
07:20:02 PM     all      0.03      0.08      0.92      4.14      0.00     94.83
07:30:01 PM     all      0.01      0.00      0.44      0.07      0.00     99.48
07:40:01 PM     all      0.01      0.00      0.50      0.06      0.00     99.43
07:50:01 PM     all      0.01      0.00      0.55      0.13      0.00     99.31
08:00:01 PM     all      0.01      0.00      0.49      0.06      0.00     99.45
08:10:01 PM     all      0.01      0.00      0.48      0.08      0.00     99.44
08:20:01 PM     all      0.01      0.00      0.45      0.03      0.00     99.51
08:30:01 PM     all      0.01      0.00      0.47      0.01      0.00     99.52
08:40:02 PM     all      0.01      0.00      0.53      0.04      0.00     99.42
08:50:01 PM     all      0.01      0.00      0.54      0.01      0.00     99.45
09:00:02 PM     all      1.93      0.00      3.26      3.03      0.00     91.79
09:10:01 PM     all      0.01      0.00      0.47      0.09      0.00     99.44
09:20:01 PM     all      0.01      0.00      0.42      0.02      0.00     99.55
09:30:01 PM     all      3.29      0.00      3.83      1.43      0.00     91.45
09:40:01 PM     all      1.11      0.00      1.59      0.09      0.00     97.22
09:50:01 PM     all      0.01      0.00      0.46      0.01      0.00     99.52
10:00:01 PM     all      1.43      0.00      2.05      0.06      0.00     96.45
10:10:01 PM     all      0.06      0.00      0.85      0.21      0.00     98.89
10:20:01 PM     all      0.01      0.00      0.45      0.04      0.00     99.51
10:30:01 PM     all      0.02      0.00      0.49      0.07      0.00     99.43
10:40:01 PM     all      0.00      0.00      0.44      0.02      0.00     99.53
10:50:01 PM     all      0.00      0.00      0.36      0.01      0.00     99.63
11:00:01 PM     all      0.01      0.00      0.46      0.02      0.00     99.52
11:10:01 PM     all      0.01      0.00      0.48      0.10      0.00     99.41
11:20:01 PM     all      0.01      0.00      0.53      0.05      0.00     99.41
 
Average:        CPU     %user     % nice    %system   %iowait    %steal     %idle
Average:        all      0.27      0.00      0.77      0.35      0.00     98.60

检查10次每隔3秒检查一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@m01 ~] # sar -u 3 10
Linux 2.6.32-573.el6.x86_64 (linux-node01.xuanwie.com)  08 /25/2017       _x86_64_        (1 CPU)
 
11:27:54 PM     CPU     %user     % nice    %system   %iowait    %steal     %idle
11:27:57 PM     all      0.00      0.00      1.70      0.00      0.00     98.30
11:28:00 PM     all      0.00      0.00      2.03      0.00      0.00     97.97
11:28:03 PM     all      0.34      0.00      2.71      0.00      0.00     96.95
11:28:06 PM     all      0.00      0.00      1.68      0.00      0.00     98.32
11:28:09 PM     all      0.00      0.00      2.68      0.00      0.00     97.32
11:28:12 PM     all      0.00      0.00      2.03      0.00      0.00     97.97
11:28:15 PM     all      0.00      0.00      1.68      0.00      0.00     98.32
11:28:18 PM     all      0.00      0.00      1.35      0.00      0.00     98.65
11:28:21 PM     all      0.00      0.00      2.73      0.00      0.00     97.27
11:28:24 PM     all      0.00      0.00      2.70      0.34      0.00     96.96
Average:        all      0.03      0.00      2.13      0.03      0.00     97.80

7、KDE System Guard
KDE System Guard (KSysguard) 是KDE图形方式的任务管理和性能监视工具。监视本地及远程客户端/服务器架构体系的中的主机。
8、free
/bin/free命令显示所有空闲的和使用的内存数量,包括swap。同时也包含内核使用的缓存。    

1
2
3
4
5
[root@m01 ~] # free
              total       used        free      shared    buffers     cached
Mem:        486640     302064     184576          8      13668      31444
-/+ buffers /cache :     256952     229688 
Swap:      4194300     260852    3933448

9、Traffic-vis
Traffic-vis是一套测定哪些主机在IP网进行通信、通信的目标主机以及传输的数据量。并输出纯文本、HTML或者GIF格式的报告。
注:Traffic-vis仅仅适用于SUSE LINUX ENTERPRISE SERVER。
如下命令用来收集网口eth0的信息:    

1
traffic-collector -i eth0 -s  /root/output_traffic-collector

可以使用killall命令来控制该进程。如果要将报告写入磁盘,可使用如下命令:    

1
killall -9 traffic-collector

要停止对信息的收集,执行如下命令:killall -9 traffic-collector
注意,不要忘记执行最后一条命令,否则会因为内存占用而影响性能。
可以根据packets, bytes, TCP连接数对输出进行排序,根据每项的总数或者收/发的数量进行。
例如根据主机上packets的收/发数量排序,执行命令:    

1
traffic- sort  -i output_traffic-collector -o output_traffic- sort  -Hp

如要生成HTML格式的报告,显示传输的字节数,packets的记录、全部TCP连接请求和网络中每台服务器的信息,请运行命令:

1
traffic-tohtml -i output_traffic- sort  -o output_traffic-tohtml.html

如要生成GIF格式(600X600)的报告,请运行命令:

1
traffic-togif -i output_traffic- sort  -o output_traffic-togif.gif -x 600 -y 600

GIF格式的报告可以方便地发现网络广播,查看哪台主机在TCP网络中使用IPX/SPX协议并隔离网络,需要记住的是,IPX是基于广播包的协议。如果我们需要查明例如网卡故障或重复IP的问题,需要使用特殊的工具。例如SUSE LINUX Enterprise Server自带的Ethereal。
技巧和提示:使用管道,可以只需执行一条命令来产生报告。如生成HTML的报告,执行命令:

1
cat  output_traffic-collector | traffic- sort  -Hp | traffic-tohtml -o output_traffic-tohtml.html

如要生成GIF文件,执行命令:

1
cat  output_traffic-collector | traffic- sort  -Hp | traffic-togif -o output_traffic-togif.gif -x 600 -y 600


10、pmap
pmap可以报告某个或多个进程的内存使用情况。使用pmap判断主机中哪个进程因占用过多内存导致内存瓶颈。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[root@m01 ~] # pmap 1
1:    /sbin/init
00007fdce51ed000     48K r-x--   /lib64/libnss_files-2 .12.so
00007fdce51f9000   2048K -----   /lib64/libnss_files-2 .12.so
00007fdce53f9000      4K r----   /lib64/libnss_files-2 .12.so
00007fdce53fa000      4K rw---   /lib64/libnss_files-2 .12.so
00007fdce53fb000   1576K r-x--   /lib64/libc-2 .12.so
00007fdce5585000   2048K -----   /lib64/libc-2 .12.so
00007fdce5785000     16K r----   /lib64/libc-2 .12.so
00007fdce5789000      4K rw---   /lib64/libc-2 .12.so
00007fdce578a000     20K rw---    [ anon ]
00007fdce578f000     88K r-x--   /lib64/libgcc_s-4 .4.7-20120601.so.1
00007fdce57a5000   2044K -----   /lib64/libgcc_s-4 .4.7-20120601.so.1
00007fdce59a4000      4K rw---   /lib64/libgcc_s-4 .4.7-20120601.so.1
00007fdce59a5000     28K r-x--   /lib64/librt-2 .12.so
00007fdce59ac000   2044K -----   /lib64/librt-2 .12.so
00007fdce5bab000      4K r----   /lib64/librt-2 .12.so
00007fdce5bac000      4K rw---   /lib64/librt-2 .12.so
00007fdce5bad000     92K r-x--   /lib64/libpthread-2 .12.so
00007fdce5bc4000   2048K -----   /lib64/libpthread-2 .12.so
00007fdce5dc4000      4K r----   /lib64/libpthread-2 .12.so
00007fdce5dc5000      4K rw---   /lib64/libpthread-2 .12.so
00007fdce5dc6000     16K rw---    [ anon ]
00007fdce5dca000    256K r-x--   /lib64/libdbus-1 .so.3.4.0
00007fdce5e0a000   2044K -----   /lib64/libdbus-1 .so.3.4.0
00007fdce6009000      4K r----   /lib64/libdbus-1 .so.3.4.0
00007fdce600a000      4K rw---   /lib64/libdbus-1 .so.3.4.0
00007fdce600b000     36K r-x--   /lib64/libnih-dbus .so.1.0.0
00007fdce6014000   2044K -----   /lib64/libnih-dbus .so.1.0.0
00007fdce6213000      4K r----   /lib64/libnih-dbus .so.1.0.0
00007fdce6214000      4K rw---   /lib64/libnih-dbus .so.1.0.0
00007fdce6215000     96K r-x--   /lib64/libnih .so.1.0.0
00007fdce622d000   2044K -----   /lib64/libnih .so.1.0.0
00007fdce642c000      4K r----   /lib64/libnih .so.1.0.0
00007fdce642d000      4K rw---   /lib64/libnih .so.1.0.0
00007fdce642e000    128K r-x--   /lib64/ld-2 .12.so
00007fdce6636000     20K rw---    [ anon ]
00007fdce664c000      4K rw---    [ anon ]
00007fdce664d000      4K r----   /lib64/ld-2 .12.so
00007fdce664e000      4K rw---   /lib64/ld-2 .12.so
00007fdce664f000      4K rw---    [ anon ]
00007fdce6650000    140K r-x--   /sbin/init
00007fdce6872000      8K r----   /sbin/init
00007fdce6874000      4K rw---   /sbin/init
00007fdce716c000    256K rw---    [ anon ]
00007ffe712b4000     84K rw---    [ stack ]
00007ffe713ea000      4K r-x--    [ anon ]
ffffffffff600000      4K r-x--    [ anon ]
  total            19356K


11、strace
strace截取和记录系统进程调用,以及进程收到的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。

使用该命令需要指明进程的ID(PID),例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@m01 ~] # strace -p 1
Process 1 attached - interrupt to quit
select (11, [10], NULL, NULL, {4, 868510}) = 0 (Timeout)
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(10, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
select (11, [10], NULL, NULL, {5, 0})    = 0 (Timeout)
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(10, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
select (11, [10], NULL, NULL, {5, 0})    = 0 (Timeout)
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(10, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
select (11, [10], NULL, NULL, {5, 0})    = 0 (Timeout)
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
fstat(10, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
stat( "/dev/initctl" , {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
select (11, [10], NULL, NULL, {5, 0}


12、ulimit (常用)
ulimit内置在bash shell中,用来提供对shell和进程可用资源的控制    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@m01 ~] # ulimit
unlimited
[root@m01 ~] # ulimit -a
core  file  size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file  size               (blocks, -f) unlimited
pending signals                 (-i) 1781
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open  files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real- time  priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu  time                (seconds, -t) unlimited
max user processes              (-u) 1781
virtual memory          (kbytes, - v ) unlimited
file  locks                      (-x) unlimited

-H和-S选项指明所给资源的软硬限制。如果超过了软限制,系统管理员会收到警告信息。硬限制指在用户收到超过文件句炳限制的错误信息之前,可以达到的最大值。
例如可以设置对文件句炳的硬限制:ulimit -Hn 4096
例如可以设置对文件句炳的软限制:ulimit -Sn 1024
查看软硬值,执行如下命令:

1
2
ulimit  -Hn
ulimit  -Sn

例如限制Oracle用户. 在/etc/security/limits.conf输入以下行:

1
2
soft nofile 4096
hard nofile 10240

对于Red Hat Enterprise Linux AS,确定文件/etc/pam.d/system-auth包含如下行

1
session required  /lib/security/ $ISA /pam_limits .so

对于SUSE LINUX Enterprise Server,确定文件/etc/pam.d/login 和/etc/pam.d/sshd包含如下行:

1
session required pam_limits.so

这一行使这些限制生效。
13、mpstat
mpstat是Sysstat工具集的一部分,下载地址是http://perso.wanadoo.fr/sebastien.godard/
mpstat用于报告多路CPU主机的每颗CPU活动情况,以及整个主机的CPU情况。
例如,下边的命令可以隔2秒报告一次处理器的活动情况,执行3次    

1
2
3
4
5
6
7
8
[root@m01 ~] # mpstat 2 3
Linux 2.6.32-642.el6.x86_64 (m01)       2016年11月14日  _x86_64_        (1 CPU)
 
22时42分56秒  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest   %idle
22时42分58秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
22时43分00秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
22时43分02秒  all    0.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00   99.00
平均时间:  all    0.00    0.00    0.00    0.33    0.00    0.00    0.00    0.00   99.67


如下命令每隔1秒显示一次多路CPU主机的处理器活动情况,执行3次    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@m01 ~] # mpstat -P ALL 1 3
[root@m01 ~] # mpstat -P ALL 1 3
Linux 2.6.32-642.el6.x86_64 (m01)       2016年11月14日  _x86_64_        (1 CPU)
 
22时51分13秒  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest   %idle
22时51分14秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
22时51分14秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
22时51分14秒  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest   %idle
22时51分15秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
22时51分15秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
22时51分15秒  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest   %idle
22时51分16秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
22时51分16秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
平均时间:  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest   %idle
平均时间:  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00