sysstat

iostat、sarsa1sa2命令都是sysstat包的一部分。它是Linux包含的性能监视工具集合;

  • sar:收集、报告或存储信息(CPU、内存、磁盘、中断、网卡、TTY、内核表等等);
  • sa1:收记并存储二进制数据到每天的文件;这是设计来给cron执行一个sadc的前台程序;
  • sa2:生成总结报表;
  • sadf:以多种格式显示数据(CSV, XML, JSON, etc.),还可以用来生成SVG(Scalable Vector Graphics)图表。
  • sadc:系统数据收集器,给sar做后台服务;
  • sa2shell脚本在/var/log/sa目录中每日写入一个报告。sa1shell脚本将每日的系统活动信息以二进制数据的形式写入到文件中。

我们可以在/etc/cron.d/sysstat文件中找到sar默认的cron作业,如下:

# Run system activity accounting tool every  minutes
*/ * * * * root /usr/lib64/sa/sa1
# * * * * root /usr/lib64/sa/sa1 &
# Generate a daily summary of process accounting at :
* * * root /usr/lib64/sa/sa2 -A

sar命令

收集,报告或保存系统活动信息;如:查看CPU使用状况、内存使用状况、网卡使用状况

语法

sar [options] [-A] [-o file] t [n]

其中t为采样间隔,n为采样次数,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file是文件名;options为命令行选项,sar常用的选项有以下:

选项

-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息

实例

每2秒采样一次,连续采样3次,查看CPU的整体使用情况

sh-4.2# sar
Linux 3.10.-693.2..el7.x86_64 (jellythink) // _x86_64_ ( CPU) :: PM CPU %user %nice %system %iowait %steal %idle
:: PM all 0.50 0.00 0.50 0.00 0.00 98.99
:: PM all 1.00 0.00 0.50 0.00 0.00 98.50
:: PM all 0.50 0.00 0.50 0.00 0.00 98.99
Average: all 0.60 0.00 0.40 0.00 0.00 99.00

内容讲解

  • %user:CPU处在用户模式下的时间百分比;之前总结的好多命令都有讲,比如iostatpidstat都有讲;
  • %nice:CPU处在带NICE值的用户模式下的时间百分比;
  • %system:CPU处在系统模式下的时间百分比;
  • %iowait:CPU等待输入输出完成时间的百分比;
  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比;
  • %idle:CPU空闲时间百分比;

在所有的显示中,我们应主要注意%iowait%idle, %iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

每2秒采样一次,连续采样3次,查看CPU每个核心的使用情况

sh-4.2# sar -P ALL
:: PM CPU %user %nice %system %iowait %steal %idle
:: PM all 0.50 0.00 0.00 0.00 0.00 99.50
:: PM 0.50 0.00 0.00 0.00 0.00 99.50 :: PM CPU %user %nice %system %iowait %steal %idle
:: PM all 1.00 0.00 0.50 0.00 0.00 98.50
:: PM 1.00 0.00 0.50 0.00 0.00 98.50 :: PM CPU %user %nice %system %iowait %steal %idle
:: PM all 0.51 0.00 0.00 0.00 0.00 99.49
:: PM 0.51 0.00 0.00 0.00 0.00 99.49

每2秒采样一次,连续采样3次,查看内存的使用情况

sh-4.2# sar -r
:: PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
:: PM 77.30 32.98
:: PM 77.30 32.98
:: PM 77.30 32.98
Average: 77.30 32.98

内容详解:

  • kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间;
  • kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间;
  • %memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比;
  • kbbuffers:这两个值就是free命令中的buffer;
  • kbcached:这两个值就是free命令中的cache;
  • kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap);
  • %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比;
  • kbactive:活动内存量(以千字节计算)(最近使用的内存,通常不会被收回,除非绝对必要);
  • kbinact:不活动内存量(以千字节计算的内存(最近使用的内存),更有资格被用于其他目的);
  • kbdirty:以KB为单位的内存量等待写入磁盘;

每2秒采样一次,连续采样3次,查看内存分页的使用情况

sh-4.2# sar -B
:: PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
:: PM 0.00 8.00 35.00 0.00 11.50 0.00 0.00 0.00 0.00
:: PM 0.00 0.00 15.00 0.00 11.50 0.00 0.00 0.00 0.00
:: PM 0.00 0.00 49.49 0.00 1102.02 0.00 0.00 0.00 0.00
Average: 0.00 2.68 33.11 0.00 372.58 0.00 0.00 0.00 0.00

内容详解:

  • pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB);
  • pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB);
  • fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor);
  • majflt/s:每秒钟产生的主缺页数;
  • pgfree/s:每秒被放入空闲队列中的页个数;
  • pgscank/s:每秒被kswapd扫描的页个数;
  • pgscand/s:每秒直接被扫描的页个数;
  • pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数;
  • %vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比;

每2秒采样一次,连续采样3次,查看块设备使用情况

sh-4.2# sar -d -p
:: PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
:: PM vda 1.01 0.00 20.10 20.00 0.00 1.50 1.50 0.15 :: PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
:: PM vda 5.53 0.00 112.56 20.36 0.01 1.27 0.82 0.45 :: PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
:: PM vda 42.00 0.00 2312.00 55.05 0.19 4.62 0.27 1.15 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: vda 16.22 0.00 817.39 50.39 0.07 4.18 0.36 0.59

内容详解:

  • DEV:磁盘设备;
  • tps:每秒从物理磁盘I/O的次数,多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的;
  • rd_sec/s:每秒读扇区的次数;
  • wr_sec/s:每秒写扇区的次数;
  • avgrq-sz:平均每次设备I/O操作的数据大小(扇区);
  • avgqu-sz:磁盘请求队列的平均长度;
  • await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒);
  • svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间;
  • %util:I/O请求占CPU的百分比,比率越大,说明越饱;

PS:-n选项使用6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL

  • DEV显示网络接口信息
  • EDEV显示关于网络错误的统计数据
  • NFS统计活动的NFS客户端的信息
  • NFSD统计NFS服务器的信息
  • SOCK显示套接字信息
  • ALL显示所有5个开关。它们可以单独或者一起使用。

检测网络接口流量

sh-4.2# sar -n DEV
:: PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: PM eth0 5.50 4.50 0.41 3.56 0.00 0.00 0.00
:: PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 :: PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: PM eth0 0.51 0.51 0.03 0.03 0.00 0.00 0.00
:: PM lo 1.52 1.52 0.09 0.09 0.00 0.00 0.00 :: PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: PM eth0 5.50 6.00 3.09 0.94 0.00 0.00 0.00
:: PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: eth0 3.85 3.68 1.18 1.51 0.00 0.00 0.00
Average: lo 0.50 0.50 0.03 0.03 0.00 0.00 0.00

内容详解:

  • IFACE:LAN接口网络设备的名称;
  • rxpck/s:每秒钟接收的数据包;
  • txpck/s:每秒钟发送的数据包;
  • rxkB/s:每秒钟接收的字节数;
  • txkB/s:每秒钟发送的字节数;
  • rxcmp/s:每秒钟接收的压缩数据包;
  • txcmp/s:每秒钟发送的压缩数据包;
  • rxmcst/s:每秒钟接收的多播数据包;

检测网络错误流量

sh-4.2# sar -n EDEV
:: PM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
:: PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 :: PM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
:: PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 :: PM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
:: PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

内容详解:

  • IFACE:LAN接口网络设备的名称;
  • rxerr/s:每秒钟接收的坏数据包;
  • txerr/s:每秒钟发送的坏数据包;
  • coll/s:每秒冲突数;
  • rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数;
  • txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数;
  • txcarr/s:发送数据包时,每秒载波错误数;
  • rxfram/s:每秒接收数据包的帧对齐错误数;
  • rxfifo/s:接收的数据包每秒FIFO过速的错误数;
  • txfifo/s:发送的数据包每秒FIFO过速的错误数

检测套接字流量

sh-4.2# sar -n SOCK
:: PM totsck tcpsck udpsck rawsck ip-frag tcp-tw
:: PM
:: PM
:: PM
Average:

内容详解:

  • totsck:使用的套接字总数量;
  • tcpsck:使用的TCP套接字数量;
  • udpsck:使用的UDP套接字数量;
  • rawsck:使用的RAW套接字数量;
  • ip-frag:当前的IP分片的数目;
  • tcp-tw:TCP套接字中处于TIME-WAIT状态的连接数量

查看日志文件内容

sh-4.2# sar -r -f /var/log/sa/sa04
Linux 3.10.-.el7.x86_64 (kvm-) // _x86_64_ ( CPU) :: PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
:: PM 2.30 0.45
:: PM 2.30 0.46
Average: 2.30 0.45

前面已经说了sar的日志文件是保存在/var/log/sa/saDD里的。我们可以使用-f选项可以查看二进制日志文件;-r表示读取内存日志信息。

查看进程队列长度和平均负载状态

sh-4.2# sar -q
:: PM runq-sz plist-sz ldavg- ldavg- ldavg- blocked
:: PM 0.02 0.03 0.05
:: PM 0.02 0.03 0.05
:: PM 0.02 0.03 0.05
Average: 0.02 0.03 0.05

内容详解:

  • runq-sz:运行队列的长度(等待运行的进程数);
  • plist-sz:进程列表中进程(processes)和线程(threads)的数量;
  • ldavg-1:最后1分钟的系统平均负载;
  • ldavg-5:过去5分钟的系统平均负载;
  • ldavg-15:过去15分钟的系统平均负载;
  • blocked:当前阻塞的进程数量,在等待IO完成;

查看系统SWAP交换的统计信息(监控状态同vmstatsiso

sh-4.2# sar -W
:: PM pswpin/s pswpout/s
:: PM 0.00 0.00
:: PM 0.00 0.00
:: PM 0.00 0.00
Average: 0.00 0.00

内容详解:

  • pswpin/s:每秒从交换分区到系统的交换页面(swap page)数量
  • pswpout/s:每秒从系统交换到swap的交换页面(swap page)的数量

性能分析小技巧

  • 技巧一:要判断系统瓶颈问题,有时需几个sar命令选项结合起来:

    •   怀疑CPU存在瓶颈,可用sar -u和sar -q等来查看;
    •   怀疑内存存在瓶颈,可用sar -B、sar -r和sar -W等来查看;
    •   怀疑I/O存在瓶颈,可用sar -b、sar -u和sar -d等来查看;
  • 技巧二:巧用sadf命令,转换成各种可读形式高的文件格式,进行线下分析。sar -o会将输出保存为二进制文件,我们可以通过sadf -d将二进制文件进行转换。
  • 技巧三:如果你觉的上述通过sadf命令进行转换比较麻烦,也好,还有开源的ksar工具,可以直接加载sar生成的日志文件,通过GUI显示,更直观,更便捷。

https://www.jellythink.com/archives/483

https://www.jianshu.com/p/b9e942f3682c

Linux 常用工具sysstat之sar的更多相关文章

  1. Linux 常用工具sysstat之iostat

    命令解释 用于输出CPU和磁盘I/O相关的统计信息:iostat依赖于sysstat软件包 命令格式 iostat [ 选项 ] [<时间间隔> [<次数>]] 常用选项 -c ...

  2. Linux 常用工具小结:(5) lftp工具使用

    Linux 常用工具小结:(1) lftp工具使用. 这里会按照一些比较常用的功能列出,并举一个具体的例子逐一解释功能. 通常使用ftp过程是登陆ftp,浏览ftp内容,下载ftp文件,或者上传ftp ...

  3. linux包之sysstat之sar命令

    要启动SAR,必须通过cron工具以周期性的间隔启动.安装sysstat包后,默认创建一个/etc/cron.d/sysstat文件,其默认内容为:# run system activity acco ...

  4. linux常用工具及命令

    1.windows复制文件到linux可以使用工具winscp工具 2.建立软连接命令(将/software/run.log的文件指向/usr/local/logs/中): cd /usr/local ...

  5. Linux 常用工具贴

    1. nmon for Linux  用于监控Linux CPU.IO.网络等,可以生产excel格式的报表  http://nmon.sourceforge.net/pmwiki.php?n=Sit ...

  6. linux常用工具

    命令 功能应用 用法举例 free 查看内存使用情况,包括物理内存和虚拟内存 free -h或free -m vmstat 对系统的整体情况进行统计,包括内核进程.虚拟内存.磁盘.陷阱和 CPU 活动 ...

  7. Linux 常用工具iptables

    iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火 ...

  8. Linux常用工具之XFTP、Xshell配置

    Xftp是一个基于 MS windows 平台的功能强大的SFTP.FTP文件传输软件.使用了 Xftp 以后,MS windows 用户能安全地在UNIX/Linux 和 Windows PC 之间 ...

  9. linux 常用工具记录及简介

    前言 linuxz虽然各种软件的生态还比较差,但是大势所趋,早晚都是要用的.记录下自己常用的软件,要是那天系统崩了重装也舒服点 编程工具 pycharm专业版(社区版也能用,只是用惯了专业版) * 下 ...

随机推荐

  1. requests爬取梨视频主页所有视频

    爬取梨视频步骤: 1.爬取梨视频主页,获取主页所有的详情页链接 - url: https://www.pearvideo.com/ - 1) 往url发送请求,获取主页的html文本 - 2) 解析并 ...

  2. 【题解】[NOI2019Route](70分)

    占坑 做法是拆掉所有式子,拆完式子看一下,如果A=0,发现边被分为了终点走向n的边和不走向n的边.所以边就有了新的边权,并且可以相加.然后通过网络流建模的套路建模使得满足时间的限制,然后由于有负边,所 ...

  3. $Noip2012/Luogu1083$ 借教室

    $Luogu$ $Sol$ 区间整体加减? 差分+树状数组维护前缀和! 那每给一个人借完教室之后都要判断一下现在合不合法?那复杂度比暴力还不如些... 注意到这里的单调性,假设给前$x$个人借完教室之 ...

  4. [quack] A browser extension to Clean website pages ADs

    1. youdao.com result page Before: After: Later we will add more and more. Or you can submit issues t ...

  5. 程序员初学者参考 ---懂得基础语法后如何做一个自己的case?

    对于很多人来说,我懂java语法,甚至面向对象的特性啦这些都是有了解的,但我就是不会做项目,其实项目真有那么难吗? 对于基础不牢固的人来说,我还不会这个基础点,那个还没学呢,你让我做个项目,我保证做不 ...

  6. 1090 危险品装箱 (25分)C语言

    集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你检查每一张集装箱货品清单,判断它们是否 ...

  7. 兄弟们,你们天天吊打面试官,面试官很难受啊。 metasploit免S客户端

    metasploit生成的exe文件很小,但是免杀效果不行, 找了很多资料, 只有生成c语言shellcode,然后c#重新编译, 这种免杀效果,挺让人满意的 首先需要生成客户端,客户端使用了ngro ...

  8. Django ORM调优实践

    一.分析请求慢响应的主要原因 将请求执行的任务按功能分为几块,用time.time()打印每个模块的执行时间,大部分情况下性能会主要消耗在某一个模块上,即80%的性能问题是出在20%的代码上 找到主要 ...

  9. 阿里云ECS单节点Kubernetes部署

    参考资料: kubernetes官网英文版 kubernetes官网中文版 环境.工具 阿里云学生机ECS.Ubuntu.docker.kubectl1.15.4.kubelet1.15.4.kube ...

  10. 日志冲突解决方案(基于gradle)

    日志冲突解决方案 前提:我使用gradle管理项目 最近在项目中需要用curator客户端操作zookeeper,在maven仓库拉取的jar包导致日志冲突,会报以下的错误: 经常会有如上图2处红色框 ...