资讯专栏INFORMATION COLUMN

掌握这条Linux主机sar命令,服务器性能问题一网打尽

Tecode / 2132人阅读

摘要:它的英文全称是,意为系统活动情况报告。是目前上最为全面的系统性能分析工具之一,通过该命令可以全面地获取系统的运行队列磁盘读写分区交换区内存中断和网络等性能数据。因此可以用它来找出一些性能问题,帮助我们提升服务器的性能做出很好的决策指引。

image.png
首先我自己都感到不好意思,这个命令几乎没有用过(尴尬)。最近在翻查Linux的一些命令,发现自己居然对它很陌生,所以赶紧恶补一下,扩充一下自己。

sar它的英文全称是:System Activity Reporter,意为系统活动情况报告。是目前 Linux 上最为全面的系统性能分析工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。因此可以用它来找出一些性能问题,帮助我们提升服务器的性能做出很好的决策指引。

sar命令格式讲解

sar [options] [-o filename] interval [count]

在上述命令格式中,各参数的含义如下:
-o filename:filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中
interval:采样的间隔时间,需要手动设置
count:采样的次数,可以自定义,默认是为1
options:命令选项,大概有十来种,详细如下:

选项值 选项说明
-A 显示系统所有资源设备的运行状况
-u 显示系统所有CPU的负载状态。
-d 显示系统所有硬盘设备的活动信息
-r 显示系统内存和交换空间的情况
-b 显示I/O和传送速率情况
-n 显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等
-q 显示运行列表中的进程数、进程大小、系统平均负载等
-R 显示进程在采样时的活动情况
-y 显示终端设备的活动情况
-w 显示系统交换活动的状态

以上只是列出来了部分选项,更多的选项可以通过man sar来查看。

使用举例

1、比如我们想要查看系统CPU的整理状况,每3秒统计一次,总共统计4次,可以执行:

sar -u 3 4

执行结果如下图:
image.png

在执行结果中,总共有8列,第一列很清楚的知道是统计时间,第二列表示是所有cpu。

  • %user:用于表示用户模式下消耗的 CPU 时间的比例;
  • %nice:CPU处在带NICE值的用户模式下的时间百分比例;
  • %system:系统模式下消耗的 CPU 时间的比例;
  • %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例;
  • %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例;
  • %idle:CPU 空闲时间比例。

通过上面对结果列的解释,我们应该需要注意的是iowait和idle,如果 iowait的值偏高,则表示遇到了I/O瓶颈;idle值偏高,则表示CPU比较空闲。如果idle值高但系统响应比较慢,有可能这个时候CPU在等待内存分配,这个时候我们应加大内存容量。如果idle值如果一直偏低,一般情况大家都认为低于10,那么我们就需要解决cpu的问题。

2、比如我需要查看内存的使用情况,每3秒统计一次,总共统计5次,可以执行:

sar -r 3 5

执行结果如下图:
image.png

各列的说明如下:

  • kbmemfree:这个值和我们执行free命令之后的free列值会基本一致,它不包含缓存和缓冲空间(buffer和cache的空间)
  • kbmemused:这个值和我们执行free命令之后的used列值会基本一致,它包括buffer和cache的空间
  • %memused:kbmemused值和内存总量的一个百分比
  • kbbuffers和kbcached:这两个值就是free命令中的buffer和cache
  • kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap)
  • %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比
  • kbactive:活动内存量
  • kbinact:不活动内存量
  • kbdirty:等待写入磁盘的内存,以KB为单位

3、如果想要查看系统磁盘的读写性能,每3秒统计一次,总共统计5次,可执行如下命令:

sar -d 3 5

image.png

各列的说明如下::

  • tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的
  • rd_sec/s:每秒读扇区的次数
  • wr_sec/s:每秒写扇区的次数
  • avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区)
  • avgqu-sz:磁盘请求队列的平均长度
  • await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒)
  • svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间
  • %util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和

这里我只演示了几个参数的使用讲解,关于其他参数的用法,大家可以自行运行进行查看。欢迎一起交流学习。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125916.html

相关文章

  • 一文掌握 Linux 性能分析之网络篇(续)

    摘要:这是性能分析系列的第五篇,前四篇在这里一文掌握性能分析之篇一文掌握性能分析之内存篇一文掌握性能分析之篇一文掌握性能分析之网络篇在上篇网络篇中,我们已经介绍了几个网络方向的性能分析工具,本文再补充几个。 本文首发于我的公众号 CloudDeveloper(ID: cloud_dev),专注于干货分享,号内有大量书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫。...

    zero 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<