sysstat 工具详细说明(1)

sysstat 工具详细说明(一)sysstat 工具内容提要了解 sysstat 工具包的组成理解 sar 累计工作方式的配置掌

sysstat 工具详细说明(一)

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 的命令格式为:

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

      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和传送速率的统计信息

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

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

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

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

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

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

      IFACE网络设备名rxpck/s每秒接收的包总数txpck/s每秒传输的包总数rxbyt/s每秒接收的字节(byte)总数txbyt/s每秒传输的字节(byte)总数rxcmp/s每秒接收压缩包的总数txcmp/s每秒传输压缩包的总数rxmcst/s每秒接收的多播(multicast)包的总数

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

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

      runq-sz运行队列的长度(等待运行的进程数)plist-sz进程列表中进程(processes)和线程(threads)的数量ldavg-1最后1分钟的系统平均负载(System load average)ldavg-5过去5分钟的系统平均负载ldavg-15过去15分钟的系统平均负载

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

      kbmemfree可用的空闲内存数量,单位为 KBkbmemused已使用的内存数量(不包含内核使用的内存),单位为 KB%memused已使用内存的百分数kbbuffers内核缓冲区(buffer)使用的内存数量,单位为 KBkbcached内核高速缓存(cache)数据使用的内存数量,单位为 KBkbswpfree可用的空闲交换空间数量,单位为 KBkbswpused已使用的交换空间数量,单位为 KB%swpused已使用交换空间的百分数kbswpcad交换空间的高速缓存使用的内存数量

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

      frmpg/s每秒系统中空闲的内存页面(memory page freed)数量bufpg/s每秒系统中用作缓冲区(buffer)的附加内存页面(additional memory page)数量campg/s每秒系统中高速缓存的附加内存页面(additional memory pages cached)数量

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

      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、输出系统交换活动信息

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

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

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

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

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

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

      ?

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

      ?

      ?

      ?

      查看即时统计信息

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

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

      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 -bsar -u?和?sar -d?等来查看