Linux sar命令詳解之分析系統性能案例

sar 命令很強大,是分析系統性能的重要工具之一,通過該命令可以全面地獲取系統的 CPU、運行隊列、磁盤讀寫(I/O)、分區(交換區)、內存、CPU 中斷和網絡等性能數據。

sar 命令的基本格式如下:

[root@localhost ~]# sar [options] [-o filename] interval [count]

此命令格式中,各個參數的含義如下:

  • -o filename:其中,filename 為文件名,此選項表示將命令結果以二進制格式存放在文件中;
  • interval:表示采樣間隔時間,該參數必須手動設置;
  • count:表示采樣次數,是可選參數,其默認值為 1;
  • options:為命令行選項,由於 sar 命令提供的選項很多,這裡不再一一介紹,僅列舉出常用的一些選項及對應的功能,如表 1 所示。
表 1 sar 命令行選項及功能
sar命令選項 功能
-A 顯示系統所有資源設備(CPU、內存、磁盤)的運行狀況。
-u 顯示系統所有 CPU 在采樣時間內的負載狀態。
-P 顯示當前系統中指定 CPU 的使用情況。
-d 顯示系統所有硬盤設備在采樣時間內的使用狀態。
-r 顯示系統內存在采樣時間內的使用情況。
-b 顯示緩沖區在采樣時間內的使用情況。
-v 顯示 inode 節點、文件和其他內核表的統計信息。
-n 顯示網絡運行狀態,此選項後可跟 DEV(顯示網絡接口信息)、EDEV(顯示網絡錯誤的統計數據)、SOCK(顯示套接字信息)和 FULL(等同於使用 DEV、EDEV和SOCK)等,有關更多的選項,可通過執行 man sar 命令查看。
-q 顯示運行列表中的進程數、進程大小、系統平均負載等。
-R 顯示進程在采樣時的活動情況。
-y 顯示終端設備在采樣時間的活動情況。
-w 顯示系統交換活動在采樣時間內的狀態。

有關 sar 命令更多可用的選項及功能,可通過執行 man sar 命令查看。

【例 1】
如果想要查看系統 CPU 的整理負載狀況,每 3 秒統計一次,統計 5 次,可以執行如下命令:

[root@localhost ~]# sar -u 3 5
Linux 2.6.32-431.el6.x86_64 (localhost)     10/25/2019     _x86_64_    (1 CPU)

06:18:23 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
06:18:26 AM     all     12.11      0.00      2.77      3.11      0.00     82.01
06:18:29 AM     all      6.55      0.00      2.07      0.00      0.00     91.38
06:18:32 AM     all      6.60      0.00      2.08      0.00      0.00     91.32
06:18:35 AM     all     10.21      0.00      1.76      0.00      0.00     88.03
06:18:38 AM     all      8.71      0.00      1.74      0.00      0.00     89.55
Average:        all      8.83      0.00      2.09      0.63      0.00     88.46

此輸出結果中,各個列表項的含義分別如下:

  • %user:用於表示用戶模式下消耗的 CPU 時間的比例;
  • %nice:通過 nice 改變瞭進程調度優先級的進程,在用戶模式下消耗的 CPU 時間的比例;
  • %system:系統模式下消耗的 CPU 時間的比例;
  • %iowait:CPU 等待磁盤 I/O 導致空閑狀態消耗的時間比例;
  • %steal:利用 Xen 等操作系統虛擬化技術,等待其它虛擬 CPU 計算占用的時間比例;
  • %idle:CPU 空閑時間比例。

【例 2】
如果想要查看系統磁盤的讀寫性能,可執行如下命令:

[root@localhost ~]# sar -d 3 5
Linux 2.6.32-431.el6.x86_64 (localhost)     10/25/2019     _x86_64_    (1 CPU)

06:36:52 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
06:36:55 AM    dev8-0      3.38      0.00    502.26    148.44      0.08     24.11      4.56      1.54

06:36:55 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
06:36:58 AM    dev8-0      1.49      0.00     29.85     20.00      0.00      1.75      0.75      0.11

06:36:58 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
06:37:01 AM    dev8-0     68.26      6.96  53982.61    790.93      3.22     47.23      3.54     24.17

06:37:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
06:37:04 AM    dev8-0    111.69   3961.29    154.84     36.85      1.05      9.42      3.44     38.43

06:37:04 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
06:37:07 AM    dev8-0      1.67    136.00      2.67     83.20      0.01      6.20      6.00      1.00

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:       dev8-0     34.45    781.10   9601.22    301.36      0.78     22.74      3.50     12.07

此輸出結果中,各個列表頭的含義如下:

  • 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 的百分比,比率越大,說明越飽和。

除此之外,如果想要查看系統內存使用情況,可以執行sar -r 5 3命令;如果要想查看網絡運行狀態,可執行sar -n DEV 5 3命令,等等。有關其它參數的用法,這裡不再給出具體實例,有興趣的讀者可自行測試,觀察運行結果。

到此這篇關於Linux sar命令詳解之分析系統性能案例的文章就介紹到這瞭,更多相關Linux sar命令內容請搜索GuideAH以前的文章或繼續瀏覽下面的相關文章,希望大傢以後多多支持GuideAH!

閱讀更多: