Linux性能分析之mpstat&iostat&sar&vmstat

安装sysstat rpm包就有iostat、mpstat、sar、sa的功能,rpm –Uvh sysstat*

天水网站建设公司成都创新互联,天水网站设计制作,有大型网站制作公司丰富经验。已为天水上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的天水做网站的公司定做!

mpstat

另一个用于获取 CPU 相关统计信息的有用的命令是 mpstat。下面是一个示例输出:

 

# mpstat -P ALL 5 2

Linux 2.6.9-67.ELsmp (oraclerac1)       12/20/2008

 

10:42:38 PM  CPU  %user   %nice %system %iowait    %irq  %soft   %idle    intr/s

10:42:43 PM  all   6.89    0.00   44.76   0.10    0.10    0.10  48.05   1121.60

10:42:43 PM    0   9.20    0.00   49.00   0.00    0.00    0.20  41.60    413.00

10:42:43 PM    1   4.60    0.00   40.60   0.00    0.20    0.20  54.60    708.40

 

10:42:43 PM  CPU  %user   %nice %system %iowait    %irq  %soft   %idle    intr/s

10:42:48 PM  all   7.60    0.00   45.30   0.30    0.00    0.10  46.70   1195.01

10:42:48 PM    0   4.19    0.00    2.20   0.40    0.00    0.00  93.21   1034.53

10:42:48 PM    1  10.78    0.00   88.22   0.40    0.00    0.00   0.20    160.48

 

Average:     CPU  %user   %nice %system %iowait    %irq  %soft   %idle    intr/s

Average:     all   7.25    0.00   45.03   0.20    0.05    0.10  47.38   1158.34

Average:       0   6.69    0.00   25.57   0.20    0.00    0.10  67.43    724.08

Average:       1   7.69    0.00   64.44   0.20    0.10    0.10  27.37    434.17

 

它显示了系统中 CPU 的各种统计信息。–P ALL 选项指示该命令显示所有 CPU 的统计信息,而不只是特定 CPU 的统计信息。参数 5 2 指示该命令每隔 5 秒运行一次,共运行 2次。以上输出首先显示了所有 CPU 的合计指标,然后显示了每个 CPU 各自的指标。最后,在结尾处显示所有 CPU 的平均值。

 

让我们看一看这些列值的含义:

 

%user    表示处理用户进程所使用 CPU 的百分比。用户进程是用于应用程序(如 Oracle 数据库)的非内核进程。在本示例输出中,用户 CPU 百分比非常低。

%nice    表示使用 nice 命令对进程进行降级时 CPU 的百分比。在之前的部分中已经对 nice 命令进行了介绍。简单来说,nice 命令更改进程的优先级。

%system  表示内核进程使用的 CPU 百分比

%iowait  表示等待进行 I/O 所使用的 CPU 时间百分比

%irq     表示用于处理系统中断的 CPU 百分比

%soft    表示用于软件中断的 CPU 百分比

%idle    显示 CPU 的空闲时间

%intr/s   显示每秒 CPU 接收的中断总数

当您拥有前面所述的 vmstat 时,您可能想知道 mpstat 命令的作用。差别很大:mpstat 可以显示每个处理器的统计,而vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。

针对 Oracle 用户的用法   与 vmstat 相似,mpstat 命令还产生与 CPU 有关的统计信息,因此所有与CPU 问题有关的讨论也都适用于 mpstat。

当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,您知道在当前负载下 I/O 子系统出现了某些问题。该信息对于解决 Oracle 数据库性能问题非常方便。

sar

Sar以下命令都可以interval count参数

[root@daidai ~]# sar -u 2 2

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

11:14:10 AM       CPU    %user     %nice   %system  %iowait    %steal     %idle

11:14:12 AM       all     0.25      0.00      0.00     0.25      0.00     99.49

11:14:14 AM       all     0.00      0.50      0.76     0.00      0.00     98.74

Average:          all      0.13     0.25      0.38      0.13     0.00     99.12

CPU    all 表示统计信息为所有 CPU 的平均值。

%user   显示在用户级别(application)运行使用 CPU 总时间的百分比。

%nice   显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

%system 在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。

%steal  管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

%idle   显示 CPU 空闲时间占用 CPU 总时间的百分比。

tips:

若 %iowait 的值过高,表示硬盘存在I/O瓶颈

若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

[root@daidai ~]# sar -b 2 3

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

11:31:08 AM       tps     rtps      wtps   bread/s  bwrtn/s

11:31:10 AM      3.03     0.00      3.03      0.00   129.29

11:31:12 AM      3.03     0.00      3.03      0.00    64.65

11:31:14 AM      3.05     0.00      3.05      0.00    64.97

Average:         3.04      0.00     3.04      0.00     86.34

tps    每秒钟物理设备的 I/O 传输总量

rtps   每秒钟从物理设备读入的数据总量

wtps   每秒钟向物理设备写入的数据总量

bread/s 每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s 每秒钟向物理设备写入的数据量,单位为 块/s

[root@daidai ~]# sar -c

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

09:50:01 AM    proc/s

10:00:01 AM      0.38

10:10:01 AM      0.30

10:20:01 AM      0.30

10:30:01 AM      0.45

10:40:01 AM      0.30

11:20:01 AM      0.79

11:30:01 AM      0.28

Average:         0.43

每秒钟创建的进程数

[root@daidai ~]# sar -n DEV 1 2

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

11:39:34 AM     IFACE  rxpck/s   txpck/s   rxbyt/s  txbyt/s   rxcmp/s   txcmp/s rxmcst/s

11:39:35 AM        lo     0.00      0.00      0.00     0.00      0.00      0.00     0.00

11:39:35 AM      eth0     0.00      0.00      0.00     0.00      0.00      0.00     0.00

11:39:35 AM      sit0     0.00      0.00      0.00     0.00      0.00      0.00     0.00

 

11:39:35 AM     IFACE  rxpck/s   txpck/s   rxbyt/s  txbyt/s   rxcmp/s   txcmp/s rxmcst/s

11:39:36 AM        lo     2.04      2.04    102.04   102.04      0.00      0.00     0.00

11:39:36 AM      eth0     3.06      5.10    183.67   867.35      0.00      0.00     0.00

11:39:36 AM      sit0     0.00      0.00      0.00     0.00      0.00      0.00     0.00

 

Average:        IFACE  rxpck/s   txpck/s   rxbyt/s  txbyt/s   rxcmp/s   txcmp/s rxmcst/s

Average:           lo      1.02     1.02     50.76     50.76     0.00      0.00      0.00

Average:         eth0      1.52     2.54     91.37    431.47     0.00      0.00      0.00

Average:         sit0      0.00     0.00      0.00      0.00     0.00      0.00      0.00

IFACE      网络设备名

rxpck/s    每秒接收的包总数

txpck/s    每秒传输的包总数

rxbyt/s    每秒接收的字节(byte)总数

txbyt/s    每秒传输的字节(byte)总数

rxcmp/s    每秒接收压缩包的总数

txcmp/s   每秒传输压缩包的总数

rxmcst/s   每秒接收的多播(multicast)包的总数

[root@daidai ~]# sar -q 1 3

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

11:42:54 AM   runq-sz plist-sz   ldavg-1   ldavg-5 ldavg-15

11:42:55 AM         0      184      0.02      0.02     0.00

11:42:56 AM         0      184      0.02      0.02     0.00

11:42:57 AM         0      184      0.02      0.02     0.00

Average:            0       184     0.02      0.02      0.00

runq-sz  运行队列的长度(等待运行的进程数)

plist-sz   进程列表中进程(processes)和线程(threads)的数量

ldavg-1  最后1分钟的系统平均负载(System load average)

ldavg-5  过去5分钟的系统平均负载

ldavg-15  过去15分钟的系统平均负载

[root@daidai ~]# sar -r

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

09:50:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused kbswpcad

10:00:01 AM   1067600  3869580     78.38    195616  3249408  10482404         0     0.00         0

10:10:01 AM   1068624  3868556     78.36    195616  3249500  10482404         0     0.00         0

10:20:01 AM   1069492  3867688     78.34    195616  3249572  10482404         0     0.00         0

10:30:01 AM   1079024  3858156     78.14    195616  3249588  10482404         0     0.00         0

10:40:01 AM   1079676  3857504     78.13    195616  3249616  10482404         0     0.00         0

11:20:01 AM   1083792  3853388     78.05    195616  3249952  10482404         0     0.00         0

11:30:01 AM   1083420  3853760     78.06    195616  3249984  10482404         0     0.00         0

11:40:01 AM   1084164  3853016     78.04    195616  3250008  10482404         0     0.00         0

Average:      1076974  3860206     78.19    195616  3249704  10482404         0     0.00         0

kbmemfree   Amountof free memory available in kilobytes.

kbmemused  Amount of used memory in kilobytes. This doesnot take into account memory used by the kernel itself.

%memused   Percentage of used memory.

kbbuffers     Amount of memory used as buffers by thekernel in kilobytes.

kbcached     Amount of memory used to cache data by thekernel in kilobytes.

kbswpfree    Amount of free swap space in kilobytes.

kbswpused    Amount of used swap space in kilobytes.

%swpused    Percentage of used swap space.

kbswpcad     Amount of cached swap memory inkilobytes.  This is memory that once was swappedout, is swapped back in but still also is in the swap area (if memory is neededit doesn’t need to be swapped out again because it is already in the swap area.This saves I/O).

iostat

[root@daidai ~]# iostat 1 3

Linux 2.6.18-194.el5 (daidai.com)       06/20/2016

 

avg-cpu: %user   %nice %system %iowait  %steal  %idle

           0.23    0.02   0.43    0.11    0.00  99.22

 

Device:            tps   Blk_read/s  Blk_wrtn/s   Blk_read   Blk_wrtn

sda               3.15        15.25        60.92   3462295   13828032

sda1              3.15        15.24        60.92   3460258   13828032

sda2              0.00         0.01         0.00       1613          0

sr0               0.00         0.01         0.00       1644          0

 

avg-cpu: %user   %nice %system %iowait  %steal  %idle

           0.51    0.00   0.51    0.00    0.00  98.98

 

Device:            tps   Blk_read/s  Blk_wrtn/s   Blk_read   Blk_wrtn

sda               0.00         0.00         0.00          0          0

sda1              0.00         0.00        0.00          0          0

sda2              0.00         0.00         0.00          0          0

sr0               0.00         0.00         0.00          0          0

 

avg-cpu: %user   %nice %system %iowait  %steal  %idle

           0.00    0.00   0.51    0.00    0.00  99.49

 

Device:            tps   Blk_read/s  Blk_wrtn/s   Blk_read   Blk_wrtn

sda               3.00         0.00        64.00          0         64

sda1              3.00         0.00        64.00          0         64

sda2              0.00         0.00         0.00          0          0

sr0               0.00         0.00         0.00          0          0

vmstat

[root@daidai ~]# vmstat 1 5

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      0 1083368 1957003250136    0    0    4    16   24  41  0  0 99 0  0

 0 0      0 1083368 1957003250136    0    0    0    40  998 205  1  1 99 0  0

 0  0      0 1083368 195700 3250136    0   0     0    32 998  221  0  298  1 0

 0 0      0 1089088 1957003250136    0    0    0     0  998 218  0  1 99 0  0

 0 0      0 1089088 1957003250136    0    0    0     0 1004  191 0  0 100  0  0

Procs

r: The number of processes waiting forrun time.

b: The number of processes inuninterruptible sleep.

 

Memory

swpd: the amount of virtual memory used.

free: the amount of idle memory.

buff: the amount of memory used asbuffers.

cache: the amount of memory used ascache.

inact: the amount of inactive memory.(-a option)

active: the amount of active memory. (-aoption)

 

Swap

si: Amount of memory swapped in fromdisk (/s).

so: Amount of memory swapped to disk(/s).

 

IO

bi: Blocks received from a block device (blocks/s).

bo: Blocks sent to a block device(blocks/s).

 

System

in: The number of interrupts per second,including the clock.

cs: The number of context switches persecond.

 

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 Linux2.5.41, this includes IO-wait time.

wa: Time spent waiting for IO. Prior toLinux 2.5.41, included in idle.

st: Time stolen from a virtual machine.Prior to Linux 2.6.11, unknown.


标题名称:Linux性能分析之mpstat&iostat&sar&vmstat
文章链接:http://scyanting.com/article/jshiji.html