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 网络接口错误
NFS NFS 客户端
NFSD NFS 服务器
SOCK 套接字
IP IP流
EIP IP流错误
ICMP ICMP流
EICMP ICMP流错误
TCP TCP流
ETCP TCP流错误
UDP UDP流
SOCK6 套接字
IP6 IP流
EIP6 IP流错误
ICMP6 ICMP流
EICMP6 ICMP流错误
UDP6 UDP流

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

posted @ 2020-11-05 09:52  程序员Sean  阅读(212)  评论(0编辑  收藏  举报