linux程式分析工具介紹(三)——sar

來源:互聯網
上載者:User

標籤:class   c   code   a   int   com   

本文要介紹的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,通過這個選項,我們可以瞭解當前系統中記憶體的使用方式

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

      請看上面的例子,sar -r 1 3 表示時間間隔為1秒,統計3次,最後一行為3次的均值。
(2)換頁統計:-B,通過這個選項,我們可以瞭解當前系統中,頁交換的情況

12345678
[email protected]:~/work/test$ sar -B 1 3Linux 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    %vmeff06:56:49 PM      0.00      0.00   1438.00      0.00   3001.00      0.00      0.00      0.00      0.0006:56:50 PM      0.00      0.00    796.00      0.00   1620.00      0.00      0.00      0.00      0.0006:56:51 PM      0.00      0.00    770.00      0.00   1580.00      0.00      0.00      0.00      0.00Average:         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的話,只列一些比較常用的指標:

12345678
[email protected]:~/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     %idle07:21:09 PM     all      1.01      0.00      1.01      0.00      0.00      0.00      0.00      0.00     97.9807:21:10 PM     all      0.50      0.00      1.00      0.00      0.00      0.00      0.00      0.00     98.5107:21:11 PM     all      0.99      0.00      0.99      0.00      0.00      0.00      0.00      0.00     98.02Average:        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的統計:

123456789101112131415161718192021222324252627282930
[email protected]:~/work/test$ sar -P 0 1 3Linux 2.6.38-8-generic (ubuntu) 07/09/2011 _i686_(2 CPU) 07:44:42 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle07:44:43 PM       0      1.06      0.00      2.13      0.00      0.00     96.8107:44:44 PM       0      0.00      0.00      0.97      0.00      0.00     99.0307:44:45 PM       0      0.97      0.00      1.94      0.00      0.00     97.09Average:          0      0.67      0.00      1.67      0.00      0.00     97.67[email protected]:~/work/test$ sar -P ALL 1 3Linux 2.6.38-8-generic (ubuntu) 07/09/2011 _i686_(2 CPU) 07:46:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle07:46:02 PM     all      1.51      0.00      3.52      0.00      0.00     94.9707:46:02 PM       0      3.00      0.00      6.00      0.00      0.00     91.0007: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     %idle07:46:03 PM     all      1.01      0.00      1.52      0.00      0.00     97.4707:46:03 PM       0      1.04      0.00      2.08      0.00      0.00     96.8807: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     %idle07:46:04 PM     all      0.00      0.00      1.50      0.00      0.00     98.5007:46:04 PM       0      1.00      0.00      3.00      0.00      0.00     96.0007:46:04 PM       1      0.00      0.00      0.00      0.00      0.00    100.00 Average:        CPU     %user     %nice   %system   %iowait    %steal     %idleAverage:        all      0.84      0.00      2.18      0.00      0.00     96.98Average:          0      1.69      0.00      3.72      0.00      0.00     94.59Average:          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

123456789101112131415
[email protected]:~/work/test$ sar -b 1 10Linux 2.6.38-8-generic (ubuntu) 07/09/2011 _i686_(2 CPU) 07:55:30 PM       tps      rtps      wtps   bread/s   bwrtn/s07:55:31 PM      0.00      0.00      0.00      0.00      0.0007:55:32 PM      0.00      0.00      0.00      0.00      0.0007:55:33 PM      0.00      0.00      0.00      0.00      0.0007:55:34 PM      0.00      0.00      0.00      0.00      0.0007:55:35 PM      6.00      0.00      6.00      0.00    112.0007:55:36 PM      0.00      0.00      0.00      0.00      0.0007:55:37 PM      0.00      0.00      0.00      0.00      0.0007:55:38 PM      0.00      0.00      0.00      0.00      0.0007:55:39 PM      0.00      0.00      0.00      0.00      0.0007:55:40 PM     10.00      0.00     10.00      0.00     80.00Average:         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,看每個裝置上的讀寫情況:

123456789101112131415161718
[email protected]:~/work/test$ sar -n DEV 1 3Linux 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/s08:05:34 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0008: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/s08:05:35 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0008: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/s08:05:36 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0008: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/sAverage:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00Average:         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的情況。說到底,用什麼工具不是關鍵,解決問題才是我們的目的。另外,瞭解了這些工具的用法,還要學會如何使用它們去解決實際的問題,這是最重要的,後續我將就如何通過這些工具來最佳化應用程式寫幾篇文章,分享給大家,敬請期待。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.