Sar—Linux 上最为全面的系统性能分析工具之一

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等。

我们可以使用sar命令来获得整个系统性能的报告。这有助于我们定位系统性能的瓶颈,并且有助于我们找出这些烦人的性能问题的解决方法。

Linux 内核维护着一些内部计数器,这些计数器包含了所有的请求及其完成时间和 I/O 块数等信息,sar命令从所有的这些信息中计算出请求的利用率和比例,以便找出瓶颈所在。

sar命令主要的用途是生成某段时间内所有活动的报告,因此必需确保sar命令在适当的时间进行数据采集(而不是在午餐时间或者周末)

用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]

主选项和报告:
	-b	I/O 和传输速率信息状况
	-B	分页状况
	-d	块设备状况
	-I { <中断> | SUM | ALL | XALL }
		中断信息状况
	-m	电源管理信息状况
	-n { <关键词> [,...] | ALL }
		网络统计信息
		关键词可以是:
		DEV	 网卡
		EDEV	 网卡 (错误)
		NFS	 NFS 客户端
		NFSD	 NFS 服务器
		SOCK	 Sockets (套接字)	(v4)
		IP	IP  流	      (v4)
		EIP	 IP 流	   (v4) (错误)
		ICMP	 ICMP 流	(v4)
		EICMP	 ICMP 流	(v4) (错误)
		TCP	 TCP 流  (v4)
		ETCP	 TCP 流  (v4) (错误)
		UDP	 UDP 流  (v4)
		SOCK6	 Sockets (套接字)	(v6)
		IP6	 IP 流	   (v6)
		EIP6	 IP 流	   (v6) (错误)
		ICMP6	 ICMP 流 (v6)
		EICMP6 ICMP 流 (v6) (错误)
		UDP6	UDP 流   	(v6)
	-q	队列长度和平均负载
	-r	内存利用率
	-R	内存状况
	-S	交换空间利用率
	-u [ ALL ]
		CPU 利用率
	-v	Kernel table 状况
	-w	任务创建与系统转换统计信息
	-W	交换信息
	-y	TTY 设备状况
	-o {<文件路径>}
	   将命令结果以二进制格式存放在指定文件中

常用命令

sar命令来自于sysstat工具包,如果提示sar命令不存在,需先安装sysstat。

网络统计信息

sar -n <关键词> [ <时间间隔> [ <次数> ] ]

示例:

sar -n DEV 1 5
    
平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间:        lo      2.21      2.21      0.18      0.18      0.00      0.00      0.00
平均时间:      eth0      4.62      3.82      0.37      1.90      0.00      0.00      0.00

命令中 1 5 表示每一秒钟取 1 次值,一共取 5 次。

命令执行后会列出每个网卡这 5 次取值的平均数据,根据实际情况来确定带宽跑满的网卡名称,默认情况下 eth0 为内网网卡,eth1 为外网网卡。

CPU 利用率

sar -u [ <时间间隔> [ <次数> ] ]

示例:

sar -u 1 3
    
Linux 2.6.32-642.13.1.el6.x86_64 (upfor106) 2018年04月25日 _x86_64_ (1 CPU)
    
10时33分08秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
10时33分09秒     all      0.00      0.00      0.00      0.00      0.00    100.00
10时33分10秒     all      0.99      0.00      0.99      0.00      0.00     98.02
10时33分11秒     all      0.00      0.00      0.00      0.00      0.00    100.00
平均时间:        all      0.33      0.00      0.33      0.00      0.00     99.33

命令中 1 3 表示每一秒钟取 1 次值,一共取 3 次。

输出项说明:

CPU:all 表示统计信息为所有 CPU 的平均值。

%user:显示在用户级别(application)运行使用 CPU 总时间的百分比

%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比

%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比

%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比

%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比

    1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

    2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

    3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU

索引节点,文件和其他内核表的状态

sar -v [ <时间间隔> [ <次数> ] ]

示例:

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用的 pty 数量

内存利用率

sar -r [ <时间间隔> [ <次数> ] ]

示例:

sar -r 1 3

Linux 2.6.32-696.13.2.el6.x86_64 (upfor163) 2018年04月25日 _x86_64_ (2 CPU)

10时53分00秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10时53分01秒   2027760   2028732     50.01    145492   1243820   1163900     28.69
10时53分02秒   2027620   2028872     50.02    145492   1243820   1163896     28.69
10时53分03秒   2028100   2028392     50.00    145492   1243820   1163900     28.69
平均时间:      2027827   2028665     50.01    145492   1243820   1163899     28.69

输出项说明:

kbmemfree:这个值和 free 命令中的 free 值基本一致,所以它不包括 buffer 和 cache 的空间

kbmemused:这个值和 free 命令中的 used 值基本一致,所以它包括 buffer 和 cache 的空间

%memused:这个值是 kbmemused 和内存总量(不包括 swap)的一个百分比

kbbuffers 和 kbcached:这两个值就是 free 命令中的 buffer 和 cache

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap)

%commit:这个值是 kbcommit 与内存总量(包括 swap)的一个百分比

内存分页状况

sar -B [ <时间间隔> [ <次数> ] ]

示例:

sar -B 1 3

Linux 2.6.32-696.13.2.el6.x86_64 (upfor163) 2018年04月25日 _x86_64_ (2 CPU)

10时55分41秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
10时55分42秒      0.00      0.00   5723.76      0.00   3356.44      0.00      0.00      0.00      0.00
10时55分43秒      0.00      0.00   1185.00      0.00    312.00      0.00      0.00      0.00      0.00
10时55分44秒      0.00      0.00     27.00      0.00     56.00      0.00      0.00      0.00      0.00
平均时间:         0.00      0.00   2323.26      0.00   1248.50      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)的百分比

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7963

(0)
郭靖的头像郭靖
上一篇 2023年4月13日 下午3:49
下一篇 2023年4月14日 下午3:52

相关推荐

  • rsync综合备份

    一.先看需求 客户端需求:1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录)2.客户端备份的数据必须存放至以 “主机名ip地址当前时间” 命名的目录中3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间 服务端需求:1.服务端…

    2023年12月11日
    1.2K00
  • VMware 虚拟机里连不上网的五种解决方案

    大家好,又见面了,我是你们的朋友全栈君。 在VMware虚拟机里的虚拟机系统连接不上网络 首先,注意查看适配器选项里的网络连接这两个网络连接是否存在,如果不存在可以重新装一下VM 如果存在,连不上网 解决办法一: 虚拟机设置里,找到“网络适配器”,右边的网络连接选择“NAT 模式”,如果不行的话再 linux系统。还是不行的话接着看第二种解决方案。 解决方法…

    2024年6月28日
    3.7K00
  • linux 文件挂载配置错误解决办法

    linux中挂载命令经常能够用到,特别是配置开机自动挂载的时候,一不留神就配置错误了,这样造成的后果就是重启过后就会发现系统起不来了!!! 首先进行模拟测试 格式化磁盘 mkfs.ext4 /dev/sdb1 挂载磁盘 mount /dev/sdb1 /mnt 修改配置文件并进行破环 vi /etc/fstab 重启验证后发现不能远程登录,系统进入救援模式!…

    2023年9月27日
    1.3K00
  • 爽了!免费的SSL,还能自动续期!

    兄弟👬🏻,当你手里有不少域名,每个域名又配置子域名,那么ssl将是一笔不小的费用。当然各个云厂商,也都有提供免费的ssl证书,但这里有一个问题,就是基本都不提供免费的泛域名证书(免费20个单域名证书),比如 x.gaga.plus、b.gaga.plus 这就要申请2个域名证书了!并且3个月就过期,一年就折腾这,都能折腾哭😭!那咋办? 像我这样做技术分享的,…

    2024年6月4日
    1.2K00
  • 实验案例:LVM卷管理及配额设置

    实验环境 公司准备在Internet中搭建FTP服务器(CentOS 7.3 系统平台),面向全国各地的员工及部分VIP客户提供资料上传下载的空间。考虑动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到/date目录下)专门用于存放电子邮件数据,并通过磁盘配额的方式限制用户的电子邮箱空间。 需求描述 采用LVM磁盘管理方案:添加两块SCSI硬…

    2024年6月25日
    1.6K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信