sar命令

  • Linux统计/监控工具SAR详细介绍:要判断一个系统瓶颈问题,有时需要几个 sar 命令选项结合起来使用,例如: 怀疑CPU存在瓶颈,可用 sar -u 和 sar -q deng 等来查看 怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看 怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

     

    sysstat 工具

    内容提要

    1. 了解 sysstat 工具包的组成

    2. 理解 sar 累计工作方式的配置

    3. 掌握 sar 、iostat、mpstat 命令的使用

    sysstat 工具简介

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

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

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

    • 累计统计工具:sar

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

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

    • sa1 :收集并存储每天系统动态信息到一个二进制的文件中,用作 sadc 的前端程序

    • sa2 :收集每天的系统活跃信息写入总结性的报告,用作 sar 的前端程序

    • sadc :系统动态数据收集工具,收集的数据被写入一个二进制的文件中,它被用作 sar 工具的后端

    在 CentOS 系统的默认设置中,以如下的方式使用这三个工具:

    1. 在守护进程 /etc/rc.d/init.d/sysstat 中使用 /usr/lib/sa/sadc -F -L - 命令创建当日记录文件,文件为 /var/log/sa/saDD,其中 DD 为当天的日期。当系统重新启动后,会向文件 /var/log/sa/saDD 输出类似 11:37:16 AM LINUX RESTART 这样的行信息。

    2. 在 cron 任务 /etc/cron.d/sysstat 中每隔10分钟执行一次 /usr/lib/sa/sa1 1 1 命令,将信息写入文件 /var/log/sa/saDD

    3. 在 cron 任务 /etc/cron.d/sysstat 中每天 23:53 执行一次 /usr/lib/sa/sa2 -A 命令,将当天的汇总信息写入文件 /var/log/sa/saDD

    您可以修改 /etc/cron.d/sysstat 以适合您的需要。

    另外,文件 /var/log/sa/saDD 为二进制文件,不能使用 more、less 等文本工具查看,必须用 sar 或 sadf 命令查看。

    sar

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

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

    sar 的命令格式

    sar 的命令格式为:

     
    1. sar [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]

    2. [ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]

    3. [ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]

    4. [ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ]

    5. [ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]

    6. [ -o [ filename ] | -f [ filename ] ]

    7. [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]

    8. [ 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使用情况的统计信息

     
    1. [root@cnetos5 ~]# sar

    2. [root@cnetos5 ~]# sar -u

    3. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    4.  
    5. 12:00:01 AM CPU %user %nice %system %iowait %steal %idle

    6. 12:10:01 AM all 0.02 0.00 0.14 0.01 0.00 99.84

    7. 12:20:01 AM all 0.02 0.00 0.12 0.01 0.00 99.86

    8. 12:30:01 AM all 0.01 0.00 0.12 0.01 0.00 99.86

    9. Average: all 0.03 0.00 0.13 0.01 0.00 99.84

    输出项说明:

    CPUall 表示统计信息为所有 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和传送速率的统计信息

     
    1. [root@cnetos5 ~]# sar -b

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM tps rtps wtps bread/s bwrtn/s

    5. 12:10:01 AM 1.58 0.00 1.58 0.00 16.71

    6. 12:20:01 AM 1.09 0.00 1.09 0.00 10.85

    7. 12:30:01 AM 1.08 0.00 1.08 0.00 10.74

    8. Average: 1.24 0.00 1.24 0.00 12.70

    输出项说明:

    tps每秒钟物理设备的 I/O 传输总量
    rtps每秒钟从物理设备读入的数据总量
    wtps每秒钟向物理设备写入的数据总量
    bread/s每秒钟从物理设备读入的数据量,单位为 块/s
    bwrtn/s每秒钟向物理设备写入的数据量,单位为 块/s

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

     
    1. [root@cnetos5 ~]# sar -B

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM pgpgin/s pgpgout/s fault/s majflt/s

    5. 12:10:01 AM 0.00 4.17 9.74 0.00

    6. 12:20:01 AM 0.00 2.71 2.24 0.00

    7. 12:30:01 AM 0.00 2.69 2.25 0.00

    8. Average: 0.00 3.17 4.07 0.00

    输出项说明:

    pgpgin/s每秒钟从磁盘读入的系统页面的 KB 总数
    pgpgout/s每秒钟向磁盘写出的系统页面的 KB 总数
    fault/s系统每秒产生的页面失效(major + minor)数量
    majflt/s系统每秒产生的页面失效(major)数量

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

     
    1. [root@cnetos5 ~]# sar -c

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM proc/s

    5. 12:10:01 AM 0.05

    6. 12:20:01 AM 0.03

    7. 12:30:01 AM 0.03

    8. Average: 0.03

    输出项说明:

    proc/s每秒钟创建的进程数

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

     
    1. [root@cnetos5 ~]# sar -n DEV |grep eth0

    2. 12:00:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s

    3. 12:10:01 AM eth0 0.59 0.92 41.57 893.98 0.00 0.00 0.00

    4. 12:20:01 AM eth0 0.55 0.88 37.50 859.56 0.00 0.00 0.00

    5. 12:30:01 AM eth0 0.55 0.86 38.17 871.98 0.00 0.00 0.00

    6. 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、输出网络设备状态的统计信息(查看网络设备故障)

     
    1. [root@cnetos5 ~]# sar -n EDEV |egrep 'eth0|IFACE'

    2. 12:00:01 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s

    3. 12:10:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    4. 12:20:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    5. 12:30:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    6. 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、输出进程队列长度和平均负载状态统计信息

     
    1. [root@cnetos5 ~]# sar -q

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15

    5. 12:10:01 AM 0 85 0.02 0.01 0.00

    6. 12:20:01 AM 0 85 0.01 0.00 0.00

    7. 12:30:01 AM 0 85 0.03 0.01 0.00

    8. 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、输出内存和交换空间的统计信息

     
    1. [root@cnetos5 ~]# sar -r

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad

    5. 12:10:01 AM 262068 253408 49.16 43884 156456 1048568 0 0.00 0

    6. 12:20:01 AM 261572 253904 49.26 44580 156448 1048568 0 0.00 0

    7. 12:30:01 AM 260704 254772 49.42 45124 156472 1048568 0 0.00 0

    8. 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、输出内存页面的统计信息

     
    1. [root@cnetos5 ~]# sar -R

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM frmpg/s bufpg/s campg/s

    5. 12:10:01 AM -0.10 0.23 0.01

    6. 12:20:01 AM -0.21 0.29 -0.00

    7. 12:30:01 AM -0.36 0.23 0.01

    8. 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、文件和其他内核表的信息

     
    1. [root@cnetos5 ~]# sar -v

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz

    5. 12:10:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00

    6. 12:20:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00

    7. 12:30:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00

    8. Average: 7253 589 5125 0 0.00 0 0.00 0 0.00

    输出项说明:

    dentunusd目录高速缓存中未被使用的条目数量
    file-sz文件句柄(file handle)的使用数量
    inode-szi节点句柄(inode handle)的使用数量
    super-sz由内核分配的超级块句柄(super block handle)数量
    %super-sz已分配的超级块句柄占总超级块句柄的百分比
    dquot-sz已经分配的磁盘限额条目数量
    %dquot-sz分配的磁盘限额条目数量占总磁盘限额条目的百分比
    rtsig-sz已排队的 RT 信号的数量
    %rtsig-sz已排队的 RT 信号占总 RT 信号的百分比

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

     
    1. [root@cnetos5 ~]# sar -w

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM cswch/s

    5. 12:10:01 AM 44.74

    6. 12:20:01 AM 44.41

    7. 12:30:01 AM 44.41

    8. Average: 44.50

    输出项说明:

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

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

     
    1. [root@cnetos5 ~]# sar -W

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM pswpin/s pswpout/s

    5. 12:10:01 AM 0.00 0.00

    6. 12:20:01 AM 0.00 0.00

    7. 12:30:01 AM 0.00 0.00

    8. Average: 0.00 0.00

    输出项说明:

    pswpin/s每秒系统换入的交换页面(swap page)数量
    pswpout/s每秒系统换出的交换页面(swap page)数量

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

     
    1. [root@cnetos5 ~]# sar -y

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 12:00:01 AM TTY rcvin/s xmtin/s framerr/s prtyerr/s brk/s ovrun/s

    5. 12:10:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00

    6. 12:10:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00

    7. 12:20:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00

    8. 12:20:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00

    9. 12:30:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00

    10. 12:30:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00

    11. ………………

    12. Average: 0 0.00 0.00 0.00 0.00 0.00 0.00

    13. Average: 1 0.00 0.00 0.00 0.00 0.00 0.00

    输出项说明:

    TTYTTY 串行设备号
    rcvin/s每秒接收的中断数量
    xmtin/s每秒传送的中断数量
    framerr/s每秒发生的帧错误数(frame error)量
    prtyerr/s每秒发生的奇偶校验错误(parity error)数量
    brk/s每秒发生的暂停(break)数量
    ovrun/s每秒发生的溢出错误(overrun error)数量

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

    # sar -A

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

     
    1. [root@cnetos5 ~]# sar -d

    2. Requested activities not available in file

    3. [root@cnetos5 ~]# sar -x ALL

    4. Requested activities not available in file

    5. [root@cnetos5 ~]# sar -X ALL

    6. 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次

     
    1. # sar -n DEV 30 5

    2. # sar -u 30 5

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

    例如:

     
    1. # sar -u 30 5 -o sar-dump-001

    2. # sar -u -f sar-dump-001

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

     
    1. # sar -dp 5 2

    2. Linux 2.6.18-53.el5 (cnetos5) 01/22/2008

    3.  
    4. 07:12:11 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

    5. 07:12:16 AM sda 0.40 0.00 17.56 44.00 0.00 1.00 1.00 0.04

    6. 07:12:16 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    7.  
    8. 07:12:16 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

    9. 07:12:21 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    10. 07:12:21 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    11.  
    12. Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

    13. Average: sda 0.20 0.00 8.78 44.00 0.00 1.00 1.00 0.02

    14. 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% 时,表示设备带宽已经占满。

     

     

     

    iostat 的命令格式

    iostat 用于输出CPU和磁盘I/O相关的统计信息。命令格式为:

     
    1. iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ]

    2. [ -p [ device | ALL ] ] [ interval [ count ] ]

    其中:

    • interval : 为取样时间间隔

    • count : 为输出次数,若指定了取样时间间隔且省略此项,将不断产生统计信息

    常用选项:

    选项 说明
    -c仅显示CPU统计信息。与-d选项互斥。
    -d仅显示磁盘统计信息。与-c选项互斥。
    -k以KB为单位显示每秒的磁盘请求数。默认单位块。
    -m以MB为单位显示每秒的磁盘请求数。默认单位块。
    -p {device|ALL}用于显示块设备及系统分区的统计信息。与-x选项互斥。
    -t在输出数据时,打印搜集数据的时间。
    -V打印版本号信息。
    -x输出扩展信息。

    iostat 使用举例

    下面给出几个例子:

     
    1. # 显示一条包括所有的CPU和设备吞吐率的统计信息

    2. # iostat

    3. Linux 2.6.18-53.el5 (cnetos5) 01/21/2008

    4.  
    5. avg-cpu: %user %nice %system %iowait %steal %idle

    6. 0.10 0.04 0.37 0.07 0.00 99.42

    7.  
    8. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

    9. sda 1.44 16.79 10.58 800430 504340

    10. sdb 0.01 0.07 0.00 3314 8

    11. sdc 0.86 8.56 0.00 407892 24

    12.  
    13. # 每隔5秒显示一次设备吞吐率的统计信息(单位为 块/s)

    14. # iostat -d 5

    15.  
    16. # 每隔5秒显示一次设备吞吐率的统计信息(单位为 KB/s),共输出3次

    17. # iostat -dk 5 3

    18.  
    19. # 每隔2秒显示一次 sda 及上面所有分区的统计信息,共输出5次

    20. # iostat -p sda 2 5

    21.  
    22. # 每隔2秒显示一次 sda 和 sdb 两个设备的扩展统计信息,共输出6次

    23. # iostat -x sda sdb 2 6

    24. Linux 2.6.18-53.el5 (cnetos5) 01/21/2008

    25.  
    26. avg-cpu: %user %nice %system %iowait %steal %idle

    27. 0.10 0.04 0.37 0.07 0.00 99.42

    28.  
    29. Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

    30. sda 0.17 0.84 0.96 0.47 16.67 10.56 19.01 0.01 7.11 1.25 0.18

    31. sdb 0.00 0.00 0.01 0.00 0.07 0.00 5.16 0.00 0.22 0.19 0.00

    32.  
    33. …………

    iostat 的输出项说明

    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 使用举例

    下面给出几个例子:

     
    1. # 输出所有 CPU 使用情况的统计信息。

    2. # mpstat

    3. Linux 2.6.18-53.el5 (cnetos5) 01/21/2008

    4.  
    5. 10:39:06 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

    6. 10:39:06 AM all 0.10 0.04 0.31 0.06 0.04 0.01 0.00 99.45 1012.99

    7.  
    8. # 输出第一个 CPU 使用情况的统计信息。

    9. # mpstat -P 0

    10. Linux 2.6.18-53.el5 (cnetos5) 01/21/2008

    11.  
    12. 10:41:03 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

    13. 10:41:03 AM 0 0.09 0.02 0.40 0.09 0.08 0.01 0.00 99.32 1012.79

    14.  
    15. # 每隔2秒输出所有CPU的统计信息,共输出5次。

    16. # mpstat 2 5

    17.  
    18. # 每隔2秒输出一次所有CPU的统计信息,共输出5次。

    19. # mpstat -P ALL 2 5

    20.  
    21. # 每隔2秒输出一次第二个CPU的统计信息,共输出5次。

    22. # 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每秒接收到的中断总数。

 

 

**************************

SAR

NAME:

         SAR报告,收集,保存系统活动信息

语法:

sar  [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -i interval ] [ -m ] [-p ] [ -q ] [ -r ] [ -R ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ]  [-w  ]  [  -W  ] [ -y ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -n {keyword [,...] | ALL } ] [ -I { int [,...] | SUM | ALL | XALL } ] [-P{ cpu [,...] | ALL } ] [ -o [ filename ] | -f [ filename ] ] [ --legacy] [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ] [ interval [ count ] ]

说明:

Sar命令会把收集到的系统活动信息写入到标准输出。收集到的值根据interval和count不同而不同,如果没有interval值,sar命令会显示从启动到现在的平均值。如果有interval没有count,那么信息会一直生成。收集到的信息也可以通过-o输出到文件上。如果没有指定文件路径,sar会标准系统活动每天生成一个文件,在/var/log/sa/sadd,其中dd是当前日期。

 

Sar命令获取的并且写入到标准输出前,记录到文件里面,这个文件可以用-o指定,默认被存在标准系统活动每日文件中。可以使用-f来读取这些文件中的数据。

 

如果不用-P,会报告系统范围统计信息,并计算他们的平均值。如果使用-P可以指定特定的处理器,如果是用-P ALL,会报告所有的CPU,和所有处理器的全局统计信息。

 

然后可以使用选项来选择信息,如果不指定选项那么查CPU活动,-A=-bBdqrRSvwWy -I SUM -I XALL –n ALL -u ALL -P ALL.

 

 

选项:

         -A               和-bBdqrRSuvwWy -I SUM -I XALL –n ALL -u ALL -P ALL相同

-b               报告io传输率统计

-B               报告分页信息,2.5内核版本之后才可用

-C               从文件中读取时,让sar显示由sabc输入的comment

-d               报告每个块设备(2.4内核之后),dev列中,为devm-n,m为major,n为minor,在2.5之前只是一个顺序值。加-p参数dev会显示的比较可读。用-j来指定设备名类型。

                   注意,磁盘活动依赖与sabc选项 –S DISK或-S XDISK。

-e               设置报告的结束时间,默认结束时间是18:00:00,24小时制,这个选项可以在读写文件的时候使用,-f,-o

-f                从文件中读取,这个文件由-o创建,默认为/var/log/sa/sadd。

-h               帮助

-i                和直接用[interval]类似,获取数据间隔。

-I                统计中断发送int [,...] | SUM | ALL | XALL },int+终端号指定查询某个特定的中断,SUM对所有中断合计,ALL 前16个中断,XALL统计所有中断。

-j                { ID | LABEL | PATH | UUID | ... }指定设备名类型

--legacy    启用读老的/var/log/sa/sadd文件。RH6.3之后修改了/var/log/sa/sadd文件的格式。

-m              报告CPU频率统计,依赖于sabc选项-S POWER

-n               { keyword [,...] | ALL }网络统计报告,这里的关键字为:DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和UDP6.

-o               输出的二进制文件,默认为/var/log/sa/sadd,可以用-f读取来分析

-P               { cpu [,...] | ALL }返回指定cpu的统计信息,指定ALL则为全部

-p               让设备名更加可读,会把devm-n转化为可读的设备名。和iostat –N用法类似

-q               报告队列长度和负荷平均值

-r                内存使用报告

-R               内存统计报告

-s               [ hh:mm:ss ]设置sar抓数据开始时间默认08:00:00,用-f来读取生成的数据

-S               Swap空间使用报告

-t                在从文件读取时,使用文件的创建时的日期,如果不加则使用机器本地的日期(试了一下没啥变化)

-u               [ ALL ]CPU使用率报告,通过ALL可以显示全部字段

-v               报告inode,file,其他内核表,

-V               查看版本号

-w              系统切换计数报告

-W             swap切换报告

-y               报告TTY活动

报告:

         I/O模式(-b)

tps  

每秒钟发送在物理设备上的传输次数

rtps 

每秒钟发送在物理设备上的读的传输次数

wtps        

每秒钟发送在物理设备上的写传输次数

bread/s   

每秒钟读取block的个数,2.4内核和扇区相同,2.4之后是512B,老的内核不确定。

                   bwrtn/s

                            每秒钟写入block个数

       

         内存页模式(-B)

                   pgpgin/s

                            从磁盘中pagein的KB,来的内核2.2.X是blocks/s

                   pgpgout/s

                            pageout到从盘的KB,来的内核2.2.X是blocks/s

                   fault/s

                            每秒页错误次数,major+minor次数,major引起物理io,minor不引起物理io

         majflt/s

                            每秒major页错误次数,发送IO

                   pgfree/s

                            每秒被放到free list的页个数

                   pgscank/s

                            每秒被kswapd daemon扫描的页个数

         pgscand/s

                            每秒直接被扫描的页个数

                   pgsteal/s

                            为了保证内存需求的安全,每秒从cache(pagecache,swapcache)回收的页数

                   %vmeff

%vmeff=pgsteal/pgscan,反应了页回收效率,如果接近100%,那么就表示页基本上来至于不活动队列尾(tail of inactive list),如果百分比很低(少于30%),那么虚拟内存有点困难,如果为0表示每秒被扫描页为0.

 

         块设备模式(-d)

                   tps

                            每秒钟发送到设备的传输次数

                   rd_sec/s

                            每秒钟从设备上读取的扇区数,512B

                   wr_sec/s

                            每秒钟写入到设备上的扇区数,512B

                   avgrq-sz

                            平均请求的扇区数

                   avgqu-sz

                            平均请求的设备队列长度

                   await

                            从I/O请求到被完成花的平均时间,包含花费在队列里面的时间和执行时间。

                   svctime

                            I/O请求被执行的时间

                   %util

当请求I/O发生的时候,cpu的使用率(就是设备使用的带宽),当设备饱和,CPU会接近100%。

         Power模式(-m)

                   MHz

                            cpu频率

         网络模式(-n)

                   略

         队列长度和平均负荷(-q)

                   runq-sz

                            运行队列长度(等待run time的任务个数)

                   plist-sz

                            任务列表中的任务个数

                   ldavg-1

最近1分钟内系统负荷平均值,负荷平均值=特定间隔内可运行的任务(R状态)+不可中断睡眠的任务(D状态)

                   ldavg-5

                            最近5分钟系统负荷平均值

                   ldavg-15

                            最近15分钟系统负荷平均值

         内存使用模式(-r)

                   kbmemfree

                            可用内存量单位kb

                   kbmemused

                            被使用的内存kb,不计算被内核使用的内存

                   %memused

                            内存使用百分比

                   kbbuffer

                            被内核作为buffer使用的内存单位kb

                   kbcached

                            被内核当cache使用的内存单位kb

                   kbcommit

当前工作负荷要使用的内存。用来评估需要多少RAM/swap来保证不会超出内存

                   %commit

当前需要的内存/RAM+swap,要保证大于100%,因为内核通常都overcommit内存。

         内存统计模式(-R)

                   frmpg/s

每秒内存释放的页数。负数说明系统分配的页数,注意根据机器结构不同页大小也不同,4kb或者8kb。

                   bufpg/s

                            每秒buffer使用额外的page数,负数表示buffer使用的页数变小。

                   campg/s

                            每秒cache使用额外的page数,负数表示cache页数变小。

         Swap空间使用模式(-S)

                   kbswpfree

                            swap空间可用大小单位kb

                   kbswpused

                            已经被使用的swap空间kb

                   %swpused

                            使用百分比

                   kbswpcad

swap内容被缓存在内存的kb (amount of cached swap memory in kilobytes)。这个内存是被换出,但是换入的时候依然在swap空间内的。如果需要内存,就不需要换出了,因为已经在swap了可以减少I/O。

                   %swpcad

                            swap被缓存在内存的数据占swap使用总空间的比率

         CPU使用率(-u)

                  %user

                            用户级别程序使用的cpu比率,这个值包含虚拟处理器使用的时间

                   %usr

                            用户级别程序使用的cpu比率,这个值不包含虚拟处理器使用的时间

                   %nice

                            nice优先级用户级应用程序的cpu比率

                   %system

                            系统级(内核)cpu使用率,包含服务硬件的有时间和软件中断的时间

                   %sys

                            系统级(内核)cpu使用率,不包含服务硬件的有时间和软件中断的时间

                   %iowait

                            CPU空闲,并且有未完成I/O的时间

                   %steal

当hypervisor 为另外一个虚拟处理器提供服务的时候,无意识的等待虚拟 C     PU或者CPU 的比率

                   %irq

                            CPU服务硬件中断的时间

                   %soft

                            CPU服务软终端的时间

                   %guest

                            用户服务虚拟处理器时间

                   %idle

                            CPU空间,并且没有未完成的磁盘I/O请求

         inode,file,内核表状态(-v)

                   dentunusd

                            目录cache中没有使用的项

                   file-nr

                            系统所使用的文件句柄个数

                   inode-nr

                            inode句柄个数

                   pty-nr

                            pseudo-terminals使用的数量

         系统切换(-w)

                   proc/s

                            每秒进程创建个数

                   cswch/s

                            每秒上面文切换次数

         swap切换(-W)

                   pswpin/s

                            每秒swap in的页数

                   pswpout/s

                            每秒swap out的页数

         TTY设备报告(-y)

                   略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值