sar


在使用 Linux 系统时,常常会遇到各种各样的问题,比如系统容易死机或者运行速度突然变慢,这时我们常常猜测:是否硬盘空间不足,是否内存不足,是否 I/O 出现瓶颈,还是系统的核心参数出了问题?这时,我们应该考虑使用 sar 工具对系统做一个全面了解,分析系统的负载状况。

sar(System Activity Reporter)是系统活动情况报告的缩写。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。为了提供不同的信息,sar 提供了丰富的选项、因此使用较为复杂。

sar 的命令格式


sar 的命令格式为:


sar  [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]

     [ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]

     [ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]

     [ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ] 

     [ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]

     [ -o [ filename ] | -f [ filename ] ]

     [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ] 

     [ interval [ count ] ]

其中:

interval : 为取样时间间隔

count : 为输出次数,若省略此项,默认值为 1

常用选项:

选项 说明

-A 等价于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL

-b 显示I/O和传送速率的统计信息

-B 输出内存页面的统计信息

-c 输出进程统计信息,每秒创建的进程数

-d 输出每一个块设备的活动信息

-i interval 指定间隔时长,单位为秒

-p 显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np

-q 输出进程队列长度和平均负载状态统计信息

-r 输出内存和交换空间的统计信息

-R 输出内存页面的统计信息

-t 读取 /var/log/sa/saDD 的数据时显示其中记录的原始时间,如果没有这个参数使用用户的本地时间

-u 输出CPU使用情况的统计信息

-v 输出inode、文件和其他内核表的统计信息

-V 输出版本号信息

-w 输出系统交换活动信息

-W 输出系统交换的统计信息

-y 输出TTY设备的活动信息

-n {DEV|EDEV|NFS|NFSD|SOCK|ALL} 分析输出网络设备状态统计信息。

DEV 报告网络设备的统计信息

EDEV 报告网络设备的错误统计信息

NFS 报告 NFS 客户端的活动统计信息

NFSD 报告 NFS 服务器的活动统计信息

SOCK 报告网络套接字(sockets)的使用统计信息

ALL 报告所有类型的网络活动统计信息

-x {pid|SELF|ALL} 输出指定进程的统计信息。

pid 用 pid 指定特定的进程

SELF 表示 sar 自身

ALL 表示所有进程

-X {pid|SELF|ALL} 输出指定进程的子进程的统计信息

-I {irq|SUM|ALL|XALL} 输出指定中断的统计信息。

irq 指定中断号

SUM 指定输出每秒接收到的中断总数

ALL 指定输出前16个中断

XALL 指定输出全部的中断信息

-P {cpu|ALL} 输出指定 CPU 的统计信息

-o filename 将输出信息保存到文件 filename

-f filename 从文件 filename 读取数据信息。filename 是使用-o 选项时生成的文件。

-s hh:mm:ss 指定输出统计数据的起始时间

-e hh:mm:ss 指定输出统计数据的截至时间,默认为18:00:00