返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1469|回复: 0

[转载] 【转载】sar命令详解

[复制链接]
发表于 2024-11-13 20:33:53 | 显示全部楼层 |阅读模式
sar命令详解


sar是强大的linux系统活动状况收集、报告命令。可以收集CPU,内存,磁盘I/O,网络等诸多数据。对于性能分析是个可靠的利器。

安装
sar命令是sysstat下的一个工具,所以安装sar需要首先安装sysstat命令,可以考虑yum安装或者使用源码包编译安装等。yum 安装十分便捷,不需要任何复杂的调试就可以使用:

#ubuntu

sudo apt-get install -y sysstat

#centos

sudo yum install -y sysstat

安装gcc等重要环境

#ubuntu

sudo apt-get install -y gcc gcc-c++

#centos

sudo yum install -y gcc gcc-c++

最后查看任一命令的版本即可得到sysstat版本

mpstat -V

sysstat 版本 9.0.4
(C) Sebastien Godard (sysstat <at> orange.fr)

初次使用sar命令会遇到如下报错:Cannot open /var/log/sa/sa29: No such file or directoryPlease check if data collecting is enabled

这是因为sar找不到记录数据的源文件,这时只需要使用-o参数生成即可sar -o 2 3


常用方法
每2秒输出一次sar [command],总计输入五次,省略5表示持续输出

sar [command] 2 5

sar -A 2 5

用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <中断> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -n { <关键词> [,...] | ALL } ]
[ -o [ <文件名> ] | -f [ <文件名> ] ]
[ -i <时间间隔> ] [ -s [ <时:分:秒> ] ] [ -e [ <时:分:秒> ] ]


每秒采样一次网络情况直到15:41并把采样数据输出到./123

sar -n DEV 1 -e 15:41:00 >.//123 &

本月27日23点至0点的内存数据,需要通过crontab设置定时任务

sar -f /var/log/sa/sa27 -s 23:00:00 -e 00:00:00 -r




CPU篇
监控CPU状态:-p或-P {CPU_LIST | ALL}
用于分析多核CPU的性能状况,可以使用CPU_LIST分析指定核心的CPU状态,可以使用离散值和连续值,也可以使用ALL分析所有CPU核心状态。

sar -P 0 1 3




表示每秒采集0号CPU状态,总共采样3次。前两列不必多言,

%user:指运行非特权用户进程时间百分率
%nice:是指运行特权用户进程时间百分率
%system:是指运行内核进程时间,这个时间包括了CPU处理软硬中断的时间
%iowait:是指等待I/O完成的时间
%steal:是指运行虚拟机的时间百分率,steal意味着被偷走的时间
%idle:是指cpu空闲时间百分率






报告CPU使用情况:-u [ALL]
报告cpu使用情况,与-p不同的是,-u只能报告所有cpu。

sar -u ALL 1 3




%usr:和-P的%user的区别在于不包括虚拟机运行的时间
%nice:是指运行特权用户进程时间百分率
%sys:和-P的%system的区别在于不包括各种软硬中断时间
%iowait:是指等待I/O完成的时间
%steal:是指运行虚拟机的时间百分率,steal意味着被偷走的时间
%irq:是指处理硬中断的cpu时间百分率
%soft:是指处理软中断的cpu时间百分率
%guest:指运行普通虚拟程序的时间百分率
%gnice:指运行特权虚拟程序的时间百分率
%idle:是指cpu空闲时间百分率,我的机器上并未运行任何程序,所以此列一直为100%





进程队列长度和平均负载状态监控:-q
用于报告队列长度以及平均负载

sar -q 1 3




runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟内cpu的负载(System load average)
ldavg-5:过去5分钟内cpu的负载
ldavg-15:过去15分钟内cpu的负载
blocked:表示等待I/O完成而被阻塞的任务总数,不为0则需要留意I/O是否存在性能瓶颈





上下文切换监控:-w
报告进程上下文切换的次数

sar -w 1 3




proc/s:指每秒创建的进程数
cswch/s:指每秒自愿上下文切换的次数,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。



还有一个非自愿的上下文切换次数nvcswch/s表示则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。非自愿次数明显升高意味着cpu产生了性能瓶颈。非自愿上下文切换可以使用pidstat加上-w选项来输出




内存篇
内存使用情况监控:-r [-h]
输出内存使用率统计信息,-h输出更加利于阅读的结果

sar -r -h 1 3




kbmemfree:剩余内存总量,这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbavail:可用内存总量,可用内存≈剩余内存+buffer+cache
kbmemused:使用的内存总量,使用量=总内存-剩余内存-buffer-cache-slab,这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers:被内核用来作为buffer的内存量,即free命令的buffer
kbcached:被内核用来作为cache的内存量,即free命令的cache
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
kbactive:当前活跃内存量。除非万不得已,这部分内存才会被回收
kbinact:当前非活跃内存总量,当内存不足时,这部分内存最容易被内核收回
kbdirty:脏页大小,脏页指的是暂存于内存还没来得及持久化到硬盘的数据。可以使用sync刷入硬盘





内存分页监控:-B
报告系统中分页统计信息

sar -B 1 3




pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor) ,这不是产生I/O的缺页中断的次数,因为部分缺页中断不需要I/O就能处理
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被内核线程[kswapd]扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:系统为满足其内存需求声明每秒从cache(分页缓存和swap缓存)回收的页的数量
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比





swap使用情况监控:-S [h]
输出swap空间的使用率统计信息

sar -S 1 3




kbswpfree:未使用的swap量
kbswpused:使用中的swap内存量
%swpused:使用中的swap内存量占总swap的百分率
kbswpcad:被swap缓存的内存量,这部分内存曾经被换出,现在又被换入但仍然位于swap空间
%swpcad:kbswpcad占kbswpused的百分率






系统交换活动信息监控:-W
统计输出swap换入换出信息

sar -W 1 2




页面发生交换时,服务器的吞吐量会大幅下降;服务器状况不良时,如果怀疑因为内存不足而导致了页面交换的发生,可以使用这个命令来确认是否发生了大量的交换;

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





I/0篇
I/O和传送速率监控:-b
报告I/O及传输速率统计信息


sar -b 1 3




tps:每秒钟物理设备的 I/O 传输总量。一次传输就是加到物理设备的一次I/O请求,由于多次逻辑请求可以合并为单次的I/O请求,所以一次传输的大小是不确定的
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
dtps:每秒丢弃的请求总数
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s,块的大小等同于一个扇区的大小,512字节
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
bdscd/s:以块为单位丢弃的数据总量




设备使用情况监控:-d -h[--dev=dev_list]
报告块设备的活动情况

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

sar -d 1 1




tps:和-b的tps含义一样,都表示每秒钟加到物理设备上的传输总量

tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.
rkB/s:每秒从设备读到的字节数
wkB/s:每秒写入设备的字节数
areq-sz:加到设备上I/O请求平均大小(以字节为大小)
aqu-sz:加到设备上请求长度的平均值.
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).
%util:I/O请求占CPU的百分比,比率越大,说明越饱和. 对于串行设备,接近100%意味着设备出现了性能瓶颈,但是对于并行设备比如RAID或者SSD,这个值实际上并不能反映出设备的极限
avgqu-sz 的值较低时,设备的利用率较高。
当%uti的值接近 1% 时,表示设备带宽已经占满。





inode、文件和其他内核表监控:-v
报告inode,文件以及其他内核表状态

sar -v 1 1




dentunusd:目录缓存中未使用的缓存项数。
file-nr:系统使用的文件句柄数,查看目前使用的文件句柄数lsof|awk '{print $2}'|wc -l
inode-nr:索引节点句柄(inode handle)的使用数量
pty-nr:打开的伪终端数,即几个人登陆了系统






网络篇
网络监控:-n DEV [--iface=face_list]

sar -n DEV 1 1




IFACE:网络接口
rxpck/s:每秒接收的报文数
txpck/s:每秒发送的报文数
rxkB/s:每秒接收的字节数,``rxkB/s*1024/rxpck/s`<60B,意味着收到的是小包
txkB/s:每秒发送的字节数
rxcmp/s:每秒接收的压缩数据包数
txcmp/s:每秒发送的压缩数据包数
rxmcst/s:每秒接收的多播数据包数
%ifutil:网络接口的利用率百分比,对于半双工接口,利用率使用rxkB/s和txkB/s之和作为接口速度的百分比计算。对于全双工,这是rxkB/s或txkB/s中的较大值。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表