Linux分析系统性能sar命令详解

Linux分析系统性能sar命令详解教程

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

sar 命令也是 Linux 下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

Linux sar命令详解

功能

sar 是分析系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。。

语法

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

参数

选项 功能
-o filename filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中。
interval 表示采样间隔时间,该参数必须手动设置。
count 表示采样次数,是可选参数,其默认值为 1。
options 为命令行选项。

sar命令常用参数

选项 描述
-A 显示系统所有资源设备(CPU、内存、磁盘)的运行状况。
-u 显示系统所有 CPU 在采样时间内的负载状态。
-P 显示当前系统中指定 CPU 的使用情况。
-d 显示系统所有硬盘设备在采样时间内的使用状态。
-r 显示系统内存在采样时间内的使用情况。
-b 显示缓冲区在采样时间内的使用情况。
-v 显示 inode 节点、文件和其他内核表的统计信息。
-n 显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等,有关更多的选项,可通过执行 man sar 命令查看。
-q 显示运行列表中的进程数、进程大小、系统平均负载等。
-R 显示进程在采样时的活动情况。
-y 显示终端设备在采样时间的活动情况。
-w 显示系统交换活动在采样时间内的状态。

Linux sar输出格式详解

CPU输出格式

输出项 描述
CPU all 表示统计信息为所有 CPU 的平均值。
%user 显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice 显示在用户级别,用于 nice 操作,所占用 CPU 总时间的百分比。。
%system 在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait 显示用于等待 I/O 操作占用 CPU 总时间的百分比。
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle 显示 CPU 空闲时间占用 CPU 总时间的百分比。

内存输出格式

输出项 描述
kbmemfree 这个值和 free 命令中的 free 值基本一致,所以它不包括 buffer 和 cache 的空间。
kbmemused 这个值和 free 命令中的 used 值基本一致,所以它包括 buffer 和 cache 的空间。
%memused 这个值是 kbmemused 和内存总量(不包括 swap)的一个百分比。
kbbuffers和kbcached 这两个值就是 free 命令中的 buffer 和 cache。
kbcommit 保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。
%commit 这个值是 kbcommit 与内存总量(包括swap)的一个百分比。

IO输出格式

输出项 描述
await 表示平均每次设备 I/O 操作的等待时间(以毫秒为单位)。
svctm 表示平均每次设备 I/O 操作的服务时间(以毫秒为单位)。
%util 表示一秒中有百分之几的时间用于I/O操作。

网络流量DEV输出格式

输出项 描述
IFACE 就是网络设备的名称。
rxpck/s 每秒钟接收到的包数目。
txpck/s 每秒钟发送出去的包数目。
rxkB/s 每秒钟接收到的字节数。
txkB/s 每秒钟发送出去的字节数。
rxcmp/s 每秒钟接收到的压缩包数目。
txcmp/s 每秒钟发送出去的压缩包数目。
rxmcst/s 每秒钟接收到的多播包的包数目。

Linux sar命令常用实例

实例

实例 描述
sar -u 5 2 -o cpu.bin 每 5 秒采样一次,连续采样 2 次,观察 CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件 cpu.bin 中。
sar -v 5 3 每 5 秒采样一次,连续采样 3 次,观察核心表的状态。
sar -r 5 3 每 5 秒采样一次,连续采样 3 次,监控内存分页。
sar -B 5 3 每 5 秒采样一次,连续采样 3 次,查看内存分页的使用情况。
sar -b 5 3 每 5 秒采样一次,连续采样 3 次,报告缓冲区的使用情况 。
sar -q 5 3 每 5 秒采样一次,连续采样 3 次,监控进程队列长度和平均负载状态。
sar -W 5 3 每 5 秒采样一次,连续采样 3 次,监控系统交换活动信息。
sar -d 5 3 每 5 秒采样一次,连续采样 3 次,报告设备使用情况。
sar 5 3 -n DEV 每 5 秒采样一次,连续采样 3 次,报告设备使用情况。

说明

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来:

  1. 怀疑 CPU 存在瓶颈,可用 sar -u 和 sar -q 等来查看。
  2. 怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看。
  3. 怀疑 I/O 存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看。

CPU资源监控

语法

sar -u 5 2 -o cpu.bin

案例

我们使用 sar 命令,对 CPU 资源监控,每 5 秒采样一次,连续采样 2 次,并将采样结果以二进制形式存入当前目录下的文件 cpu.bin 中,具体命令如下:

sar -u 5 2 -o cpu.bin

运行后,终端输出如下:

25_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对 CPU 进行了监控并将结果写入了 cpu.bin 文件中,查看 cpu.bin 的二进制文件,使用如下命令:

sar -u -f cpu.bin

运行后,终端输出如下:

26_Linux系统监控sar命令详解.png

我们看到,cpu.bin 的二进制文件存放的就是 CPU 统计信息的结果。

说明

  1. 若 %iowait 的值过高,表示硬盘存在 I/O 瓶颈。
  2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。
  3. 若 %idle 的值持续低于 1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

inode、文件和其他内核表监控

语法

sar -v 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,观察核心表的状态,具体命令如下:

sar -v 5 3

运行后,终端输出如下:

27_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对核心表进行了监控。

内存和交换空间监控

语法

sar -r 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,监控内存分页信息,具体命令如下:

sar -r 5 3

运行后,终端输出如下:

28_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对内存分页信息进行了监控。

内存分页监控

语法

sar -B 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,查看内存分页的使用情况,具体命令如下:

sar -B 5 3

运行后,终端输出如下:

29_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对内存分页进行了监控。

I/O和传送速率监控

语法

sar -b 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,对 I/O 和传送速率监控,具体命令如下:

sar -b 5 3

运行后,终端输出如下:

30_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对 I/O 和传送速率监控。

进程队列长度和平均负载状态监控

语法

sar -q 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,对进程队列长度和平均负载状态监控,具体命令如下:

sar -q 5 3

运行后,终端输出如下:

31_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对进程队列长度和平均负载状态监控。

系统交换活动信息监控

语法

sar -W 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,监控系统交换活动信息,具体命令如下:

sar -W 5 3

运行后,终端输出如下:

32_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对系统交换活动信息监控。

设备使用情况监控

语法

sar -d 5 3

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,对设备使用情况监控,具体命令如下:

sar -d 5 3

运行后,终端输出如下:

33_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对设备使用情况监控。

说明

当 avgqu-sz 的值较低时,设备的利用率较高。当 %util 的值接近 1% 时,表示设备带宽已经占满。

网络接口的统计信息

语法

sar 5 3 -n DEV

案例

我们使用 sar 命令,每 5 秒采样一次,连续采样 3 次,对网络接口进行统计,具体命令如下:

sar 5 3 -n DEV

运行后,终端输出如下:

34_Linux系统监控sar命令详解.png

我们看到,我们使用了 sar 命令对网络接口进行统计。

Linux sar命令详解总结

Linux 中的 sar 命令用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。sar 是在内核中访问网络及相关信息的程序,它能提供 TCP 连接,TCP 和 UDP 监听,进程内存管理的相关报告。