Linux - sar 命令详解

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