关注上方 浩道Linux ,回复 资料 ,即可获取海量 L inux 、 Python 、 网络通信、网络安全 等学习资料!
前言
大家好,这里是 浩道Linux ,主要给大家分享 L inux 、 P ython 、 网络通信、网络安全等 相关的IT知识平台。
今天浩道跟大家分享一个功能强大的Linux命令---sar,这个命令对于分析Linux系统性能时,作用十分强大。 本文将通过介绍sar命令详细的参数选项,以及列举出它常用的性能分析命令,让大家真正做到拿来即用,看完就没有你不会用的!全文针对该命令详解罗列详细,大家可以收藏起来,用到时翻一翻,不会迷路。
一、sar命令介绍
sar命令(System Activity Reporter系统活动情况报告) 是目前Linux比较全的系统性能分析工具之一, 是Linux下的一个系统运行状态统计工具,主要用于收集、报告和保存系统活动信息。sar命令通过读取和报告系统活动计数器,帮助用户了解系统的性能状况。
sar命令可以从文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状态、进程活动等 多方面对系统的活动进行报告。 同时 sar 还可以配置配置信息收集历史指标。
sar命令相关特点如下:
1、全面监控: sar命令可以从多方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
2、连续取样: sar命令可以连续对系统取样,获得大量的取样数据,从而更准确地反映系统的运行状态。
3、数据保存: 除了将取样数据和分析结果直接显示在屏幕上,sar命令还可以将所选数据保存在指定的文件中,方便用户后续查看和分析。
4、低资源消耗: sar命令在运行时消耗的系统资源很小,不会对系统的正常运行造成太大影响。
二、sar命令安装
centos7系统下,sar默认没有安装,我们可以通过yum方式进行安装。
1、yum方式安装
由于sar是sysstat软件包中的一部分,故只需要安装sysstat即可。
yum install -y sysstat
待sysstat安装成功后,会在/etc/sysconfig路径下生成/etc/sysconfig/sysstat文件。
/etc/sysconfig/sysstat文件 默认的配置信息如下:
[root@haodaolinux02 ~]# cat /etc/sysconfig/sysstat
# sysstat-10.1.5 configuration file.
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=28
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=31
# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"
# Compression program to use.
ZIP="bzip2"
[root@haodaolinux02 ~]#
通过配置文件信息,可以看到默认值有收集数据保存时长,什么时候开始压缩,压缩方式以及保存方式等信息。这些信息可以根据系统性能监控指标的需求自定义进行修改。
其中 HISTORY=28 表示将性能日志文件保留多长时间,默认值是28天;
COMPRESSAFTER=31 表示确定sar文件在多少天后压缩文件,默认值为31天;
SADC_OPTIONS="-S DISK" 表示系统活动数据收集保存参数;
ZIP="bzip2" 表示数据文件压缩方式默认是bzip2;
三、sar命令用法及常见参数
(一)sar命令用法
通过帮助命令可以看到sar命令相关参数选项,如下所示:
[root@haodaolinux02 ~]# sar --help
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
[root@haodaolinux02 ~]#
其命令用法具体如下所示:
sar[options][-A][-o file][[t][n]]
1、其中各个选项参数如下所示:
options: 表示选项参数;
-A: 表示显示所有的报告信息,包括CPU、内存、磁盘I/O等各方面的统计数据;
-o file: 表示是文件路径及文件名,将命令结果以二进制格式存放在指定文件中;
t: 表示时间间隔;
n: 表示是次数;
2、常见的options选项参数有:
-b: 表示I/O传输速率信息状态,包括缓冲区的读写操作、传输速度等;
-B: 表示显示换页状态,即内存页面的交换活动情况;
-c: 表示进程创建活动,包括创建和销毁的进程数量;
-d: 表示显示每个块设备的状态,包括磁盘的读写速度、传输量等;
-e: 表示设置显示报告的结束时间,可以与开始时间结合使用,以查看特定时间范围内的系统活动;
-m: 表示电源管理信息状况;
-f: 表示从指定文件提取报告,用于分析之前保存的sar数据文件;
-P: 表示报告每个CPU的状态,包括CPU的使用率、上下文切换次数等;
-q: 表示队列长度和平均负载;
-r: 表示显示系统内存在采样时间内的使用情况,包括内存总量、已用内存、空闲内存等;
-R: 表示输出内存页面的统计信息;
-S: 表示交换空间利用率;
-u [ ALL ]: 表示输出CPU使用情况的统计信息,包括用户态、系统态、空闲态等各个状态的百分比;
-v: 表示显示索引节点、文件和其他内核表的状态,包括inode的数量、使用情况等;
-w: 表示任务创建与系统转换统计信息;
-W: 表示输出系统交换活动信息;
-y: 表示TTY设备状态;
-x: 表示显示给定进程的状态,可以指定进程ID来查看特定进程的性能数据;
-i: 表示设置状态信息刷新的间隔时间,与-o参数结合使用,可以定期将报告数据保存到文件中;
-I {<int> | SUM | ALL | XALL} : 表示中断信息状况;
-n { <keyword> [,…] | ALL }: 表示网络统计信息, keyword关键词可以是如下这些:
DEV:表示网卡
EDEV:表示网卡(错误)
NFS:表示NFS客户端
NFSD:表示NFS服务器
SOCK:表示IPv4的Sockets(套接字);
IP:表示IPv4流;
EIP:表示表示IPv4流(错误);
ICMP:表示IPv4的ICMP流;
EICMP:表示IPv4的ICMP流(错误);
UDP:表示IPv4的UDP流;
SOCK6:表示IPv6的Sockets(套接字);
IP6:表示IPv6流;
EIP6:表示IPv6流(错误);
ICMP6:表示IPv6的ICMP流;
EICMP6:表示IPv6的ICMP流(错误);
UDP6:表示IPv6的UDP流;
四、sar命令常见实例分析
(一)CPU资源监控分析
1、分析CPU资源使用情况
(1)可以通过-P参数进行,对所有CPU个数进行采样,每1秒采样一次,连续采样3次。
sar -P ALL 1 3
输出结果如下图所示:
1)各个监控项参数说明如下:
CPU: all 表示统计信息为所有 CPU 的平均值。
%user: 显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice: 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system: 在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait: 显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal: 虚拟机管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle: 显示 CPU 空闲时间占用 CPU 总时间的百分比。
2)监控指标评判参考方向:
若 %iowait 的值过高,表示硬盘存在I/O瓶颈,即磁盘I/O无法满足业务需求了;
若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;
若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
(2)当CPU是多核时,可以使用「-P」查看指定CPU使用情况,下标从0开始。当输入ALL表示输出所有的cpu状态。具体如下操作如下图所:
(3)可以结合-u参数查看CPU资源使用情况。
对所有CPU个数进行采样,每1秒采样一次,连续采样3次。
sar -u 13
或如下命令
sar -u ALL 1 3
上述命令执行结果如下所示:
(4)
可以结合-p参数查看CPU资源使用情况。
对所有CPU个数进行采样,每1秒采样一次,连续采样3次。
sar -p 13
上述命令执行结果如下图所示;
(5) 可以结合-o参数把上面命令的输出报告信息保存到一个二进制文件里,如下命令所示:
sar -o /tmp/haodao.txt -u 13
上述命令表示将 sar -u 1 3 输出结果保存到 /tmp/haodao.txt 文件中,此时是以二进制形式存放的;
(6)可以结合-f参数查看保存的 二进制结果文件 /tmp/haodao.txt ,如下命令所示:
sar -u -f /tmp/haodao.txt
(7)可以通过 sadf 命令将二进制文件 /tmp/haodao.txt 转换成数据库可读的格式如csv的格式文件 /tmp/haodao.csv ,方便出图标统计。如下命令所示:
sadf -d /tmp/haodao.txt
可以借助sed命令将上述文件中带的
;
统一转化成
,
格式,方便统计。如下命令所示:
sadf -d /tmp/haodao.txt |sed 's/;/,/g' > /tmp/haodao.csv
(二)内存资源监控分析
1、分析内存资源使用情况
(1)可以结合-r参数 查看内存使用情况,每1秒钟采样一次,连续采样5次。
sar -r 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
kbmemfree: 显示空闲的物理内存大小;
kbmemused: 显示使用中的物理内存大小;
%memused: 显示物理内存使用率;
kbbuffers: 显示内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached这两个值就是free命令中的buffer和cache;
kbcached: 显示缓存的文件大小;
kbcommit: 显示保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区);
%commit: 显示这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值;
kbactive: 显示活动内存量(以KB为单位)(最近使用过且通常不会被回收,除非绝对必要);
kbinact: 显示以KB为单位的非活动内存量(较早以前使用过。它更适合被回收以用于其他目的);
kbdirty: 显示等待写回磁盘的内存量(KB);
(三)磁盘资源监控分析
1、分析磁盘资源使用情况
(1)可以结合-d参数 查看磁盘使用情况,每1秒钟采样一次,连续采样5次。
sar -d 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
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越慢;
(2)
可以结合-d及-p参数
查看磁盘使用情况,每1秒钟采样一次,连续采样5次。
sar -d -p 15
上述命令执行结果如下图所示:
(四)磁盘I/O监控分析
1、分析磁盘I/O使用情况
(1)可以结合-b参数 查看I/O和传递速率的统计信息 ,每1秒钟采样一次,连续采样5次。
sar -b 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
ps : 表示磁盘每秒钟的IO总数,等于iostat中的tps;
rtps : 表示每秒钟从磁盘读取的IO总数;
wtps : 表示每秒钟从写入到磁盘的IO总数;
bread/s: 表示 每秒钟从磁盘读取的块总数;
bwrtn/s : 表示每秒钟此写入到磁盘的块总数;
(五)swap分区监控分析
1、分析swap分区使用情况
(1)可以结合-W参数 查看swap分区的统计信息 ,每1秒钟采样一次,连续采样5次。
sar -W 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
pswpin/s : 表示每秒从交换分区到系统的交换页面(swap page)数量;
pswpout/s : 表示每秒从系统交换到swap的交换页面(swap page)的数量;
(六)平均负载监控分析
1、查看平均负载使用情况
(1)可以结合-q参数 查看进程队列长度和平均负载状态统计信息 ,每1秒钟采样一次,连续采样5次。
sar -q 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
runq-sz: 表示运行队列的长度(等待运行的进程数,每核的CP不能超过3个);
plist-sz : 表示进程列表中的进程(processes)和线程数(threads)的数量;
ldavg-1 : 表示最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推;
ldavg-5 : 表示最后5分钟的CPU平均负载;
ldavg-15 : 表示最后15分钟的CPU平均负载;
(七)进程及文件状态监控分析
1、查看进程及文件状态信息
(1)可以结合-v参数查看 进程、inode、文件和锁表状态信息 ,每1秒钟采样一次,连续采样5次。
sar -v 15
上述命令执行结果如下所示:
1)各个监控项参数说明如下:
dentunusd: 表示在缓冲目录条目中没有使用的条目数量;
file-nr: 表示被系统使用的文件句柄数量;
inode-nr : 表示已经使用的索引数量;
pty-nr: 表示使用的pty数量;
(八)内存分页统计状态监控分析
1、查看内存分页统计状态信息
(1)可以结合-B参数查看 内存页面的交换活动 状态信息 ,每1秒钟采样一次,连续采样5次。
sar -B 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
pgpgpgin/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)的百分比;
(九)任务创建和系统切换活动监控分析
1、查看
任务创建和系统切换活动
状态信息
(1)可以结合-w参数 查看 任务创建和系统切换活动 状态信息 ,每1秒钟采样一次,连续采样5次。
sar -w 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
proc/s:表示每秒创建的任务总数;
cswch/s:表示每秒上下文切换的总数;
(十)网络统计状态监控分析
1、查看网络统计状态信息
(1)可以结合-n参数跟DEV 查看 网络相关的统计 信息 ,每1秒钟采样一次,连续采样5次。
sar -n DEV 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
IFACE: 表示本地网卡接口的名称;
rxpck/s: 表示每秒钟接收的数据包;
txpck/s: 表示每秒钟发送的数据库;
rxKB/S: 表示每秒钟接收的数据包大小,单位为KB;
txKB/S: 表示每秒钟发送的数据包大小,单位为KB;
rxcmp/s: 表示每秒钟接收的压缩数据包;
txcmp/s: 表示每秒钟发送的压缩包;
rxmcst/s: 表示每秒钟接收的多播数据包;
(2)可以结合-n参数跟 EDEV显示关于网络错误的统计数据 信息 ,每1秒钟采样一次,连续采样5次。
sar -n EDEV 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
IFACE: 表示网卡名称;
rxerr/s: 表示每秒钟接收到的损坏的数据包;
txerr/s : 表示每秒钟发送的数据包错误数;
coll/s: 表示当发送数据包时候,每秒钟发生的冲撞(collisions)数,这个是在半双工模式下才有;
rxdrop/s : 表示当由于缓冲区满的时候,网卡设备接收端每秒钟丢掉的网络包的数目;
txdrop/s : 表示当由于缓冲区满的时候,网络设备发送端每秒钟丢掉的网络包的数目;
txcarr/s : 表示当发送数据包的时候,每秒钟载波错误发生的次数;
rxfram : 表示在接收数据包的时候,每秒钟发生的帧对其错误的次数;
rxfifo : 表示在接收数据包的时候,每秒钟缓冲区溢出的错误发生的次数;
txfifo : 表示在发生数据包 的时候,每秒钟缓冲区溢出的错误发生的次数;
(3)可以结合-n参数跟 SOCK显示 统计socket连接信息 ,每1秒钟采样一次,连续采样5次。
sar -n SOCK 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
totsck: 表示当前被使用的socket总数;
tcpsck: 表示当前正在被使用的TCP的socket总数;
udpsck: 表示当前正在被使用的UDP的socket总数;
rawsck: 表示当前正在被使用于RAW的skcket总数;
if-frag: 表示当前的IP分片的数目;
tcp-tw: 表示TCP套接字中处于TIME-WAIT状态的连接数量;
(4)可以结合-n参数跟TCP 显示 TCP连接的统计 信息 ,每1秒钟采样一次,连续采样5次。
sar -n TCP 15
上述命令执行结果如下图所示:
1)各个监控项参数说明如下:
active/s : 表示新的主动连接;
passive/s: 表示新的被动连接;
iseg/s : 表示接受的段;
oseg/s : 表示输出的段;
五、总结
工欲善其事,必先利其器,实用的命令可以让你在实际工作中如虎添翼。sar这个命令选项参数众多。以上只是列举一些常用的参数并进行常用的性能场景进行分析举例。大家如果想深入使用这个命令,可以自行去使用一番,相信你在熟悉该命令后,在Linux系统性能分析方面会收获更多!
更多精彩
关注公众号 「 浩道Linux 」
浩道Linux ,专注于 Linux系统 的相关知识、 网络通信 、 网络安全 、 Python相关 知识以及涵盖IT行业相关技能的学习, 理论与实战结合,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~ 关注回复「资料」可 免费获取学习资料 (含有电子书籍、视频等)。
喜欢的话,记得 点「赞」 和 「在看」 哦