SAR命令详细用法

一、sysstat工具简介

sysstat  Linux系统中的常用工具包。它的主要用途是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。

sysstat 工具包中包含两类工具:

·        即时查看工具:iostatmpstatsar

·        累计统计工具:sar

也就是说,sar具有这两种功能。因此,sar sysstat 中的核心工具。

为了实现 sar的累计统计,系统必须周期地记录当时的信息,这是通过调用/usr/lib/sa/中的三个工具实现的:

·        sa1:收集并存储每天系统动态信息到一个二进制的文件中,用作 sadc的前端程序

·        sa2:收集每天的系统活跃信息写入总结性的报告,用作 sar的前端程序

·        sadc:系统动态数据收集工具,收集的数据被写入一个二进制的文件中,它被用作 sar工具的后端

·         CentOS系统的默认设置中,以如下的方式使用这三个工具:

 1. 在守护进程/etc/rc.d/init.d/sysstat中使用 /usr/lib/sa/sadc  -F -L

     - 命令创建当日记录文件,文件为 /var/log/sa/saDD,其中 DD 为当天的日期。当系统重新启动后,会向文件 /var/log/sa/saDD 输出类似 11:37:16   AM LINUX  RESTART 这样的行信息。

2.  cron任务 /etc/cron.d/sysstat中每隔10分钟执行一次 /usr/lib/sa/sa1 1 1 命令,将信息写入文件 /var/log/sa/saDD    

3. cron任务/etc/cron.d/sysstat中每天 23:53执行一次 /usr/lib/sa/sa2 -A   命令,将当天的汇总信息写入文件 /var/log/sa/sarDD

您可以修改/etc/cron.d/sysstat以适合您的需要。

另外,文件 /var/log/sa/saDD 为二进制文件,不能使用 moreless 等文本工具查看,必须用 sar sadf 命令查看。


二、SAR命令介绍

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

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


SAR命令格式

# sar -help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

其中:

·        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

 1. CPU资源监控(-u,或-P ALL)

例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中,需键入如下命令:

sar -u -o test 10 3

屏幕显示如下:

17:06:16 CPU %user %nice %system %iowait %steal %idle

17:06:26 all 0.00 0.00 0.20 0.00 0.00 99.80

17:06:36 all 0.00 0.00 0.20 0.00 0.00 99.80

17:06:46 all 0.00 0.00 0.10 0.00 0.00 99.90

Average: all 0.00 0.00 0.17 0.00 0.00 99.83

输出项说明:

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 。

如果要查看二进制文件test中的内容,需键入如下sar命令:

sar -u -f test

2. inode、文件和其他内核表监控(-v)

例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:

sar -v 10 3

屏幕显示如下:

17:10:49 dentunusd file-nr inode-nr pty-nr

17:10:59 6301 5664 12037 4

17:11:09 6301 5664 12037 4

17:11:19 6301 5664 12037 4

Average: 6301 5664 12037 4

输出项说明:

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

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

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

pty-nr:使用的pty数量

3. 内存和交换空间监控(-r)

例如,每10秒采样一次,连续采样3次,监控内存分页:

sar -r 10 3

屏幕显示如下:

输出项说明:

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

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

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

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

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

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

4. 内存分页监控

例如,每10秒采样一次,连续采样3次,监控内存分页:

sar -B 10 3

屏幕显示如下:

输出项说明:

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)的百分比

5. I/O和传送速率监控(-b)

例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:

sar -b 10 3

屏幕显示如下:

18:51:05 tps rtps wtps bread/s bwrtn/s

18:51:15 0.00 0.00 0.00 0.00 0.00

18:51:25 1.92 0.00 1.92 0.00 22.65

18:51:35 0.00 0.00 0.00 0.00 0.00

Average: 0.64 0.00 0.64 0.00 7.59

输出项说明:

tps:每秒钟物理设备的 I/O 传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

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

例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:

sar -q 10 3

屏幕显示如下:

19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15

19:26:00 0 259 0.00 0.00 0.00

19:26:10 0 259 0.00 0.00 0.00

19:26:20 0 259 0.00 0.00 0.00

Average: 0 259 0.00 0.00 0.00

输出项说明:

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(System load average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

7. 系统交换活动信息监控

例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:

sar -    W 10 3

屏幕显示如下:

19:39:50 pswpin/s pswpout/s

19:40:00 0.00 0.00

19:40:10 0.00 0.00

19:40:20 0.00 0.00

Average: 0.00 0.00

输出项说明:

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

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

8. 设备使用情况监控(-d)

例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:

# sar -d 10 3 –p

屏幕显示如下:

17:45:54    DEV    tps    rd_sec/s    wr_sec/s    avgrq-sz    avgqu-sz    await    svctm    %util

17:46:04    scd0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    sda    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    vg_livedvd-lv_root    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    vg_livedvd-lv_swap    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

其中:

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

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的百分比,比率越大,说明越饱和.

1. avgqu-sz 的值较低时,设备的利用率较高。

2. 当%util的值接近 1% 时,表示设备带宽已经占满。

9.网络统计(-n)

使用-n选项可以对网络使用情况进行显示,-n后接关键词”DEV”可显示eth0、eth1等网卡的信息: 
sar -n DEV 1 1 
# sar -n DEV 1 1
Linux 2.6.32-358.el6.x86_64 (host_linux)01/17/2018 _x86_64_(2 CPU)
01:39:36 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
01:39:37 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:39:37 PM      eth0     23.23      1.01      1.55      0.10      0.00      0.00      0.00
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0     23.23      1.01      1.55      0.10      0.00      0.00      0.00

例如:sar -n DEV 1 2  将显示lo、eth0、eth1等信息 
IFACE:就是网络设备的名称; 
rxpck/s:每秒钟接收到的包数目 
txpck/s:每秒钟发送出去的包数目 
rxbyt/s:每秒钟接收到的字节数 
txbyt/s:每秒钟发送出去的字节数
 
rxcmp/s:每秒钟接收到的压缩包数目 
txcmp/s:每秒钟发送出去的压缩包数目 
txmcst/s:每秒钟接收到的多播包的包数目

sar -n EDEV 1 3 会针对网络设备回报其失败情况 
rxerr/s:每秒钟接收到的损坏的包的数目 
txerr/s:当发送包时,每秒钟发生的错误数 
coll/s:当发送包时,每秒钟发生的冲撞(collisions)数(这个是在半双工模式下才有) 
rxdrop/s:由于缓冲区满,网络设备接收端,每秒钟丢掉的网络包的数目 
txdrop/s:由于缓冲区满,网络设备发送端,每秒钟丢掉的网络包的数目 
txcarr/s:当发送数据包时,每秒钟载波错误发生的次数 
rxfram/s:在接收数据包时,每秒钟发生的帧对齐错误的次数 
rxfifo/s:在接收数据包时,每秒钟缓冲区溢出错误发生的次数 
txfifo/s:在发送数据包时,每秒钟缓冲区溢出错误发生的次数

sar -n SOCK 1 3 会针对socket连接进行汇报 
totsck:被使用的socket的总数目 
tcpsck:当前正在被使用于TCP的socket数目 
udpsck:当前正在被使用于UDP的socket数目 
rawsck:当前正在被使用于RAW的socket数目 
ip-frag:当前的IP分片的数目

sar -n FULL 1 3 相当于上述DEV、EDEV和SOCK三者的综合。

10.sar日志保存(-o)

使用-o选项,我们可以把sar统计信息保存到一个指定的文件,对于保存的日志,我们可以使用-f选项读取:

linux:~ # sar -n DEV 1 10 -o sar.out 

linux:~ # sar -d 1 10 -f sar.out 
相比将结果重定向到一个文件,使用-o选项,可以保存更多的系统资源信息。

11.sar监控非实时数据

sar也可以监控非实时数据,通过cron周期的运行到指定目录下
例如:我们想查看本月27日,从0点到23点的内存资源.
sa27就是本月27日,指定具体的时间可以通过-s(start)和-e(end)来指定.
sar -f /var/log/sa/sa27 -s 00:00:00 -e 23:00:00 -r





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

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看






  • 10
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: sar(System Activity Reporter)命令是一个系统性能分析工具,它可以用来监控系统的各项指标,如CPU、内存、磁盘、网络等。sar命令通常需要与其他工具配合使用,如awk、sed、grep等,以便对sar输出的数据进行进一步处理。 sar命令的基本用法如下: ``` sar [options] [interval [count]] ``` 其中,options为sar命令的选项,interval为每次统计的时间间隔,count为统计的次数。如果不指定interval和count,则默认每隔1秒钟输出一次统计数据,直到用户手动中断为止。 以下是一些常用的sar命令选项: - -u:显示CPU使用情况 - -r:显示内存使用情况 - -b:显示磁盘I/O使用情况 - -n:显示网络使用情况 - -q:显示系统负载情况 例如,要查看系统CPU使用情况,可以使用以下命令: ``` sar -u 1 5 ``` 该命令将会每隔1秒钟输出一次CPU使用情况,共输出5次。输出结果包括CPU的各项指标,如用户时间、系统时间、空闲时间、等待I/O时间、硬件中断时间、软件中断时间等。 sar命令还可以将输出数据保存到文件中,以供后续分析。例如,要将CPU使用情况输出保存到文件中,可以使用以下命令: ``` sar -u 1 5 > cpu.log ``` 该命令将会将CPU使用情况输出到cpu.log文件中。保存的数据可以使用其他工具进行进一步处理和分析,如awk、sed、grep等。 ### 回答2: sar是一个在Linux系统中常用的性能收集和分析工具。它能够收集并报告系统的各种性能相关的数据,如CPU使用率、内存使用情况、磁盘和网络活动等。 sar命令的基本用法是通过在终端中输入"sar",然后加上相应的选项来获取不同类型的数据。常用的选项包括"-u"用于获取CPU使用率的数据,"-r"用于获取内存使用情况的数据,"-d"用于获取磁盘活动的数据,"-n"用于获取网络活动的数据等。 通过sar命令收集到的数据可以用来分析系统的性能瓶颈和优化调整。比如,可以通过查看CPU使用率的数据来确定是否存在CPU过载的问题,通过查看内存使用情况的数据来确定是否需要增加内存容量,通过查看磁盘活动的数据来确定磁盘性能是否足够等。 sar命令还支持将收集到的数据保存到文件中,以便日后进行分析。可以通过"-o"选项指定保存文件的路径,通过"-f"选项指定读取文件的路径,然后使用"-d"等选项来获取相应的数据并进行分析。 总之,sar命令是一个非常实用的性能监测工具,它能够帮助我们了解系统的运行状况,定位问题并进行优化。通过合理利用sar命令,我们可以更好地管理和维护Linux系统。 ### 回答3: sar命令是一个系统性能监测工具,用于收集和报告系统资源使用情况。它可以记录CPU利用率、内存使用、磁盘活动、网络流量和其他关键系统指标。sar命令通过对系统关键指标进行监测和记录,帮助管理员识别系统中的瓶颈和性能问题。 使用sar命令可以查看系统在给定时间段内的性能情况。可以指定特定时间间隔和持续时间以收集所需的数据。sar命令的输出可在终端以文本格式显示,也可以以二进制文件的形式进行存储,以供稍后分析和查看。 sar命令提供了各种选项,可以根据不同的需求来显示不同的系统性能数据。例如,可以使用"-u"选项来显示CPU的利用率和状态,"-r"选项用于显示内存的使用情况,"-b"选项用于显示磁盘活动等等。 此外,sar命令还可以生成报告和图表,以更直观地显示系统性能数据。通过加入"-o"选项,可以将数据保存到指定的文件中,然后使用sar命令的"-f"选项来分析这些数据。 总之,sar命令是一个功能强大的系统性能监测工具,可以帮助管理员实时监控和分析系统性能,及时解决性能问题,从而提高系统的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值