sar 命令

sar 命令(System Activity Reporter系统活动情况报告)

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

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

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

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

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



sar 既能报告当前数据,也能报告历史数据

不带选项执行会以10分钟为间隔报告自午夜起当天的CPU利用率。

脚本sal收集了这些历史数据,它是sar软件包的一部分,必须设置为定期从cron里运行

sar把自已收集的数据以二进制格式保存在/var/log/sa里


使用 sar -d 可以得到当天磁盘活动的情况汇总

sar -n  DEV 则能给出网络接口的统计信息

sar -A 可以报告所有的信息

sar 适用于快速粗略了解历史信息。

sar 命令行的常用格式:

sar命令常用格式
sar [options] [-A] [-o file] t [n]
其中:t为采样间隔,n为采样次数,默认值是1;
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
 
主选项和报告:
        -A      所有报告的总和
        -a      文件读写情况
        -b      I/O 和传输速率信息状况       
        -B      分页状况
        -c      输出进程统计信息,每秒创建的进程数
        -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 设备状况


使用:

  1. # sar  
  2. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  3.    
  4. 12:00:01 AM       CPU     %user     %nice   %system   %iowait     %idle  
  5. 12:10:01 AM       all     14.99      0.00      1.27      2.85     80.89  
  6. 12:20:01 AM       all     14.97      0.00      1.20      2.70     81.13  
  7. 12:30:01 AM       all     15.80      0.00      1.39      3.00     79.81  
  8. 12:40:01 AM       all     10.26      0.00      1.25      3.55     84.93  
  9. ... and so on ...  
  10.   
  11. 输出显示在 10 分钟的间隔内收集的与 CPU 有关的指标。这些列的含义如下:  
  12.   
  13. CPU      CPU 标识符;“all”表示所有 CPU  
  14.   
  15. %user    用户进程使用的 CPU 百分比。Oracle 进程属于这一类。  
  16.   
  17. %nice    在 nice 优先级下执行的 CPU 利用率百分比  
  18.   
  19. %system  执行系统进程的 CPU 百分比  
  20.   
  21. %iowait  等待进行 I/O 操作的 CPU 百分比  
  22.   
  23. %idle    等待工作的 CPU 空闲百分比  
  24.   
  25. 从以上输出,您可能以为系统已经得到了很好的平衡;但实际上是严重利用不足(从较高的空闲百分比可以看出)。进一步查看输出,我们看到以下内容:  
  26.   
  27. ... continued from above ...  
  28. 03:00:01 AM       CPU     %user     %nice   %system   %iowait     %idle  
  29. 03:10:01 AM       all     44.99      0.00      1.27      2.85     40.89  
  30. 03:20:01 AM       all     44.97      0.00      1.20      2.70     41.13  
  31. 03:30:01 AM       all     45.80      0.00      1.39      3.00     39.81  
  32. 03:40:01 AM       all     40.26      0.00      1.25      3.55     44.93  
  33. ... and so on ...  
  34. 这告诉我们另外一回事:在 3:00 和 3:40 之间某些用户进程加载了该系统。可能是在执行开销比较大的查询,  
  35. 也可能是正在运行某个 RMAN 作业,从而消耗了这么多 CPU。这就是 sar 命令非常有用之处,该命令重放记录的数据,  
  36. 显示从某个特定时间起而不是现在的数据。这样您就完全实现了在该部分开头所述的三个目标:获取历史数据、查找使用模式以及了解趋势。  
  37.   
  38. 如果您想查看特定日期的 sar 数据,只需使用下面所示的 -f 选项打开具有该文件名的 sar(打开第 26 日的数据)  
  39.  
  40. # sar -f /var/log/sa/sa26  
  41. 与 vmstat 或 mpstat 一样,该命令还可以显示实时数据。要每隔 5 秒获取一次数据,共 10 次,请使用:  
  42.  
  43. # sar 5 10  
  44. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  45.    
  46. 01:39:16 PM       CPU     %user     %nice   %system   %iowait     %idle  
  47. 01:39:21 PM       all     20.32      0.00      0.18      1.00     78.50  
  48. 01:39:26 PM       all     23.28      0.00      0.20      0.45     76.08  
  49. 01:39:31 PM       all     29.45      0.00      0.27      1.45     68.83  
  50. 01:39:36 PM       all     16.32      0.00      0.20      1.55     81.93  
  51. … and so on 10 times …  
  52. 您注意到 CPU 下的“all”值了吗?它意味着是所有 CPU 的总计统计信息。这比较适合单处理器系统,  
  53. 但在多处理器系统中,您可能希望获取各个 CPU 的统计信息以及总计统计信息。-P ALL 选项可以实现该目标。  
  54.  
  55. #sar -P ALL 2 2  
  56. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  57.    
  58. 01:45:12 PM       CPU     %user     %nice   %system   %iowait     %idle  
  59. 01:45:14 PM       all     22.31      0.00     10.19      0.69     66.81  
  60. 01:45:14 PM         0      8.00      0.00     24.00      0.00     68.00  
  61. 01:45:14 PM         1     99.00      0.00      1.00      0.00      0.00  
  62. 01:45:14 PM         2      6.03      0.00     18.59      0.50     74.87  
  63. 01:45:14 PM         3      3.50      0.00      8.50      0.00     88.00  
  64. 01:45:14 PM         4      4.50      0.00     14.00      0.00     81.50  
  65. 01:45:14 PM         5     54.50      0.00      6.00      0.00     39.50  
  66. 01:45:14 PM         6      2.96      0.00      7.39      2.96     86.70  
  67. 01:45:14 PM         7      0.50      0.00      2.00      2.00     95.50  
  68.    
  69. 01:45:14 PM       CPU     %user     %nice   %system   %iowait     %idle  
  70. 01:45:16 PM       all     18.98      0.00      7.05      0.19     73.78  
  71. 01:45:16 PM         0      1.00      0.00     31.00      0.00     68.00  
  72. 01:45:16 PM         1     37.00      0.00      5.50      0.00     57.50  
  73. 01:45:16 PM         2     13.50      0.00     19.00      0.00     67.50  
  74. 01:45:16 PM         3      0.00      0.00      0.00      0.00    100.00  
  75. 01:45:16 PM         4      0.00      0.00      0.50      0.00     99.50  
  76. 01:45:16 PM         5     99.00      0.00      1.00      0.00      0.00  
  77. 01:45:16 PM         6      0.50      0.00      0.00      0.00     99.50  
  78. 01:45:16 PM         7      0.00      0.00      0.00      1.49     98.51  
  79.    
  80. Average:          CPU     %user     %nice   %system   %iowait     %idle  
  81. Average:          all     20.64      0.00      8.62      0.44     70.30  
  82. Average:            0      4.50      0.00     27.50      0.00     68.00  
  83. Average:            1     68.00      0.00      3.25      0.00     28.75  
  84. Average:            2      9.77      0.00     18.80      0.25     71.18  
  85. Average:            3      1.75      0.00      4.25      0.00     94.00  
  86. Average:            4      2.25      0.00      7.25      0.00     90.50  
  87. Average:            5     76.81      0.00      3.49      0.00     19.70  
  88. Average:            6      1.74      0.00      3.73      1.49     93.03  
  89. Average:            7      0.25      0.00      1.00      1.75     97.01  
  90. 这表示 CPU 标识符(以 0 开头)以及每个 CPU 的统计信息。在输出的结尾处,您将看到每个 CPU 的平均运行情况。  
  91.   
  92. 命令 sar 不仅用于获取与 CPU 有关的统计信息。对于获取与内存有关的统计信息也非常有用。-r 选项显示大量利用内存的情况。  
  93.  
  94. # sar -r  
  95. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  96.    
  97. 12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad  
  98. 12:10:01 AM    712264  32178920     97.83   2923884  25430452  16681300     95908      0.57       380  
  99. 12:20:01 AM    659088  32232096     98.00   2923884  25430968  16681300     95908      0.57       380  
  100. 12:30:01 AM    651416  32239768     98.02   2923920  25431448  16681300     95908      0.57       380  
  101. 12:40:01 AM    651840  32239344     98.02   2923920  25430416  16681300     95908      0.57       380  
  102. 12:50:01 AM    700696  32190488     97.87   2923920  25430416  16681300     95908      0.57       380  
  103.   
  104. 让我们看一看每个列的含义:  
  105.   
  106. kbmemfree    此时可用内存的数量,以 KB 为单位  
  107.   
  108. kbmemused    此时已使用的内存数量,以 KB 为单位  
  109.   
  110. %memused     已使用内存的百分比  
  111.   
  112. kbbuffers    用作缓冲区的内存百分比  
  113.   
  114. kbcached     用作缓存的内存百分比  
  115.   
  116. kbswpfree    此时可用交换区空间的大小,以 KB 为单位  
  117.   
  118. kbswpused    此时已使用的交换空间大小,以 KB 为单位  
  119.   
  120. %swpused     此时已使用交换区的百分比  
  121.   
  122. kbswpcad     此时缓存的交换区大小,以 KB 为单位  
  123.   
  124. 在输出的结尾处,您将看到该时间段内的平均数字。  
  125.   
  126. 还可以获取与特定内存有关的统计信息。-B 选项显示与分页有关的活动。  
  127.  
  128. # sar -B  
  129. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  130.    
  131. 12:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  
  132. 12:10:01 AM    134.43    256.63   8716.33      0.00  
  133. 12:20:01 AM    122.05    181.48   8652.17      0.00  
  134. 12:30:01 AM    129.05    253.53   8347.93      0.00  
  135.   
  136. 该列显示当时 而不是现在的指标。  
  137.   
  138. pgpgin/s    每秒从磁盘分到内存中的页面数  
  139.   
  140. pgpgout/s   每秒从内存分到磁盘的页面数  
  141.   
  142. fault/s     每秒的页面故障数  
  143.   
  144. majflt/s    每秒的主要页面故障数  
  145.   
  146. 要获得与交换有关活动的类似输出,可以使用 -W 选项。  
  147.  
  148. # sar -W  
  149. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  150.    
  151. 12:00:01 AM  pswpin/s pswpout/s  
  152. 12:10:01 AM      0.00      0.00  
  153. 12:20:01 AM      0.00      0.00  
  154. 12:30:01 AM      0.00      0.00  
  155. 12:40:01 AM      0.00      0.00  
  156. ... and so on ...  
  157. 尽管这些列可能无需加以说明,下面还是提供了每列的说明:  
  158.   
  159. pswpin/s    每秒从磁盘交换回内存的内存页数  
  160.   
  161. pswpout/s   每秒从内存交换到磁盘的内存页数  
  162.   
  163.   
  164. 如果您看到交换很多,则表示可能有内存不足问题。这不是定论,而是出现问题的可能性比较大。  
  165.   
  166. 要获得磁盘设备的统计,请使用 -d 选项:  
  167.  
  168. # sar -d  
  169. Linux 2.6.9-55.0.9.ELlargesmp (prolin3)     12/27/2008  
  170.    
  171. 12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s  
  172. 12:10:01 AM    dev1-0      0.00      0.00      0.00  
  173. 12:10:01 AM    dev1-1      5.12      0.00    219.61  
  174. 12:10:01 AM    dev1-2      3.04     42.47     22.20  
  175. 12:10:01 AM    dev1-3      0.18      1.68      1.41  
  176. 12:10:01 AM    dev1-4      1.67     18.94     15.19  
  177. ... and so on ...  
  178. Average:      dev8-48      4.48    100.64     22.15  
  179. Average:      dev8-64      0.00      0.00      0.00  
  180. Average:      dev8-80      2.00     47.82      5.37  
  181. Average:      dev8-96      0.00      0.00      0.00  
  182. Average:     dev8-112      2.22     49.22     12.08  
  183. 下面是对各列的说明。同样,它们也表示当时的指标。  
  184.   
  185. tps  
  186.   
  187. 每秒进行的传输数。传输数就是 I/O 操作数。注:这只是操作数量,每个操作可能很大,也可能很小。  
  188. 因此,单独这个并不能说明全部问题。  
  189.   
  190. rd_sec/s   每秒从磁盘读取的扇区数  
  191.   
  192. wr_sec/s   每秒写入磁盘的扇区数  
  193.   
  194. 要获得历史网络统计信息,使用 -n 选项:  
  195.  
  196. # sar -n DEV | more  
  197. Linux 2.6.9-42.0.3.ELlargesmp (prolin3)     12/27/2008  
  198.    
  199. 12:00:01 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s  
  200. 12:10:01 AM        lo      4.54      4.54    782.08    782.08      0.00      0.00      0.00  
  201. 12:10:01 AM      eth0      2.70      0.00    243.24      0.00      0.00      0.00      0.99  
  202. 12:10:01 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  203. 12:10:01 AM      eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  204. 12:10:01 AM      eth3      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  205. 12:10:01 AM      eth4    143.79    141.14  73032.72  38273.59      0.00      0.00      0.99  
  206. 12:10:01 AM      eth5      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  207. 12:10:01 AM      eth6      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  208. 12:10:01 AM      eth7      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  209. 12:10:01 AM     bond0    146.49    141.14  73275.96  38273.59      0.00      0.00      1.98  
  210. … and so on …  
  211. Average:        bond0    128.73    121.81  85529.98  27838.44      0.00      0.00      1.98  
  212. Average:         eth8      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  213. Average:         eth9      3.52      6.74    251.63  10179.83      0.00      0.00      0.00  
  214. Average:         sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00  
  215. rxpck/s:每秒钟接收的数据包
    txpck/s:每秒钟发送的数据包
    rxbyt/s:每秒钟接收的字节数
    txbyt/s:每秒钟发送的字节数
    rxcmp/s:每秒钟接收的压缩数据包
    txcmp/s:每秒钟发送的压缩数据包
    rxmcst/s:每秒钟接收的多播数据包
      
  216. 总而言之,使用 sar 命令的这些选项可以获得组件的指标:  
  217.   
  218. 使用该选项 …  
  219.   
  220. … 获得有关以下组件的统计信息:  
  221.   
  222. -P   特定 CPU  
  223.   
  224. -d   磁盘  
  225.   
  226. -r   内存  
  227.    
  228. -B   分页  
  229.   
  230. -W   交换  
  231.   
  232. -n   网络  

    


对网络的专门实例:  sar -n DEV 1 
sar命令使用-n选项可以回报网络相关信息,可用参数包括:DEV、EDEV、SOCK、FULL。

例如: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三者的综合。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值