首页 > 程序人生 > linux程序分析工具介绍(三)——sar

linux程序分析工具介绍(三)——sar

本文要介绍的sar,是linux下用来分析系统本身运行情况的非常有用的工具。我们知道,程序在操作系统上要运行,要关注的点不外乎内存,CPU和IO(包括磁盘IO和网络IO)。我们的应用程序在操作系统中运行前,我们需要了解系统当前的内存,cpu和IO的使用状况,还需要明白我们的应用程序运行时自身所需要的内存,cpu和IO资源的情况。只有操作系统剩余的内存,cpu和IO资源能够满足应用程序所需要的,才能保证应用程序在操作系统中正常的运行。sar就是用来帮助我们了解操作系统当前内存,cpu和IO等资源的使用情况的一个非常方便的工具,下面通过具体的例子来介绍sar的使用。
在介绍例子之前,首先需要说一下sar命令的基本用法:sar [option] [interval] [count]

  • 1. 通过sar获取系统内存使用相关信息
  • (1)内存使用情况统计:-r,通过这个选项,我们可以了解当前系统中内存的使用情况

    1
    2
    3
    4
    5
    6
    7
    8
    
    wuzesheng@ubuntu:~/work/test$ sar -r 1 3
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    06:33:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact
    06:33:02 PM    458664    566488     55.26     96268    265056   1034780     49.95    262500    254888
    06:33:03 PM    458664    566488     55.26     96268    265056   1034780     49.95    262468    254888
    06:33:04 PM    458696    566456     55.26     96268    265056   1034780     49.95    262468    254888
    Average:       458675    566477     55.26     96268    265056   1034780     49.95    262479    254888

    请看上面的例子,sar -r 1 3 表示时间间隔为1秒,统计3次,最后一行为3次的均值。
    (2)换页统计:-B,通过这个选项,我们可以了解当前系统中,页交换的情况

    1
    2
    3
    4
    5
    6
    7
    8
    
    wuzesheng@ubuntu:~/work/test$ sar -B 1 3
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    06:56:48 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
    06:56:49 PM      0.00      0.00   1438.00      0.00   3001.00      0.00      0.00      0.00      0.00
    06:56:50 PM      0.00      0.00    796.00      0.00   1620.00      0.00      0.00      0.00      0.00
    06:56:51 PM      0.00      0.00    770.00      0.00   1580.00      0.00      0.00      0.00      0.00
    Average:         0.00      0.00   1001.33      0.00   2067.00      0.00      0.00      0.00      0.00

    上面是每1秒统计一次,统计3次的结果,最后一行为3次的均值。
    以上便是关于内存的比较关键的两个指标,通过上面两个选项,系统内存使用相关的情况可以一目了然。

  • 2. 通过sar获取系统cpu使用相关信息
  • (1)CPU总体使用情况统计:-u, 用法为sar -u [ALL] [interval] [count], 加上ALL表示列出所有的关于cpu的统计项,如果不加ALL的话,只列一些比较常用的指标:

    1
    2
    3
    4
    5
    6
    7
    8
    
    wuzesheng@ubuntu:~/work/test$ sar -u ALL 1 3 
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    07:21:08 PM     CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest     %idle
    07:21:09 PM     all      1.01      0.00      1.01      0.00      0.00      0.00      0.00      0.00     97.98
    07:21:10 PM     all      0.50      0.00      1.00      0.00      0.00      0.00      0.00      0.00     98.51
    07:21:11 PM     all      0.99      0.00      0.99      0.00      0.00      0.00      0.00      0.00     98.02
    Average:        all      0.83      0.00      1.00      0.00      0.00      0.00      0.00      0.00     98.17

    上面是每1秒统计一次,统计3次后的的结果,最后一行为3次的平均值。
    (2)每个CPU的单独的统计: -P,用法为sar -P { cpu [,…] | ALL } [interval] [count],这里第二个参数可以指定cpu序号,来查看指定的cpu,或者指定ALL,查看所有cpu的统计:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    wuzesheng@ubuntu:~/work/test$ sar -P 0 1 3
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    07:44:42 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    07:44:43 PM       0      1.06      0.00      2.13      0.00      0.00     96.81
    07:44:44 PM       0      0.00      0.00      0.97      0.00      0.00     99.03
    07:44:45 PM       0      0.97      0.00      1.94      0.00      0.00     97.09
    Average:          0      0.67      0.00      1.67      0.00      0.00     97.67
    wuzesheng@ubuntu:~/work/test$ sar -P ALL 1 3
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    07:46:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    07:46:02 PM     all      1.51      0.00      3.52      0.00      0.00     94.97
    07:46:02 PM       0      3.00      0.00      6.00      0.00      0.00     91.00
    07:46:02 PM       1      0.00      0.00      2.00      0.00      0.00     98.00
     
    07:46:02 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    07:46:03 PM     all      1.01      0.00      1.52      0.00      0.00     97.47
    07:46:03 PM       0      1.04      0.00      2.08      0.00      0.00     96.88
    07:46:03 PM       1      0.00      0.00      0.00      0.00      0.00    100.00
     
    07:46:03 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    07:46:04 PM     all      0.00      0.00      1.50      0.00      0.00     98.50
    07:46:04 PM       0      1.00      0.00      3.00      0.00      0.00     96.00
    07:46:04 PM       1      0.00      0.00      0.00      0.00      0.00    100.00
     
    Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
    Average:        all      0.84      0.00      2.18      0.00      0.00     96.98
    Average:          0      1.69      0.00      3.72      0.00      0.00     94.59
    Average:          1      0.00      0.00      0.67      0.00      0.00     99.33

    上面是每1秒统计一次,统计3次后的的结果,最后一行为3次的平均值。我们可以看出,这里每个CPU的情况都列的非常清楚。
    通过上面两个选项,关于CPU的基本使用情况,都一目了然了。

  • 3. 通过sar获取系统IO信息
  • (1)磁盘设备IO情况统计:-b, 用来统计对物理设备的IO状态,主要是磁盘IO

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    wuzesheng@ubuntu:~/work/test$ sar -b 1 10
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    07:55:30 PM       tps      rtps      wtps   bread/s   bwrtn/s
    07:55:31 PM      0.00      0.00      0.00      0.00      0.00
    07:55:32 PM      0.00      0.00      0.00      0.00      0.00
    07:55:33 PM      0.00      0.00      0.00      0.00      0.00
    07:55:34 PM      0.00      0.00      0.00      0.00      0.00
    07:55:35 PM      6.00      0.00      6.00      0.00    112.00
    07:55:36 PM      0.00      0.00      0.00      0.00      0.00
    07:55:37 PM      0.00      0.00      0.00      0.00      0.00
    07:55:38 PM      0.00      0.00      0.00      0.00      0.00
    07:55:39 PM      0.00      0.00      0.00      0.00      0.00
    07:55:40 PM     10.00      0.00     10.00      0.00     80.00
    Average:         1.60      0.00      1.60      0.00     19.20

    (2)网络设备IO情况统计:-n, 用法sar -n { keyword [,…] | ALL }, keyword包括DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和 UDP6,不同的keyword统计不同的方面,关于网络IO的统计主要是用DEV,看每个设备上的读写情况:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    wuzesheng@ubuntu:~/work/test$ sar -n DEV 1 3
    Linux 2.6.38-8-generic (ubuntu) 	07/09/2011 	_i686_	(2 CPU)
     
    08:05:33 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    08:05:34 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    08:05:34 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
     
    08:05:34 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    08:05:35 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    08:05:35 PM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
     
    08:05:35 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    08:05:36 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    08:05:36 PM      eth0      0.00      0.00      0.00      0.00      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      0.00      0.00      0.00      0.00      0.00      0.00      0.00

    上面是每1秒统计1次,统计3次的结果,最后几列为均值。
    通过上述选项,关于磁盘IO和网络IO的情况便可以一目了然。
    通过本文的内容,关于内存、cpu、IO的情况,我们便可以清楚的了解,其实,在linux下有很多工具可以完成上面的功能,只不过sar是相对比较全面的工具,所以在这里重点介绍了一下。其它的工具,包括vmstat可以用来查看内存的使用情况,top可以用来查看cpu的使用情况,iostat可以用来查看io的情况。说到底,用什么工具不是关键,解决问题才是我们的目的。另外,了解了这些工具的用法,还要学会如何使用它们去解决实际的问题,这是最重要的,后续我将就如何通过这些工具来优化应用程序写几篇文章,分享给大家,敬请期待。

    1. 2011年7月14日14:40 | #1

      我要去走访N多的博客,为了证明我去过很多博客,请容许我留下一些脚印。

    2. 2011年7月15日13:35 | #2

      写的不错,分析系统瓶颈时用这个工具还是不错的。

    1. 本文目前尚无任何 trackbacks 和 pingbacks.
    您必须在 登录 后才能发布评论.