Linux系统性能监控命令系列之 sar

大家好,我是Sean

在使用我们碰到问题可谓是五花八门,系统卡顿、死机、宕机、I/O出现瓶颈等等,这时,我们应该考虑使用系统给我们提供的sar命令来对系统作一个了解,该命令是系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况。

sar(系统运行状态统计工具)

在使用我们碰到问题可谓是五花八门,系统卡顿、死机、宕机、I/O出现瓶颈等等,这时,我们应该考虑使用系统给我们提供的sar命令来对系统作一个了解,该命令是系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况。

sar命令 是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

启动命令参数

-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。

常用命令

查看CPU使用情况
sar 1 3  或 sar -u 1 3 
每1秒打印一次cpu状况,打印3次后退出

将cpu统计结果保存到文件
sar -o test 1 3
每1秒打印一次cpu状况,打印3次后退出,并保存到文件test
sar -f test
查看保存到test文件的cpu记录

查看平均负载
sar -q 1 3

查看系统swap分区统计情况
sar -W 1 3

查看IO和传递速率
sar -b 1 3

查看磁盘使用情况
sar -d 

统计网络信息     
sar -n DEV
sar -n EDEV
统计socket连接信息         
sar -n SOCK
TCP连接的统计          
sar -n TCP

查看内存使用情况
sar -r 1 3

命令详解

查看CPU使用情况

sar 1 3  或 sar -u 1 3 

%user   用户空间的CPU使用
%nice   改变过优先级的进程的CPU使用率
%system   内核空间的CPU使用率
%iowait   CPU等待IO的百分比 
%steal   虚拟机的虚拟机CPU使用的CPU
%idle   空闲的CPU

在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈

sar还可以把CPU使用情况记录成二进制文件,并可以重新读取:

生成文件:sar -o test 1 3
查看文件:sar -f test

查看平均负载

sar -q 1 3

runq-sz    运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
plist-sz   进程列表中的进程(processes)和线程数(threads)的数量
ldavg-1  最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
ldavg-5   最后5分钟的CPU平均负载
ldavg-15  最后15分钟的CPU平均负载

查看内存使用情况

sar -r 1 3

kbmemfree   空闲的物理内存大小
kbmemused   使用中的物理内存大小
%memused      物理内存使用率
kbbuffers      内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache. 
kbcached      缓存的文件大小
kbcommit       保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
commit       这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值
kbactive  
kbinact 
kbdirty 

查看系统swap分区统计情况

sar -W 1 3

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

查看IO和传递速率

sar -b 1 3

tps  磁盘每秒钟的IO总数,等于iostat中的tps
rtps  每秒钟从磁盘读取的IO总数
wtps  每秒钟从写入到磁盘的IO总数
bread/s  每秒钟从磁盘读取的块总数
bwrtn/s  每秒钟此写入到磁盘的块总数

查看磁盘使用情况

sar -d

DEV  磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
tps  每秒I/O的传输总数
rd_sec/s  每秒读取的扇区的总数
wr_sec/s  每秒写入的扇区的总数
avgrq-sz  平均每次次磁盘I/O操作的数据大小(扇区)
avgqu-sz  磁盘请求队列的平均长度
await  从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
svctm  I/O的服务处理时间,即不包括请求队列中的时间
%util  I/O请求占用的CPU百分比,值越高,说明I/O越慢

统计网络信息

sar -n 参数
sar -n DEV

sar -n EDEV 1 1 

sar -n SOCK

参数含义
DEV网络接口统计信息
EDEV网络接口错误
NFSNFS 客户端
NFSDNFS 服务器
SOCK套接字
IPIP流
EIPIP流错误
ICMPICMP流
EICMPICMP流错误
TCPTCP流
ETCPTCP流错误
UDPUDP流
SOCK6套接字
IP6IP流
EIP6IP流错误
ICMP6ICMP流
EICMP6ICMP流错误
UDP6UDP流

今天的分享就到这里啦!感谢各位的阅读!码字不易,如果本文对你有帮助的话,帮忙点个赞吧~哈哈。

阅读 107

推荐阅读