linux sar 命令詳解

2021-01-07 站長之家

sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁碟I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。本文主要以CentOS 6.3 x64系統為例,介紹sar命令。

sar命令常用格式

sar [options] [-A] [-o file] t [n]

其中:

t為採樣間隔,n為採樣次數,默認值是1;

-o file表示將命令結果以二進位格式存放在文件中,file 是文件名。

options 為命令行選項,sar命令常用選項如下:

-A:所有報告的總和

-u:輸出CPU使用情況的統計信息

-v:輸出inode、文件和其他內核表的統計信息

-d:輸出每一個塊設備的活動信息

-r:輸出內存和交換空間的統計信息

-b:顯示I/O和傳送速率的統計信息

-a:文件讀寫情況

-c:輸出進程統計信息,每秒創建的進程數

-R:輸出內存頁面的統計信息

-y:終端設備活動情況

-w:輸出系統交換活動信息

1. CPU資源監控

例如,每10秒採樣一次,連續採樣3次,觀察CPU 的使用情況,並將採樣結果以二進位形式存入當前目錄下的文件test中,需鍵入如下命令:

sar -u -o test 10 3

屏幕顯示如下:

17:06:16 CPU %user %nice %system %iowait %steal %idle

17:06:26 all 0.00 0.00 0.20 0.00 0.00 99.80

17:06:36 all 0.00 0.00 0.20 0.00 0.00 99.80

17:06:46 all 0.00 0.00 0.10 0.00 0.00 99.90

Average: all 0.00 0.00 0.17 0.00 0.00 99.83

輸出項說明:

CPU:all 表示統計信息為所有 CPU 的平均值。

%user:顯示在用戶級別(application)運行使用 CPU 總時間的百分比。

%nice:顯示在用戶級別,用於nice操作,所佔用 CPU 總時間的百分比。

%system:在核心級別(kernel)運行所使用 CPU 總時間的百分比。

%iowait:顯示用於等待I/O操作佔用 CPU 總時間的百分比。

%steal:管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。

%idle:顯示 CPU 空閒時間佔用 CPU 總時間的百分比。

1. 若 %iowait 的值過高,表示硬碟存在I/O瓶頸

2. 若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量

3. 若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU 。

如果要查看二進位文件test中的內容,需鍵入如下sar命令:

sar -u -f test

2. inode、文件和其他內核表監控

例如,每10秒採樣一次,連續採樣3次,觀察核心表的狀態,需鍵入如下命令:

sar -v 10 3

屏幕顯示如下:

17:10:49 dentunusd file-nr inode-nr pty-nr

17:10:59 6301 5664 12037 4

17:11:09 6301 5664 12037 4

17:11:19 6301 5664 12037 4

Average: 6301 5664 12037 4

輸出項說明:

dentunusd:目錄高速緩存中未被使用的條目數量

file-nr:文件句柄(file handle)的使用數量

inode-nr:索引節點句柄(inode handle)的使用數量

pty-nr:使用的pty數量

3. 內存和交換空間監控

例如,每10秒採樣一次,連續採樣3次,監控內存分頁:

sar -r 10 3

屏幕顯示如下:

輸出項說明:

kbmemfree:這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.

kbmemused:這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.

%memused:這個值是kbmemused和內存總量(不包括swap)的一個百分比.

kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.

kbcommit:保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap).

%commit:這個值是kbcommit與內存總量(包括swap)的一個百分比.

4. 內存分頁監控

例如,每10秒採樣一次,連續採樣3次,監控內存分頁:

sar -B 10 3

屏幕顯示如下:

輸出項說明:

pgpgin/s:表示每秒從磁碟或SWAP置換到內存的字節數(KB)

pgpgout/s:表示每秒從內存置換到磁碟或SWAP的字節數(KB)

fault/s:每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)

majflt/s:每秒鐘產生的主缺頁數.

pgfree/s:每秒被放入空閒隊列中的頁個數

pgscank/s:每秒被kswapd掃描的頁個數

pgscand/s:每秒直接被掃描的頁個數

pgsteal/s:每秒鐘從cache中被清除來滿足內存需要的頁個數

%vmeff:每秒清除的頁(pgsteal)佔總掃描頁(pgscank+pgscand)的百分比

5. I/O和傳送速率監控

例如,每10秒採樣一次,連續採樣3次,報告緩衝區的使用情況,需鍵入如下命令:

sar -b 10 3

屏幕顯示如下:

18:51:05 tps rtps wtps bread/s bwrtn/s

18:51:15 0.00 0.00 0.00 0.00 0.00

18:51:25 1.92 0.00 1.92 0.00 22.65

18:51:35 0.00 0.00 0.00 0.00 0.00

Average: 0.64 0.00 0.64 0.00 7.59

輸出項說明:

tps:每秒鐘物理設備的 I/O 傳輸總量

rtps:每秒鐘從物理設備讀入的數據總量

wtps:每秒鐘向物理設備寫入的數據總量

bread/s:每秒鐘從物理設備讀入的數據量,單位為 塊/s

bwrtn/s:每秒鐘向物理設備寫入的數據量,單位為 塊/s

6. 進程隊列長度和平均負載狀態監控

例如,每10秒採樣一次,連續採樣3次,監控進程隊列長度和平均負載狀態:

sar -q 10 3

屏幕顯示如下:

19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15

19:26:00 0 259 0.00 0.00 0.00

19:26:10 0 259 0.00 0.00 0.00

19:26:20 0 259 0.00 0.00 0.00

Average: 0 259 0.00 0.00 0.00

輸出項說明:

runq-sz:運行隊列的長度(等待運行的進程數)

plist-sz:進程列表中進程(processes)和線程(threads)的數量

ldavg-1:最後1分鐘的系統平均負載(System load average)

ldavg-5:過去5分鐘的系統平均負載

ldavg-15:過去15分鐘的系統平均負載

7. 系統交換活動信息監控

例如,每10秒採樣一次,連續採樣3次,監控系統交換活動信息:

sar -    W 10 3

屏幕顯示如下:

19:39:50 pswpin/s pswpout/s

19:40:00 0.00 0.00

19:40:10 0.00 0.00

19:40:20 0.00 0.00

Average: 0.00 0.00

輸出項說明:

pswpin/s:每秒系統換入的交換頁面(swap page)數量

pswpout/s:每秒系統換出的交換頁面(swap page)數量

8. 設備使用情況監控

例如,每10秒採樣一次,連續採樣3次,報告設備使用情況,需鍵入如下命令:

# sar -d 10 3 –p

屏幕顯示如下:

17:45:54    DEV    tps    rd_sec/s    wr_sec/s    avgrq-sz    avgqu-sz    await    svctm    %util

17:46:04    scd0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    sda    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    vg_livedvd-lv_root    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    vg_livedvd-lv_swap    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

其中:

參數-p可以列印出sda,hdc等磁碟設備名稱,如果不用參數-p,設備節點則有可能是dev8-0,dev22-0

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

1. avgqu-sz 的值較低時,設備的利用率較高。

2. 當%util的值接近 1% 時,表示設備帶寬已經佔滿。

要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來

懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看

懷疑內存存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來查看

懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看

相關焦點

  • 每天一個 Linux 命令(31): /etc/group文件詳解
    linux /etc/group文件是有關於系統管理員對用戶和用戶組管理的文件,linux用戶組的所有信息都存放在/etc/group文件中。具有某種共同特徵的用戶集合起來就是用戶組(Group)。用戶組(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
  • Linux 三劍客 Awk、Sed、Grep 命令詳解
    Linux三劍客Awk命令詳解命令名稱Awk  pattern scanning and processing language命令作用對文本和數據進行處理~ 匹配或不匹配的條件語句x{m} x字符重複m次x{m,} x字符至少重複m次X{m,n} x字符至少重複m次但不起過n次(需指定參數-posix或--re-interval)Linux三劍客Sed命令詳解命令名稱Sed 一個強大的流式文本編輯器
  • sar工具在監控性能方向的實踐
    針對該系統,可以通過linux系統自帶的工具包,進行監控,查看性能指標。3、SAR命令介紹在使用 Linux系統時,常常會遇到各種各樣的問題,比如系統容易死機或者運行速度突然變慢,這時我們常常猜測:是否硬碟空間不足,是否內存不足,是否 I/O出現瓶頸,還是系統的核心參數出了問題?這時,我們應該考慮使用 sar工具對系統做一個全面了解,分析系統的負載狀況。
  • Linux文件的常用操作命令
    linux文件操作常用指令1、系統命令runlevel # 查看當前的運行級別systemctl status firewalld # 開啟網絡服務功能stop # 關閉restart # 重啟reload # 重載reboot # 重啟halt # 關機poweroff # 關機2、查看文件常用命令cat # 在命令提示符下查看文件內容more # 在命令提示符中分頁查看文件內容
  • linux刪除命令rm的使用
    在linux中創建文件很容易,系統中隨時會有文件變得過時且毫無用處。用戶可以用rm命令將其刪除。該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對於連結文件,只是刪除了連結,原有文件均保持不變。
  • Linux掛載命令mount用法及參數詳解
    將光碟放入光碟機,執行下面的命令。,執行下面的命令。若漢字文件名顯示為亂碼或不顯示,可以使用下面的命令格式。#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1 #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2linux系統下使用fdisk分區命令和mkfs文件系統創建命令可以將移動硬碟的分區製作成linux系統所特有的ext2、ext3
  • Linux基礎命令之:實驗內容及小結
    命令為:su-root(4)查看cross-3.3.2.tar.bz2所在的Windows下對應分區的格式,並記下其文件設備名稱,如「/dev/hda1」等。命令為:fdisk-l(5)使用mkdir命令在「/mnt」新建子目錄作為掛載點。命令為:mkdir/mnt/win(6)掛載Windows相應分區。
  • linux作業系統常用命令及常用問題
    一、linux作業系統常用命令>linux作業系統詳解(linux不再難懂)●man :任何時候你覺得對一個命令行不是很確定,都可以通過輸入「man + 命令」了解這個命令能確切是做什麼的。
  • 初學者運維必知的Linux命令大全「完整版」
    、rz、sz、jar、apt-get、bzip2、service、systemctl、make、cmake、chkconfig;系統資源管理:Fdisk、mount、umount、mkfs.ext4、fsck.ext4、parted、lvm、dd、du、df、top、iftop、free、w、uptime、iostat、vmstat、iotop、ps、netstat、lsof、ss、sar
  • Linux常用命令:Linux more命令使用方法
    1.命令格式:more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ] 2.命令功能:more命令和cat的功能一樣都是查看文件裡的內容,但有所不同的是more可以按頁來查看文件的內容,還支持直接跳轉行等功能。
  • linux cut命令怎麼用?linux cut常用格式語法使用例子教程
    linux的使用方法是很多人頭疼的問題,對於這個系統的應用命令,還是來看看linux cut命令詳解,linux cut用法大全。  在linux中,cut是一個選取命令,就是將一段數據經過分析,取出我們想要的。
  • linux基礎命令(文件操作/文件權限)
    文件操作常用命令Linux是一個一切皆文件的作業系統,不管是普通的文件、目錄、套接字等,在Linux中都是以文件的方式對待,雖然他們的類型不同,但linux對其提供的是同一套操作界面。切換工作目錄cd 目標工作路徑註:目標工作路徑可為絕對路徑也可為相對路徑切換工作目錄eg.
  • Linux 命令匯總
    命令功能說明線上查詢及幫助命令 (2 個)man查看命令幫助,命令的詞典,更複雜的還有 info,但不常用。help查看 Linux 內置命令的幫助,比如 cd 命令。文件和目錄操作命令 (18 個)ls全拼 list,功能是列出目錄的內容及其內容屬性信息。
  • linux命令大全
    Linux命令大全之所以有存在的必要就是因為,linux作為非主流市場裡面的主流作業系統,不僅是免費的而且它還是一個非常優秀的作業系統,與MS-WINDOWS相比,可靠、 穩定、速度快。且擁有豐富的根據UNIX版本改進的強大功能。
  • 每天一個 Linux 命令:grep 命令
    1.命令格式:grep [option] pattern file2.命令功能:用於過濾/搜索的特定字符。可使用正則表達式能多種命令配合使用,使用上十分靈活。在linux下的grep除fgrep外,都支持POSIX的字符類。
  • Linux常用命令詳解
    ls命令就是list的縮寫,通過ls 命令不僅可以查看linux文件夾包含的文件,而且可以查看文件權限(包括目錄、文件夾、文件權限
  • Linux cut 命令詳解
    在本文中,我們通過一些例子來了解 cut 命令的使用,這些使用方法在我們的日常工作中也是非常常用的。$ cut OPTION... [FILE]...我們先來了解一下 cut 的一些選項,cut 命令必須要指定選項才能執行。-f :  提取指定的欄位,cut 命令使用 Tab 作為默認的分隔符。
  • Linux常用命令 - sed
    使用 sed 搜索和替換文本的一般形式如下:sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE-i 將其輸出寫入標準輸出seds 替代命令,可能是 sed 中使用最多的命令-/分隔符字符。
  • Linux:掛接(mount)命令的使用方法
    其實linux系統下製作和使用光碟鏡像比Windows系統更方便,不必借用任何第三方軟體包。   1、從光碟製作光碟鏡像文件。將光碟放入光碟機,執行下面的命令。執行下面的命令。   #mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1    #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2   linux系統下使用fdisk分區命令和mkfs文件系統創建命令可以將移動硬碟的分區製作成linux系統所特有的ext2
  • 每天學一個 Linux 命令(34):wc
    命令簡介wc 命令用來統計文件中的行數、單詞數或字節數,然後將結果輸出在終端上。我們可以使用 wc 命令來計算文件的Byte數、字數或是列數。統計當前目錄下的所有文件行數及總計行數[root@centos7 ~]# wc -l *      48 anaconda-ks.cfgwc: goinception: Is a directory       0 goinception   45222 goInception-linux-amd64