目录

​sysstat 工具简介​

​包含的工具​

​安装​

​sar 的累计统计​

​sar​

​sar 的命令格式​

​sar 使用举例​

​iostat​

​iostat 的命令格式​

​iostat 使用举例​

​iostat 的输出项说明​

​mpstat​

​mpstat 的命令格式​

​mpstat 使用举例​

​mpstat 输出项说明​



sysstat 工具简介

Linux Sysstat是linux系统免费提供用于收集主机性能的一个软件包,不是默认安装的,需要自己安装。

sysstat 是 

Linux 系统中的常用工具包。它的主要用途是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。

sysstat 工具包中包含两类工具:

即时查看工具:iostat、mpstat、sar

累计统计工具:sar

也就是说,sar 具有这两种功能。因此,sar 是 sysstat 中的核心工具。

包含的工具

  • iostat

输出CPU的统计信息和所有I/O设备的输入输出(I/O)统计信息

  • mpstat

关于CPU的详细信息(单独输出或者分组输出)

  • pidstat

关于运行中的进程/任务、CPU、内存等的统计信息

  • sar

保存并输出不同系统资源(CPU、内存、IO、网络、内核等)的详细信息

  • sadc

系统活动数据收集器,用于收集sar工具的后端数据

  • sa1

系统收集并存储sadc数据文件的二进制数据,与sadc工具配合使用

  • sa2

配合sar工具使用,产生每日的摘要报告

  • sadf

用于以不同的数据格式(CVS或者XML)来格式化sar工具的输出

  • sysstat

sysstat 工具包的 man 帮助页面。

  • nfsiostat

NFS(Network File System)的I/O统计信息

  • cifsiostat

CIFS(Co

安装

  • CentOS
    通过yum安装:
    yum install sysstat
    或者通过rpm包安装:
    wget -c http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm sudo rpm -Uvh sysstat-11.7.3-1.x86_64.rpm
    推荐rpm包方式安装,因为能随时安装最新版本。
  • Ubuntu
    apt-get install sysstat

查看是否成功安装:

mpstat -V
sysstat version 9.0.4
(C) Sebastien Godard (sysstat <at> orange.fr)

sar 的累计统计

为了实现 sar 的累计统计,系统必须周期地记录当时的信息,这是通过调用 /usr/lib/

sa/ 中的三个工具实现的:

  • sa1 :收集并存储每天系统动态信息到一个二进制的文件中,用作 sadc 的前端程序
  • sa2 :收集每天的系统活跃信息写入总结性的报告,用作 sar 的前端程序
  • sadc :系统动态数据收集工具,收集的数据被写入一个二进制的文件中,它被用作 sar 工具的后端

定时统计任务

如果是用​​yum​​或​​apt-get​​方式安装,默认已经在​​/etc/cron.d/sysstat​​中配置好了计划日志;如果是编译安装或没有,可以手动配置,内容大致如下:

# Run system activity accounting tool every 10 minutes

*/10 * * * * root  /usr/lib64/sa/sa1 1 1

# 0 * * * *  root  /usr/lib64/sa/sa1 600 6 &

# Generate a daily summary of process accounting at 23:53

53 23 * * * root  /usr/lib64/sa/sa2 -A

(红色部分改为sa1和sa2实际所在地址,用yum和apt-get安装sysstat后可以用命令 man sa1和man sa2 或find / -name sa1可以查看其所在的实际地址)

统计的日志文件会存放在​​/var/log/sa​​这个目录下。每10分钟就进行一次日志的记录,在23:53对一天的日志进行汇总。

改为1分钟一次:*/1  * * * * root /usr/lib64/sa/sa1 1 1

  • ​/usr/lib64/sa/sa1​​是一个可以使用 cron 进行调度生成二进制日志文件的 shell 脚本
  • ​/usr/lib64/sa/sa2​​是一个可以将二进制日志文件转换为用户可读的编码方式的 shell 脚本

可能会碰到的问题:

安装后首次执行​​sar​​会报如下错误:

(看到在这:/var/log/sysstat/--------------------------------------------------sar log存放目录)

无法打开 /var/log/sa/sa25: 没有那个文件或目录

原因是安装完​​sysstat​​后,定时任务还没生成那个文件。此处的 25 指的是日期。可以手动生成文件:

(在守护进程 /etc/rc.d/init.d/sysstat 中使用 ​​/usr/lib/sa/sadc -F -L -​​ 命令创建当日记录文件,文件为 ​​/
var/
log/sa/saDD​
​,其中 DD 为当天的日期。)

sudo sar -o 5  #每5秒记录一条信息,生成当日文件saDD

sar

在使用 Linux 系统时,常常会遇到各种各样的问题,比如系统容易死机或者运行速度突然变慢,这时我们常常猜测:是否硬盘空间不足,是否内存不足,是否 I/O 出现瓶颈,还是系统的核心参数出了问题?这时,我们应该考虑使用 sar 工具对系统做一个全面了解,分析系统的负载状况。

sar(System Activity Reporter)是系统活动情况报告的缩写。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。为了提供不同的信息,sar 提供了丰富的选项、因此使用较为复杂。

sar 的命令格式

sar 的命令格式为:

sar  [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ]
[ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]
[ -o [ filename ] | -f [ filename ] ]
[ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
[ interval [ count ] ]

其中:

  • interval : 为取样时间间隔
  • count : 为输出次数,若省略此项,默认值为 1

常用选项:

选项

说明

-A

等价于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL

-b

显示I/O和传送速率的统计信息

-B

输出内存页面的统计信息

-c

输出进程统计信息,每秒创建的进程数

-d

输出每一个块设备的活动信息

-i interval

指定间隔时长,单位为秒

-p

显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np

-q

输出进程队列长度和平均负载状态统计信息

-r

输出内存和交换空间的统计信息

-R

输出内存页面的统计信息

-t

读取 /var/log/sa/saDD 的数据时显示其中记录的原始时间,如果没有这个参数使用用户的本地时间

-u

输出CPU使用情况的统计信息

-v

输出inode、文件和其他内核表的统计信息

-V

输出版本号信息

-w

输出系统交换活动信息

-W

输出系统交换的统计信息

-y

输出TTY设备的活动信息

-n {DEV|EDEV|NFS|NFSD|SOCK|ALL}

分析输出网络设备状态统计信息。

DEV

报告网络设备的统计信息

EDEV

报告网络设备的错误统计信息

NFS

报告 NFS 客户端的活动统计信息

NFSD

报告 NFS 服务器的活动统计信息

SOCK

报告网络套接字(sockets)的使用统计信息

ALL

报告所有类型的网络活动统计信息

-x {pid|SELF|ALL}

输出指定进程的统计信息。

pid

用 pid 指定特定的进程

SELF

表示 sar 自身

ALL

表示所有进程

-X {pid|SELF|ALL}

输出指定进程的子进程的统计信息

-I {irq|SUM|ALL|XALL}

输出指定中断的统计信息。

irq

指定中断号

SUM

指定输出每秒接收到的中断总数

ALL

指定输出前16个中断

XALL

指定输出全部的中断信息

-P {cpu|ALL}

输出指定 CPU 的统计信息

-o filename

将输出信息保存到文件 filename

-f filename

从文件 filename 读取数据信息。filename 是使用-o 选项时生成的文件。

-s hh:mm:ss

指定输出统计数据的起始时间

-e hh:mm:ss

指定输出统计数据的截至时间,默认为18:00:00

sar 使用举例

从 /var/log/sa/saDD 中读取累计统计信息

1、输出CPU使用情况的统计信息

[root@cnetos5 ~]# sar
[root@cnetos5 ~]# sar -u
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM CPU %user %nice %system %iowait %steal %idle
12:10:01 AM all 0.02 0.00 0.14 0.01 0.00 99.84
12:20:01 AM all 0.02 0.00 0.12 0.01 0.00 99.86
12:30:01 AM all 0.01 0.00 0.12 0.01 0.00 99.86
Average: all 0.03 0.00 0.13 0.01 0.00 99.84

输出项说明:

CPU

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

%user

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

%nice

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

%system

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

%iowait

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

%steal

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

%idle

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

  1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
  2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
  3. 若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

2、显示I/O和传送速率的统计信息

[root@cnetos5 ~]# sar -b
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM tps rtps wtps bread/s bwrtn/s
12:10:01 AM 1.58 0.00 1.58 0.00 16.71
12:20:01 AM 1.09 0.00 1.09 0.00 10.85
12:30:01 AM 1.08 0.00 1.08 0.00 10.74
Average: 1.24 0.00 1.24 0.00 12.70

输出项说明:

tps

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

rtps

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

wtps

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

bread/s

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

bwrtn/s

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

3、输出内存页面的统计信息

[root@cnetos5 ~]# sar -B
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM pgpgin/s pgpgout/s fault/s majflt/s
12:10:01 AM 0.00 4.17 9.74 0.00
12:20:01 AM 0.00 2.71 2.24 0.00
12:30:01 AM 0.00 2.69 2.25 0.00
Average: 0.00 3.17 4.07 0.00

输出项说明:

pgpgin/s

每秒钟从磁盘读入的系统页面的 KB 总数

pgpgout/s

每秒钟向磁盘写出的系统页面的 KB 总数

fault/s

系统每秒产生的页面失效(major + minor)数量

majflt/s

系统每秒产生的页面失效(major)数量

4、输出每秒创建的进程数的进程统计信息

[root@cnetos5 ~]# sar -c
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM proc/s
12:10:01 AM 0.05
12:20:01 AM 0.03
12:30:01 AM 0.03
Average: 0.03

输出项说明:

proc/s

每秒钟创建的进程数

5、输出网络设备状态的统计信息

[root@cnetos5 ~]# sar -n DEV |grep eth0
12:00:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
12:10:01 AM eth0 0.59 0.92 41.57 893.98 0.00 0.00 0.00
12:20:01 AM eth0 0.55 0.88 37.50 859.56 0.00 0.00 0.00
12:30:01 AM eth0 0.55 0.86 38.17 871.98 0.00 0.00 0.00
Average: eth0 0.29 0.42 21.05 379.29 0.00 0.00 0.00

输出项说明:

IFACE

网络设备名

rxpck/s

每秒接收的包总数

txpck/s

每秒传输的包总数

rxbyt/s

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

txbyt/s

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

rxcmp/s

每秒接收压缩包的总数

txcmp/s

每秒传输压缩包的总数

rxmcst/s

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

6、输出网络设备状态的统计信息(查看网络设备故障)

[root@cnetos5 ~]# sar -n EDEV |egrep 'eth0|IFACE'
12:00:01 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
12:10:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

输出项说明:

IFACE

网络设备名

rxerr/s

每秒接收的坏包总数

txerr/s

传输包时每秒发生错误的总数

coll/s

传输包时每秒发生冲突(collision)的总数

rxdrop/s

接收包时,由于缺乏缓存,每秒丢弃(drop)包的数量

txdrop/s

传输包时,由于缺乏缓存,每秒丢弃(drop)包的数量

txcarr/s

传输包时,每秒发生的传输错误(carrier-error)的数量

rxfram/s

接收包时,每秒发生帧校验错误(frame alignment error)的数量

rxfifo/s

接收包时,每秒发生队列(FIFO)一出错误的数量

txfifo/s

传输包时,每秒发生队列(FIFO)一出错误的数量

7、输出进程队列长度和平均负载状态统计信息

[root@cnetos5 ~]# sar -q
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
12:10:01 AM 0 85 0.02 0.01 0.00
12:20:01 AM 0 85 0.01 0.00 0.00
12:30:01 AM 0 85 0.03 0.01 0.00
Average: 0 85 0.01 0.00 0.00

输出项说明:

runq-sz

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

plist-sz

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

ldavg-1

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

ldavg-5

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

ldavg-15

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

8、输出内存和交换空间的统计信息

[root@cnetos5 ~]# sar -r
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
12:10:01 AM 262068 253408 49.16 43884 156456 1048568 0 0.00 0
12:20:01 AM 261572 253904 49.26 44580 156448 1048568 0 0.00 0
12:30:01 AM 260704 254772 49.42 45124 156472 1048568 0 0.00 0
Average: 259551 255925 49.65 46453 156470 1048568 0 0.00 0

输出项说明:

kbmemfree

可用的空闲内存数量,单位为 KB

kbmemused

已使用的内存数量(不包含内核使用的内存),单位为 KB

%memused

已使用内存的百分数

kbbuffers

内核缓冲区(buffer)使用的内存数量,单位为 KB

kbcached

内核高速缓存(cache)数据使用的内存数量,单位为 KB

kbswpfree

可用的空闲交换空间数量,单位为 KB

kbswpused

已使用的交换空间数量,单位为 KB

%swpused

已使用交换空间的百分数

kbswpcad

交换空间的高速缓存使用的内存数量

9、输出内存页面的统计信息

[root@cnetos5 ~]# sar -R
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM frmpg/s bufpg/s campg/s
12:10:01 AM -0.10 0.23 0.01
12:20:01 AM -0.21 0.29 -0.00
12:30:01 AM -0.36 0.23 0.01
Average: -0.21 0.22 0.00

输出项说明:

frmpg/s

每秒系统中空闲的内存页面(memory page freed)数量

bufpg/s

每秒系统中用作缓冲区(buffer)的附加内存页面(additional memory page)数量

campg/s

每秒系统中高速缓存的附加内存页面(additional memory pages cached)数量

10、输出inode、文件和其他内核表的信息

[root@cnetos5 ~]# sar -v
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz
12:10:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
12:20:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
12:30:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
Average: 7253 589 5125 0 0.00 0 0.00 0 0.00

输出项说明:

dentunusd

目录高速缓存中未被使用的条目数量

file-sz

文件句柄(file handle)的使用数量

inode-sz

i节点句柄(inode handle)的使用数量

super-sz

由内核分配的超级块句柄(super block handle)数量

%super-sz

已分配的超级块句柄占总超级块句柄的百分比

dquot-sz

已经分配的磁盘限额条目数量

%dquot-sz

分配的磁盘限额条目数量占总磁盘限额条目的百分比

rtsig-sz

已排队的 RT 信号的数量

%rtsig-sz

已排队的 RT 信号占总 RT 信号的百分比

11、输出系统交换活动信息

[root@cnetos5 ~]# sar -w
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM cswch/s
12:10:01 AM 44.74
12:20:01 AM 44.41
12:30:01 AM 44.41
Average: 44.50

输出项说明:

cswch/s

每秒的系统上下文切换数量

12、 输出系统交换的统计信息

[root@cnetos5 ~]# sar -W
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.00 0.00
12:20:01 AM 0.00 0.00
12:30:01 AM 0.00 0.00
Average: 0.00 0.00

输出项说明:

pswpin/s

每秒系统换入的交换页面(swap page)数量

pswpout/s

每秒系统换出的交换页面(swap page)数量

13、输出TTY设备的活动信息

[root@cnetos5 ~]# sar -y
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

12:00:01 AM TTY rcvin/s xmtin/s framerr/s prtyerr/s brk/s ovrun/s
12:10:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
………………
Average: 0 0.00 0.00 0.00 0.00 0.00 0.00
Average: 1 0.00 0.00 0.00 0.00 0.00 0.00

输出项说明:

TTY

TTY 串行设备号

rcvin/s

每秒接收的中断数量

xmtin/s

每秒传送的中断数量

framerr/s

每秒发生的帧错误数(frame error)量

prtyerr/s

每秒发生的奇偶校验错误(parity error)数量

brk/s

每秒发生的暂停(break)数量

ovrun/s

每秒发生的溢出错误(overrun error)数量

14、显示全面的累计统计信息

# sar -A

15、默认配置不提供的累计统计信息

[root@cnetos5 ~]# sar -d
Requested activities not available in file
[root@cnetos5 ~]# sar -x ALL
Requested activities not available in file
[root@cnetos5 ~]# sar -X ALL
Requested activities not available in file

  1. 默认情况下,为了防止统计数据文件 /var/log/sa/saDD 迅速增大,/usr/lib/sa/sadc 没有记录每个块设备的统计信息。
  2. 可以在 -d -x -X 参数后添加取样参数获得即时统计信息。
  3. 带有 -x -X 选项的 sar 命令从来不能记录到二进制统计数据文件 。

查看即时统计信息

1、使用取样选项查看即时统计信息

例如:每30秒取样一次,连续取样5次

# sar -n DEV 30 5
# sar -u 30 5

2、输出和读取统计信息文件

例如:

# sar -u  30 5 -o sar-dump-001
# sar -u -f sar-dump-001

3、输出每一个块设备的活动信息

# sar -dp 5 2
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

07:12:11 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:12:16 AM sda 0.40 0.00 17.56 44.00 0.00 1.00 1.00 0.04
07:12:16 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

07:12:16 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:12:21 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:12:21 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 0.20 0.00 8.78 44.00 0.00 1.00 1.00 0.02
Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

输出项说明:

DEV

正在监视的块设备

tps

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

rd_sec/s

每秒从设备读取的扇区(sector)数量

wr_sec/s

每秒向设备写入的扇区(sector)数量

avgrq-sz

发给设备请求的平均扇区数

avgqu-sz

发给设备请求的平均队列长度

await

设备 I/O 请求的平均等待时间(单位为毫秒)

svctm

设备 I/O 请求的平均服务时间(单位为毫秒)

%util

在 I/O 请求发送到设备期间,占用 CPU 时间的百分比。用于体现设备的带宽利用率。

  1. avgqu-sz 的值较低时,设备的利用率较高。
  2. 当 %util 的值接近 100% 时,表示设备带宽已经占满。

要判断一个系统瓶颈问题,有时需要几个 sar 命令选项结合起来使用,例如:

  • 怀疑CPU存在瓶颈,可用 sar -u 和 sar -q deng 等来查看
  • 怀疑内存存在瓶颈,可用 sar -Bsar -r 和 sar -W 等来查看
  • 怀疑I/O存在瓶颈,可用 ​​sar -b​​、​​sar -u​​ 和 ​​sar -d​​ 等来查看iostat iostat 的命令格式 iostat 用于输出CPU和磁盘I/O相关的统计信息。命令格式为:iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ] 其中:
  • interval : 为取样时间间隔
  • count : 为输出次数,若指定了取样时间间隔且省略此项,将不断产生统计信息
  • 常用选项:
选项说明-c仅显示CPU统计信息。与-d选项互斥。-d仅显示磁盘统计信息。与-c选项互斥。-k以KB为单位显示每秒的磁盘请求数。默认单位块。-m以MB为单位显示每秒的磁盘请求数。默认单位块。-p {device|ALL}用于显示块设备及系统分区的统计信息。与-x选项互斥。-t在输出数据时,打印搜集数据的时间。-V打印版本号信息。-x输出扩展信息。
  • iostat 使用举例
  • 下面给出几个例子:
    # 显示一条包括所有的CPU和设备吞吐率的统计信息# iostat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 1.44 16.79 10.58 800430 504340 sdb 0.01 0.07 0.00 3314 8 sdc 0.86 8.56 0.00 407892 24 # 每隔5秒显示一次设备吞吐率的统计信息(单位为 块/s) iostat -d 5 # 每隔5秒显示一次设备吞吐率的统计信息(单位为 KB/s),共输出3次 iostat -dk 5 3 # 每隔2秒显示一次 sda 及上面所有分区的统计信息,共输出5次 iostat -p sda 2 5 # 每隔2秒显示一次 sda 和 sdb 两个设备的扩展统计信息,共输出6次 iostat -x sda sdb 2 6 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.17 0.84 0.96 0.47 16.67 10.56 19.01 0.01 7.11 1.25 0.18 sdb 0.00 0.00 0.01 0.00 0.07 0.00 5.16 0.00 0.22 0.19 0.00 ………… >iostat -t 5 -x > iostat.out -t是输出时间和日期,5是代表5秒一次,-x是详细情况都输出 主要查看cpu的idle和磁盘的util

    iostat 的输出项说明

rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并

wrqm/s: 每秒对该设备的写请求被合并次数

r/s: 每秒完成的读次数

w/s: 每秒完成的写次数

rkB/s: 每秒读数据量(kB为单位)

wkB/s: 每秒写数据量(kB为单位)

avgrq-sz:平均每次IO操作的数据量(扇区数为单位)

avgqu-sz: 平均等待处理的IO请求队列长度

await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

svctm: 平均每次IO请求的处理时间(毫秒为单位)

%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

 

对于以上示例输出,我们可以获取到以下信息:

每秒向磁盘上写30M左右数据(wkB/s值)

每秒有91次IO操作(r/s+w/s),其中以写操作为主体

平均每次IO请求等待处理的时间为120.57毫秒,处理耗时为6.33毫秒

等待处理的IO请求队列中,平均有11.79个请求驻留

 

以上各值之间也存在联系,我们可以由一些值计算出其他数值,例如:

util = (r/s+w/s) * (svctm/1000)

对于上面的例子有:util = (1+90)*(6.33/1000) = 0.57603

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);

wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

r/s: 该设备的每秒完成的读请求数(merge合并之后的)

w/s:  该设备的每秒完成的写请求数(merge合并之后的)

rKB/s:每秒发送给该设备的总读请求数 #rMB/s

wKB/s:每秒发送给该设备的总写请求数 #wMB/s

avgrq-sz 平均请求扇区的大小

avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。  

await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

r_await:读IO的响应时间

w_await:写IO的响应时间

svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,

则表示I/O队列等待太长,系统上运行的应用程序将变慢。

%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。

一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

rsec/s:每秒读取的扇区数;

wsec/:每秒写入的扇区数。

  • avg-cpu 部分输出项说明:
%user在用户级别运行所使用的 CPU 的百分比。%nicenice 操作所使用的 CPU 的百分比。%system在核心级别(kernel)运行所使用 CPU 的百分比。%iowaitCPU 等待硬件 I/O 所占用 CPU 的百分比。%steal当管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idleCPU 空闲时间的百分比。
  • Device 部分基本输出项说明:
tps每秒钟物理设备的 I/O 传输总量。Blk_read读入的数据总量,单位为块。Blk_wrtn写入的数据总量,单位为块。kB_read读入的数据总量,单位为KB。kB_wrtn写入的数据总量,单位为KB。MB_read读入的数据总量,单位为MB。MB_wrtn写入的数据总量,单位为MB。Blk_read/s每秒从驱动器读入的数据量,单位为 块/s。Blk_wrtn/s每秒向驱动器写入的数据量,单位为 块/s。kB_read/s每秒从驱动器读入的数据量,单位为KB/s。kB_wrtn/s每秒向驱动器写入的数据量,单位为KB/s。MB_read/s每秒从驱动器读入的数据量,单位为MB/s。MB_wrtn/s每秒向驱动器写入的数据量,单位为MB/s。
  • Device 部分扩展输出项说明:
rrqm/s将读入请求合并后,每秒发送到设备的读入请求数。wrqm/s将写入请求合并后,每秒发送到设备的写入请求数。r/s每秒发送到设备的读入请求数。w/s每秒发送到设备的写入请求数。rsec/s每秒从设备读入的扇区数。wsec/s每秒向设备写入的扇区数。rkB/s每秒从设备读入的数据量,单位为 KB/s。wkB/s每秒向设备写入的数据量,单位为 KB/s。rMB/s每秒从设备读入的数据量,单位为 MB/s。wMB/s每秒向设备写入的数据量,单位为 MB/s。avgrq-sz发送到设备的请求的平均大小,单位为扇区。avgqu-sz发送到设备的请求的平均队列长度。awaitI/O请求平均执行时间。包括发送请求和执行的时间。单位为毫秒。svctm发送到设备的I/O请求的平均执行时间。单位为毫秒。%util在I/O请求发送到设备期间,占用CPU时间的百分比。用于显示设备的带宽利用率。当这个值接近100%时,表示设备带宽已经占满。
  • mpstat
  • mpstat 的命令格式
  • mpstat 输出每一个 CPU 的运行状况,为多处理器系统中的 CPU 利用率提供统计信息。命令格式为:mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ]其中:
  • interval : 为取样时间间隔。指定0则输出自系统启动后的一个统计信息。
  • count : 为输出次数。若指定了取样时间间隔且省略此项,将不断产生统计信息。
  • 常用选项:
选项说明-P {cpu|ALL}指定 CPU。用 CPU-ID 指定,CPU-ID 是从0开始的,即第一个CPU为0。ALL 表示所有CPU。-V输出版本号信息。
  • mpstat 使用举例
  • 下面给出几个例子:
    # 输出所有 CPU 使用情况的统计信息。# mpstat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:39:06 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:39:06 AM all 0.10 0.04 0.31 0.06 0.04 0.01 0.00 99.45 1012.99 # 输出第一个 CPU 使用情况的统计信息。 # mpstat -P 0 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:41:03 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:41:03 AM 0 0.09 0.02 0.40 0.09 0.08 0.01 0.00 99.32 1012.79 # 每隔2秒输出所有CPU的统计信息,共输出5次。 # mpstat 2 5 # 每隔2秒输出一次所有CPU的统计信息,共输出5次。 # mpstat -P ALL 2 5 # 每隔2秒输出一次第二个CPU的统计信息,共输出5次。 # mpstat -P 1 2 5
    mpstat 输出项说明

CPU在多CPU系统里,每个CPU有一个ID号,第一个CPU为0。all表示统计信息为所有CPU的平均值。%user显示在用户级别运行所占用CPU总时间的百分比。%nice显示在用户级别,用于nice操作,所占用CPU总时间的百分比。%sys显示在kernel级别运行所占用CPU总时间的百分比。注意:这个值并不包括服务中断和softirq。%iowait显示用于等待I/O操作时,占用CPU总时间的百分比。%irq显示用于中断操作,占用CPU总时间的百分比。%soft显示用于softirq操作,占用CPU总时间的百分比。%steal管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idle显示CPU在空闲状态,占用CPU总时间的百分比。intr/s显示CPU每秒接收到的中断总数。

11.33 kSar 命令

11.33.1 命令详解

sar 命令的输出能够用于识别服务器瓶颈。但是,分析 sar 命令提供的信息可能比较困难,所以要使用 kSar 工具。kSar 工具可以将 sar 命令的输出绘制成基于时间周期的、易于理解的图表。
官网介绍:
https://github.com/vlsi/ksar

11.33.2 kSar使用