首頁 > 軟體

Sysstat的工具集sar、 iostat、mpstat、sadf、sar、sadc

2020-06-16 16:46:08

sysstat

Sysstat的工具集sar、 iostat、mpstat、sadf、sar、sadc

* iostat 工具提供CPU使用率及硬碟吞吐效率的資料;

* mpstat 工具提供單個處理器或多個處理器相關資料;

* sar 工具負責收集、報告並儲存系統活躍的資訊;

* sa1 工具負責收集並儲存每天系統動態資訊到一個二進位制的檔案中。它是通過計劃任務工具cron來執行,

是為sadc所設計的程式前端程式;

* sa2 工具負責把每天的系統活躍性息寫入總結性的報告中。它是為sar所設計的前端 ,要通過cron來呼叫

* sadc 是系統動態資料收集工具,收集的資料被寫一個二進位制的檔案中,它被用作sar工具的後端;

* sadf 顯示被sar通過多種格式收集的資料;

如果您想得到Sysstat工具集所收集的系統資訊自動存為某個檔案中,你必須通過cron 為 sa1 和sa2 做計劃任務。我們可以通過修改使用者的crontab。在預設的情況下,Sysstat歷史資訊將被存放在/var/log/sa檔案中

建立Sysstat的啟動指令碼;

[root@localhost ~]# touch  /etc/rc.d/init.d/sysstat

[root@localhost ~]# vi /etc/rc.d/init.d/sysstat

#!/bin/sh

# Begin $rc_base/init.d/sysstat

# Based on sysklogd script from LFS-3.1 and earlier.

# Rewritten by Gerard Beekmans  – gerard@linuxfromscratch.org

. /etc/sysconfig/rc

. $rc_functions

case “$1” in

start)

echo “Calling the system activity data collector (sadc)…”

/usr/lib/sa/sadc -F -L –

evaluate_retval

;;

*)

echo “Usage: $0 start”

exit 1

;;

esac

# End $rc_base/init.d/sysstat

[root@localhost ~]# chmod 755 /etc/rc.d/init.d/sysstat

[root@localhost ~]# ln -sf /etc/rc.d/init.d/sysstat  /etc/init.d/sysstat

有了Sysstat的守護行程,這樣我們開機後,Sysstat的守護行程,就時時刻刻的為我們服務了。sa 、sa1或sa2自動把資訊存在 /var/log/sa目錄的二進位制檔案中,我們可以通過sar工具來提取這些系統資訊的歷史;

當然我們也可以通過手動的方法來開啟Sysstat的守護程式,也就是我們前面所製作的sysstat;

[root@localhost ~]# /etc/rc.d/init.d/sysstat start

下面的方法也行;

[root@localhost ~]# /usr/lib/sa/sa1

[root@localhost ~]# /usr/lib/sa/sa2

sadc 的用法;

/usr/lib/sa/sadc [ -d ] [ -F ] [ -I ] [ -L ] [ -V ] [ interval [ count ] ] [ outfile ]

引數說明:

-d  報告硬碟設定的相關統計;

-F  強制把資料寫入檔案;

-I  報告所有系統中斷資料;

interval 表示時間間隔,單位是秒,比如3 ;

count 統計資料的次數,也是一個數位;

outfile 輸出統計到outfile檔案;

注意:此工具中的引數都是可選的,如果沒有指定任何引數,比如 /usr/lib/sa/sadc – ,則會輸出數

據到 /var/log/sa/ 目錄下的一個檔案中。我們要通過sadf 或sar工具來檢視;

[root@localhost beinan]# /usr/lib/sa/sadc  –

[root@localhost beinan]# ls /var/log/sa  註:列出所有sa目錄下的檔案,根據檔案的時間來判斷哪個檔案是最新的;

[root@localhost beinan]# sar  -f  /var/log/sa/sa12

[root@localhost beinan]# sadf  /var/log/sa/sa12

舉例:我們想把sadc收集到的資料寫到一個指定的檔案中;

[root@localhost ~]# /usr/lib/sa/sadc  1 10 sa000

[root@localhost ~]# sar -f sa000

我們用sadc 收集系統動態資料,讓它收集1秒之內的10次動態資訊; 然後通過sar 工具來檢視系統的狀態。也可以用 sadf 來檢視所收集的資料,但不是太直觀。您自己嘗試一下看看。檢視sa000檔案,用 sadf sa000 ;

sysstat安裝包安裝之後有iostat,mpstat,sar,sa功能

 /etc/init.d/sysstat start

 chkconfig sysstat on

sysstat工具包中包含兩類工具

即時檢視工具: iostat,mpstat,sar

累計統計工具:sar

sar是核心工具

 mpstat 是Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat檔案中。在多CPUs系統裡,其不但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊

%user 使用者CPU時間 ,不含nice時間

%nice nice值為負進程的CPU時間

%sys 系統核心時間

%iowait 硬碟I/O等待時間

%irq 軟終端時間

%soft軟終端時間

%steal

%idle CPU除去等待磁碟I/O操作外的空間閒置時間

CPU ALL總時間

sar功能

1、sar -u 1 5

輸出CPU使用情況的統計資訊,每秒輸出一次,一共輸出100次

17時06分01秒      CPU    %user    %nice  %system  %iowait    %idle

17時06分02秒      all      1.27      0.00      0.51      1.01    97.22

17時06分03秒      all      0.00      0.00      0.00      0.00    100.00

17時06分04秒      all      0.00      0.00      0.00      0.00    100.00

17時06分05秒      all      0.25      0.00      0.00      0.00    99.75

17時06分06秒      all      0.00      0.00      0.00      0.51    99.49

Average:          all      0.30      0.00      0.10      0.30    99.29

CPU      all 表示統計資訊為所有 CPU 的平均值。nbsp;

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

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

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

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

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

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

tips:

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

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

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

2、sar -b 1 5

顯示I/O和傳送速率的統計資訊

17時09分07秒      tps      rtps      wtps  bread/s  bwrtn/s

17時09分08秒      3.12      3.12      0.00    25.00      0.00

17時09分09秒    89.58      6.25    83.33    141.67    733.33

17時09分10秒    42.71      9.38    33.33    141.67    600.00

17時09分11秒      2.11      2.11      0.00    16.84      0.00

17時09分12秒      1.04      0.00      1.04      0.00    175.00

Average:        27.77      4.18    23.59    65.14    302.30

tps    每秒鐘物理裝置的 I/O 傳輸總量

rtps    每秒鐘從物理裝置讀入的資料總量

wtps    每秒鐘向物理裝置寫入的資料總量

bread/s 每秒鐘從物理裝置讀入的資料量,單位為 塊/s

bwrtn/s 每秒鐘向物理裝置寫入的資料量,單位為 塊/s

3、sar -c

每秒鐘建立的進程數

15時10分01秒      1.35

15時20分01秒      1.01

15時30分01秒      0.59

15時40分01秒      1.35

15時50分01秒      0.99

16時00分01秒      0.57

16時10分01秒      1.33

16時20分01秒      1.02

16時30分01秒      0.57

16時40分01秒      1.33

16時50分01秒      1.07

17時00分01秒      0.56

17時10分01秒      1.32

4、sar -n DEV 1 5

輸出網路裝置狀態的統計資訊

17時13分42秒    IFACE  rxpck/s  txpck/s  rxbyt/s  txbyt/s  rxcmp/s  txcmp/s rxmcst/s

17時13分43秒      eth1  3669.70  4156.57 368362.63 2747714.14      0.00      0.00      0.00

17時13分44秒      eth1  2689.11  2585.15 289661.39 701461.39      0.00      0.00      0.00

17時13分45秒      eth1  3746.00  4077.00 415178.00 2605720.00      0.00      0.00      0.00

17時13分46秒      eth1  3096.00  3241.00 327916.00 1597320.00      0.00      0.00      0.00

17時13分47秒      eth1  2910.00  2834.00 312632.00 957903.00      0.00      0.00      0.00

Average:        eth1  3220.20  3375.60 342592.60 1717931.20      0.00      0.00      0.00

IFACE      網路裝置名nbsp;

rxpck/s    每秒接收的包總數

txpck/s    每秒傳輸的包總數

rxbyt/s    每秒接收的位元組(byte)總數   

txbyt/s    每秒傳輸的位元組(byte)總數   

rxcmp/s    每秒接收壓縮包的總數         

txcmp/s    每秒傳輸壓縮包的總數         

rxmcst/s  每秒接收的多播(multicast)包的總數

5、sar -q 1 5

輸出進程佇列長度和平均負載狀態統計資訊

17時16分28秒  runq-sz plist-sz  ldavg-1  ldavg-5 ldavg-15

17時16分29秒        0      160      0.26      0.11      0.03

17時16分30秒        0      160      0.26      0.11      0.03

17時16分31秒        0      160      0.24      0.11      0.03

17時16分32秒        0      160      0.24      0.11      0.03

17時16分33秒        0      160      0.24      0.11      0.03

Average:            0      160      0.25      0.11      0.03

runq-sz  執行佇列的長度(等待執行的進程數)

plist-sz 進程列表中進程(processes)和執行緒(threads)的數量

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

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

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

6、sar -r

輸出記憶體和交換空間的統計資訊

iostat  顯示一條包括所有的CPU和裝置吞吐率的統計資訊

常用選項

-c 僅顯示CPU統計資訊

-d 僅顯示磁碟統計資訊

-k 以KB顯示每秒磁碟請求數

-m 以MB顯示每秒磁碟請求數

-p 用於顯示塊裝置以及系統分割區的統計資訊

tps:該裝置每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。“一次傳輸”意思是“一次I/O請求”。多個邏輯請求可能會被合併為“一次I/O請

求”。“一次傳輸”請求的大小是未知的。

kB_read/s:每秒從裝置(drive expressed)讀取的資料量;kB_wrtn/s:每秒向裝置(drive expressed)寫入的資料量;kB_read:讀取的總資料量;kB_wrtn:寫入的總數量資料量;這些單位都為Kilobytes。

rrqm/s:每秒這個裝置相關的讀取請求有多少被Merge了(當系統呼叫需要讀取資料的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的資料,FS會將這個請求合併Merge);wrqm/s:每秒這個裝置相關的寫入請求有多少被Merge了。

rsec/s:每秒讀取的磁區數;wsec/:每秒寫入的磁區數。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;

await:每一個IO請求的處理的平均時間(單位是微秒毫秒)。這裡可以理解為IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了。

%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該裝置有0.8秒在處理IO,而0.2秒閒置,那麼該裝置的%util = 0.8/1 = 80%,所以該引數暗示了裝置的繁忙程度。一般地,如果該引數是100%表示裝置已經接近滿負荷執行了(當然如果是多磁碟,即使%util是100%,因為磁碟的並行能力,所以磁碟使用未必就到了瓶頸)。

常見用法:

$iostat -d -k 1 10 #檢視TPS和吞吐量資訊

iostat -d -x -k 1 10 #檢視裝置使用率(%util)、響應時間(await)

iostat -c 1 10

iostat -d -x -l

磁碟的平均響應時間<5ms,磁碟使用率>80。磁碟響應正常,但是已經很繁忙了。

iostat -d 5  每隔五秒顯示

1、關於 Sysstat;

Sysstat 是一個軟體包,包含監測系統效能及效率的一組工具,這些工具對於我們收集系統效能資料,比如CPU使用率、硬碟和網路吞吐資料,這些資料的收集和分析,有利於我們判斷系統是否正常執行,是提高系統執行效率、安全執行伺服器的得力助手;

Sysstat 軟體包整合如下工具:

    * iostat 工具提供CPU使用率及硬碟吞吐效率的資料;

    * mpstat 工具提供單個處理器或多個處理器相關資料;

    * sar 工具負責收集、報告並儲存系統活躍的資訊;

    * sa1 工具負責收集並儲存每天系統動態資訊到一個二進位制的檔案中。它是通過計劃任務工具cron來執行,

        是為sadc所設計的程式前端程式;

    * sa2 工具負責把每天的系統活躍性息寫入總結性的報告中。它是為sar所設計的前端 ,要通過cron來呼叫

    * sadc 是系統動態資料收集工具,收集的資料被寫一個二進位制的檔案中,它被用作sar工具的後端;

    * sadf 顯示被sar通過多種格式收集的資料;

舉例:我們想把sadc收集到的資料寫到一個指定的檔案中;

[root@localhost ~]# /usr/lib/sa/sadc  1 10 sa000

[root@localhost ~]# sar -f sa000

Linux 2.6.15-1.2054_FC5 (localhost.localdomain)        2006年05月12日

09時15分30秒      CPU    %user    %nice  %system  %iowait    %idle

09時15分31秒      all      3.00      0.00      0.00      1.00    96.00

09時15分32秒      all      0.00      0.00      0.00      0.00    100.00

09時15分33秒      all      0.00      0.00      0.00      0.00    100.00

09時15分34秒      all      0.00      0.00      0.00      0.00    100.00

09時15分35秒      all      0.00      0.00      0.00      0.00    100.00

09時15分36秒      all      0.00      0.00      0.00      0.00    100.00

09時15分37秒      all      0.00      0.00      0.00      0.00    100.00

09時15分38秒      all      0.00      0.00      0.00      0.00    100.00

09時15分39秒      all      0.00      0.00      0.00      0.00    100.00

Average:          all      0.33      0.00      0.00      0.11    99.56

註解:我們用sadc 收集系統動態資料,讓它收集1秒之內的10次動態資訊; 然後通過sar 工具來檢視系統的狀態。也可以用 sadf 來檢視所收集的資料,但不是太直觀。您自己嘗試一下看看。檢視sa000檔案,用 sadf sa000 ;

3.2 sar 工具;

sar 工具比較強大,既能收集系統CPU、硬碟、動態資料,也能顯示動態顯示,更能檢視二進位制資料檔案;sar 的應用比較多,而且也比較複雜,資料更為精確。我們只了解一下常用的內容就行,大多數內容我們了解就行;

用法:

sar  [引數選項]

引數說明:

-A  顯示所有歷史資料,通過讀取/var/log/sar 目錄下的所有檔案,並把它們分門別類的顯示出來;

-b  通過裝置的I/O中斷讀取設定的吞吐率;

-B 報告記憶體或虛擬記憶體交換統計;

-c 報告每秒建立的進程數;

-d 報告物理塊裝置(儲存裝置)的寫入、讀取之類的資訊,如果直觀一點,可以和p引數共同使用,-dp

-f 從一個二進位制的資料檔案中讀取內容,比如 sar -f filename

-i interval  指定資料收集的時間,時間單位是秒;

-n 分析網路裝置狀態的統計,後面可以接的引數有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV

-o 把統計資訊寫入一個檔案,比如  -o filename ;

-P 報告每個處理器應用統計,用於多處理器機器,並且啟用SMP核心才有效;

-p 顯示友好裝置名字,以方便檢視,也可以和-d 和-n 引數結合使用,比如 -dp 或-np

-r 記憶體和交換區佔用統計;

-R

-t 這個選項對從檔案讀取資料有用,如果沒有這個引數,會以本地時間為標準 讀出;

-u 報告CPU利用率的引數;

-v 報告inode, 檔案或其它核心表的資源佔用資訊;

-w 報告系統交換活動的資訊; 每少交換資料的個數;

-W 報告系統交換活動吞吐資訊;

-x 用於監視進程的,在其後要指定進程的PID值;

-X 用於監視進程的,但指定的應該是一個子進程ID;

sar 應用舉例;

範例一: 如果只用sar 命令,sar就是讀取 /var/log/sa目錄下最近系統狀態檔案。

[root@localhost ~]# sar

[root@localhost ~]# sar -A  註:讀取/var/log/sa目錄下所有檔案資料;

如果我們想知道CPU的利用率;動態更新;下面的例子是每秒更新一次資料,總共更新五次;

[root@localhost ~]# sar -u  1 5

Linux 2.6.15-1.2054_FC5 (localhost.localdomain)        2006年05月12日

時間              CPU    利用率    nice值    系統占用    IO占用  空閒

11時19分34秒      CPU    %user    %nice  %system  %iowait    %idle

11時19分35秒      all      2.97      0.00      0.00      0.00    97.03

11時19分36秒      all    11.11      0.00      9.09      0.00    79.80

11時19分37秒      all    21.78      0.00      6.93      0.00    71.29

11時19分38秒      all    15.00      0.00      0.00      0.00    85.00

11時19分39秒      all      8.00      0.00      0.00      0.00    92.00

Average:          all    11.78      0.00      3.19      0.00    85.03

註解:

CPU:表示機器內所有的CPU;

%user 表示CPU的利用率;

%nice 表示CPU在使用者層優先順序的百分比,0表示正常;

%system 表示當系統執行時,在使用者應用層上所佔用的CPU百分比;

%iowait 表示請求硬碟I/0資料流出時,所佔用CPU的百分比;

%idle 表示空閒CPU百分比,值越大系統負載越低;

您可以CPU利用率的動態資訊輸出到一個文字檔案中,然後通過more 來檢視。

[root@localhost ~]# sar -u  1 5 > sar000.txt

[root@localhost ~]# more sar000.txt

也可以輸出到一個二進位制的檔案中,然後通過sar來檢視;

[root@localhost ~]# sar -u  1 5 -o sar002

[root@localhost ~]# sar -f sar002

註:如果您把資料通過-o filename 輸出到一個二進位制的檔案中,是不能用檔案內容檢視工具more 、less或cat來檢視的,應該用sar工具來檢視,要加-f引數;

範例二:檢視網路裝置的吞吐情況;

比如我們讓資料每秒更新一次,總共更新十次;

[root@localhost ~]# sar -n DEV  2 5

時間    IFACE  rxpck/s  txpck/s  rxbyt/s  txbyt/s  rxcmp/s  txcmp/s  rxmcst/s

第一欄位:時間;

IFACE:裝置名;

rxpck/s:每秒收到的包;

rxbyt/s:每秒收到的所有包的體積;

txbyt/s:每秒傳輸的所有包的體積;

rxcmp/s:每秒收到資料切割壓縮的包總數;

txcmp/s :每秒傳輸的資料切割壓縮的包的總數;

rxmcst/s: 每秒收到的多點傳送的包;

如果我們從事提取eth0裝置(也就是網絡卡eth0)的資訊;我們應該用grep 來過濾。然後再顯示出來;

[root@localhost ~]# sar -n DEV  2  5  |grep eth0

11時52分37秒      eth0  1.00  1.00  97.51  97.51  0.00    0.00      0.00

11時52分39秒      eth0  1.01  1.01  98.49  98.49  0.00    0.00      0.00

11時52分41秒      eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

11時52分43秒      eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

11時52分45秒      eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

Average:  eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

如果想知道網路裝置錯誤報告,也就就是用來檢視裝置故障的。應該用EDEV;比如下面的例子;

[root@localhost ~]# sar -n EDEV  2 5

3.3 iostat

iostat 是用來顯示 系統即時系統,比如CPU使用率,硬碟裝置的吞吐率;

[root@localhost ~]# iostat

Linux 2.6.15-1.2054_FC5 (localhost.localdomain)  2006年05月12日

avg-cpu:  %user  %nice %system %iowait  %idle

          7.24    0.00    0.99    0.35  91.43

Device:  tps  Blk_read/s  Blk_wrtn/s  Blk_read  Blk_wrtn

hda      1.46        28.43        21.43    710589    535680

3.4 mpstat

mpstat 提供多處理器系統中的CPU的利用率的統計;

mpstat 也可以加引數,用-P來指定哪個 CPU,處理器的ID是從0開始的。

下面的例子是檢視兩個處理器,每二秒資料更新一次,總共要顯示10次資料;

[root@localhost ~]# mpstat -P 0 2 10  註:檢視第一個CPU

[root@localhost ~]# mpstat -p 1 2 10  註:檢視第二個CPU

</code >

<code>

[root@localhost ~]# mpstat 2 10  註:檢視所有CPU;

3.5 sdaf

sdaf 能從二進位制檔案中提取sar所收集的資料;這個大家知道就行了。顯示的並不是友好的格式;

[root@localhost ~]# sar -u 2 5 -o sar003

[root@localhost ~]# sadf  sar003

相對來說,用sar來讀取輸出檔案的內容更好;比如下面的;

[root@localhost ~]# sar -f sar003

4、 與Sysstat相似工具;

4.1 進程管理工具;

進程管理工具,包括ps 、pgrep、top、kill 、killall、pkill 等,請參考 《 Linux 進程管理》

4.2 記憶體使用率檢視工具;

記憶體使用量 free

free 工具既能檢視實體記憶體,也能檢視虛擬記憶體的用量;

[root@localhost ~]# free

如果顯示以單位M,則加-m引數;

[root@localhost ~]# free -m

            total      used      free    shared    buffers    cached

Mem:          724        713        11          0        24        290

-/+ buffers/cache:        398        326

Swap:          800          0        800

?

vmstat 即時顯示記憶體工具;

vmstat 是一個即時顯示記憶體使用情況的工具;

vmstat 使用方法:

vmstat [-V] [-n] [delay [count]]

              -V 顯示vmstat的版本;

              -n causes the headers not to be reprinted regularly.

              -a 顯示所有啟用和未啟用記憶體的狀態;print inactive/active page stats.

              -d 顯示硬碟統計資訊;prints disk statistics

              -D 顯示硬碟分割區表;prints disk table

              -p 顯示硬碟分割區讀寫狀態等;prints disk partition statistics

              -s 顯示記憶體使用情況;prints vm table

              -m prints slabinfo

              -S 定義單位,k K

              delay 是兩次重新整理時間間隔;

              單位體積: k:1000 K:1024 m:1000000 M:1048576 (預設是 K)

              count 重新整理次數;

sar 工具;

sar 工具比較強大,既能收集系統CPU、硬碟、動態資料,也能顯示動態顯示,更能檢視二進位制資料檔案;sar 的應用比較多,而且也比較複雜,資料更為精確。我們只了解一下常用的內容就行,大多數內容我們了解就行;

用法:

sar  [引數選項]

引數說明:

-A  顯示所有歷史資料,通過讀取/var/log/sar 目錄下的所有檔案,並把它們分門別類的顯示出來;

-b  通過裝置的I/O中斷讀取設定的吞吐率;

-B 報告記憶體或虛擬記憶體交換統計;

-c 報告每秒建立的進程數;

-d 報告物理塊裝置(儲存裝置)的寫入、讀取之類的資訊,如果直觀一點,可以和p引數共同使用,-dp

-f 從一個二進位制的資料檔案中讀取內容,比如 sar -f filename

-i interval  指定資料收集的時間,時間單位是秒;

-n 分析網路裝置狀態的統計,後面可以接的引數有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV

-o 把統計資訊寫入一個檔案,比如  -o filename ;

-P 報告每個處理器應用統計,用於多處理器機器,並且啟用SMP核心才有效;

-p 顯示友好裝置名字,以方便檢視,也可以和-d 和-n 引數結合使用,比如 -dp 或-np

-r 記憶體和交換區佔用統計;

-R

-t 這個選項對從檔案讀取資料有用,如果沒有這個引數,會以本地時間為標準 讀出;

-u 報告CPU利用率的引數;

-v 報告inode, 檔案或其它核心表的資源佔用資訊;

-w 報告系統交換活動的資訊; 每少交換資料的個數;

-W 報告系統交換活動吞吐資訊;

-x 用於監視進程的,在其後要指定進程的PID值;

-X 用於監視進程的,但指定的應該是一個子進程ID;

sar支援儲存成兩種格式的檔案,一種是文字檔案,一種是二進位制檔案(只有通過sar自己的命令才能檢視)。

儲存為文字檔案

結合上面的檢視命令,加入 > filename 引數即可儲存文字檔案,下面列出幾個有用的命令:

sar 1 10 > data.txt

//每隔1秒,寫入10次,把CPU使用資料儲存到data.txt檔案中。

sar 1 0 -e 15:00:00 > data.txt

//每隔1秒記錄CPU的使用情況,直到15點,資料將儲存到data.txt檔案中。(-e 參數列示結束時間,注意時間格式:必須為hh:mm:ss格式)

sar 1 0 -r -e 15:00:00 > data.txt

//每隔1秒記錄記憶體使用情況,直到15點,資料將儲存到data.txt檔案中。

sar 1 0 -n DEV -e 15:00:00 > data.txt

//每隔1秒記錄網路使用情況,直到15點,資料將儲存到data.txt檔案中。

用WinSCP工具從Linux伺服器上取下data.txt檔案,內容如下:

 11時04分05秒    CPU    %user    %nice  %system  %iowait    %steal    %idle

 11時04分06秒    all      0.25      0.00      0.00      0.00      0.00    99.75

 11時04分07秒    all      0.00      0.00      0.25      0.00      0.00    99.75

 11時04分08秒    all      0.25      0.00      0.25      1.50      0.00    98.00

 11時04分09秒    all      0.25      0.00      0.00      0.50      0.00    99.25

 11時04分10秒    all      0.00      0.00      0.00      0.00      0.00    100.00

 11時04分11秒    all      0.25      0.00      0.25      0.00      0.00    99.50

 11時04分12秒    all      0.00      0.00      0.25      0.00      0.00    99.75

 11時04分13秒    all      0.50      0.00      0.50      0.99      0.00    98.01

 11時04分14秒    all      0.00      0.00      0.00      1.25      0.00    98.75

 11時04分15秒    all      0.50      0.00      0.00      0.00      0.00    99.50

 平均時間:    all      0.20      0.00      0.15      0.42      0.00    99.23

有了這份資料,就可以輕鬆的使用WPS表格來統計CPU的使用情況了。

儲存為二進位制檔案

由於儲存的二進位制檔案只有sar通過-f引數才能開啟,不利於我們分析和統計資料,因此不推薦使用這個方法。儲存二進位制檔案的引數是-o,如:

sar 1 5 -r -o data

//每隔1秒,寫入5次,將記憶體使用的資料寫入二進位制檔案data中。

sar -f data

//檢視data檔案

sar 應用舉例;

檢視CPU使用情況

sar 2 5

//每隔2秒,顯示5次,CPU使用的情況

檢視記憶體使用情況

sar -r 2 5

//每隔2秒,顯示5次,記憶體使用的情況

範例一: 如果只用sar 命令,sar就是讀取 /var/log/sa目錄下最近系統狀態檔案。

[root@localhost ~]# sar

[root@localhost ~]# sar -A  註:讀取/var/log/sa目錄下所有檔案資料;

如果我們想知道CPU的利用率;動態更新;下面的例子是每秒更新一次資料,總共更新五次;

[root@localhost ~]# sar -u  1 5

註解:

CPU:表示機器內所有的CPU;

%user 表示CPU的利用率;

%nice 表示CPU在使用者層優先順序的百分比,0表示正常;

%system 表示當系統執行時,在使用者應用層上所佔用的CPU百分比;

%iowait 表示請求硬碟I/0資料流出時,所佔用CPU的百分比;

%idle 表示空閒CPU百分比,值越大系統負載越低;

您可以CPU利用率的動態資訊輸出到一個文字檔案中,然後通過more 來檢視。

[root@localhost ~]# sar -u  1 5 > sar000.txt

[root@localhost ~]# more sar000.txt

也可以輸出到一個二進位制的檔案中,然後通過sar來檢視;

[root@localhost ~]# sar -u  1 5 -o sar002

[root@localhost ~]# sar -f sar002

註:如果您把資料通過-o filename 輸出到一個二進位制的檔案中,是不能用檔案內容檢視工具more 、less或cat來檢視的,應該用sar工具來檢視,要加-f引數;

範例二:檢視網路裝置的吞吐情況;

比如我們讓資料每秒更新一次,總共更新十次;

[root@localhost ~]# sar -n DEV  2 5

時 間    IFACE  rxpck/s  txpck/s  rxbyt/s  txbyt/s  rxcmp/s  txcmp/s  rxmcst/s

第一欄位:時間;IFACE:裝置名;rxpck/s:每秒收到的包;rxbyt/s:每秒收到的所有包的體積;txbyt/s:每秒傳輸的所有包的體積;rxcmp/s:每秒收到資料切割壓縮的包總數;txcmp/s :每秒傳輸的資料切割壓縮的包的總數;rxmcst/s: 每秒收到的多點傳送的包;

如果我們從事提取eth0裝置(也就是網絡卡eth0)的資訊;我們應該用grep 來過濾。然後再顯示出來;

[root@localhost ~]# sar -n DEV  2  5  |grep eth0

11時52分37秒      eth0  1.00  1.00  97.51  97.51  0.00    0.00      0.00

11時52分39秒      eth0  1.01  1.01  98.49  98.49  0.00    0.00      0.00

11時52分41秒      eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

11時52分43秒      eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

11時52分45秒      eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

Average:  eth0  1.00  1.00  98.00  98.00  0.00    0.00      0.00

如果想知道網路裝置錯誤報告,也就就是用來檢視裝置故障的。應該用EDEV;比如下面的例子;

[root@localhost ~]# sar -n EDEV  2 5

 iostat

iostat 是用來顯示 系統即時系統,比如CPU使用率,硬碟裝置的吞吐率;

[root@localhost ~]# iostat

avg-cpu:  %user  %nice %system %iowait  %idle

          7.24    0.00    0.99    0.35  91.43

Device:  tps  Blk_read/s  Blk_wrtn/s  Blk_read  Blk_wrtn

hda      1.46        28.43        21.43    710589    535680

mpstat

mpstat命令將會輸出所有CPU的平均統計資訊

mpstat 提供多處理器系統中的CPU的利用率的統計;mpstat 也可以加引數,用-P來指定哪個 CPU,處理器的ID是從0開始的。下面的例子是檢視兩個處理器,每二秒資料更新一次,總共要顯示10次資料;

[root@localhost ~]# mpstat -P 0 2 10  註:檢視第一個CPU

[root@localhost ~]# mpstat -p 1 2 10  註:檢視第二個CPU

[root@localhost ~]# mpstat 2 10  註:檢視所有CPU;

sdaf

sdaf 能從二進位制檔案中提取sar所收集的資料;這個大家知道就行了。顯示的並不是友好的格式;

[root@localhost ~]# sar -u 2 5 -o sar003

[root@localhost ~]# sadf  sar003

相對來說,用sar來讀取輸出檔案的內容更好;比如下面的;

[root@localhost ~]# sar -f sar003

進程管理工具,包括ps 、pgrep、top、kill 、killall、pkill

vmstat 即時顯示記憶體工具;

vmstat 是一個即時顯示記憶體使用情況的工具;

vmstat 使用方法:

vmstat [-V] [-n] [delay [count]]

-V 顯示vmstat的版本;

-n causes the headers not to be reprinted regularly.

-a 顯示所有啟用和未啟用記憶體的狀態;print inactive/active page stats.

-d 顯示硬碟統計資訊;prints disk statistics

-D 顯示硬碟分割區表;prints disk table

-p 顯示硬碟分割區讀寫狀態等;prints disk partition statistics

-s 顯示記憶體使用情況;prints vm table

-m prints slabinfo

-S 定義單位,k K

delay 是兩次重新整理時間間隔;

單位體積: k:1000 K:1024 m:1000000 M:1048576 (預設是 K)

count 重新整理次數;

使用pidstat命令監視進程,pidstat命令沒有儲存效能資料的功能。

pidstat 2 5

//每隔2秒,顯示5次,所有活動進程的CPU使用情況

pidstat -p 3132 2 5

//每隔2秒,顯示5次,PID為1643的進程的CPU使用情況顯示

pidstat -p 3132 2 5 -r

//每隔2秒,顯示5次,PID為1643的進程的記憶體使用情況顯示

使用yum安裝

#yum install sysstat

sysstat的安裝包是:sysstat-9.0.4-31.el6.x86_64 ; 包含的功能:iostat、mpstat、sar、sa

MPSTAT

MPSTAT -P ALL 2 3

mpstat是Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat檔案中。在多CPUs系統裡,其不 但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。下面只介紹 mpstat與CPU相關的引數,mpstat的語法如下:

mpstat [-P {|ALL}] [internal [count]]

引數的含義如下:

引數 解釋

-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值

internal 相鄰的兩次取樣的間隔時間

count 取樣的次數,count只能和delay一起使用

當沒有引數時,mpstat則顯示系統啟動以後所有資訊的平均值。有interval時,第 一行的資訊自系統啟動以來的平均資訊。從第二行開始,輸出為前一個interval時間段的平均資訊。與CPU有關的輸出的含義如下:

引數 解釋 從/proc/stat獲得資料

CPU 處理器ID

user 在internal時間段裡,使用者態的CPU時間(%) ,不包含 nice值為負 進程 usr/total*100

nice 在internal時間段裡,nice值為負進程的CPU時間(%) nice/total*100

system 在internal時間段裡,核心時間(%) system/total*100

iowait 在internal時間段裡,硬碟IO等待時間(%) iowait/total*100

irq 在internal時間段裡,軟中斷時間(%) irq/total*100

soft 在internal時間段裡,軟中斷時間(%) softirq/total*100

idle 在internal時間段裡,CPU除去等待磁碟IO操作外的因為任何原因而空閒的時間閒置時間 (%) idle/total*100

intr/s 在internal時間段裡,每秒CPU接收的中斷的次數 intr/total*100

CPU總的工作時 間=total_cur=user+system+nice+idle+iowait+irq+softirq

total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq

user=user_cur – user_pre

total=total_cur-total_pre

其中_cur 表示當前值,_pre表示interval時間前的值。上表中的所有值可取到兩位小數點。

cat /proc/stat

“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。

“btime”給出了從系統啟動到現在為止的時間,單位為秒。

“processes (total_forks) 自系統啟動以來所建立的任務的個數目。

“procs_running”:當前執行佇列的任務的數目。

“procs_blocked”:當前被阻塞的任務的數目。

============================

sysstat工具包提供的主要命令:iostat mpstat sar

sar的最後兩個引數一般是interval count

1、sar -u 1 3

輸出CPU使用情況的統計資訊,每秒輸出一次,一共輸出3次

[root@localhost ~]# sar -u 1 3

Linux 2.6.32-431.el6.x86_64 (localhost)  2016年11月03日  _x86_64_ (48 CPU)

13時41分45秒    CPU    %user    %nice  %system  %iowait    %steal    %idle

13時41分46秒    all      4.43      0.00      0.23      1.19      0.00    94.15

13時41分47秒    all      5.12      0.00      0.23      0.38      0.00    94.28

13時41分48秒    all      4.82      0.00      0.23      0.00      0.00    94.95

平均時間:    all      4.79      0.00      0.23      0.52      0.00    94.46

CPU      all 表示統計資訊為所有 CPU 的平均值。nbsp;

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

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

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

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

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

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

tips:

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

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

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

2、sar -b 1 5

顯示I/O和傳送速率的統計資訊

17時09分07秒      tps      rtps      wtps  bread/s  bwrtn/s

17時09分08秒      3.12      3.12      0.00    25.00      0.00

17時09分09秒    89.58      6.25    83.33    141.67    733.33

17時09分10秒    42.71      9.38    33.33    141.67    600.00

17時09分11秒      2.11      2.11      0.00    16.84      0.00

17時09分12秒      1.04      0.00      1.04      0.00    175.00

Average:        27.77      4.18    23.59    65.14    302.30

tps    每秒鐘物理裝置的 I/O 傳輸總量

rtps    每秒鐘從物理裝置讀入的資料總量

wtps    每秒鐘向物理裝置寫入的資料總量

bread/s 每秒鐘從物理裝置讀入的資料量,單位為 塊/s

bwrtn/s 每秒鐘向物理裝置寫入的資料量,單位為 塊/s

4、sar -n DEV 1 5

輸出網路裝置狀態的統計資訊

17時13分42秒    IFACE  rxpck/s  txpck/s  rxbyt/s  txbyt/s  rxcmp/s  txcmp/s rxmcst/s

17時13分43秒      eth1  3669.70  4156.57 368362.63 2747714.14      0.00      0.00      0.00

17時13分44秒      eth1  2689.11  2585.15 289661.39 701461.39      0.00      0.00      0.00

17時13分45秒      eth1  3746.00  4077.00 415178.00 2605720.00      0.00      0.00      0.00

17時13分46秒      eth1  3096.00  3241.00 327916.00 1597320.00      0.00      0.00      0.00

17時13分47秒      eth1  2910.00  2834.00 312632.00 957903.00      0.00      0.00      0.00

Average:        eth1  3220.20  3375.60 342592.60 1717931.20      0.00      0.00      0.00

IFACE      網路裝置名nbsp;

rxpck/s    每秒接收的包總數

txpck/s    每秒傳輸的包總數

rxbyt/s    每秒接收的位元組(byte)總數   

txbyt/s    每秒傳輸的位元組(byte)總數   

rxcmp/s    每秒接收壓縮包的總數         

txcmp/s    每秒傳輸壓縮包的總數         

rxmcst/s  每秒接收的多播(multicast)包的總數

5、sar -q 1 5

輸出進程佇列長度和平均負載狀態統計資訊

17時16分28秒  runq-sz plist-sz  ldavg-1  ldavg-5 ldavg-15

17時16分29秒        0      160      0.26      0.11      0.03

17時16分30秒        0      160      0.26      0.11      0.03

17時16分31秒        0      160      0.24      0.11      0.03

17時16分32秒        0      160      0.24      0.11      0.03

17時16分33秒        0      160      0.24      0.11      0.03

Average:            0      160      0.25      0.11      0.03

runq-sz  執行佇列的長度(等待執行的進程數) 

plist-sz 進程列表中進程(processes)和執行緒(threads)的數量

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

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

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

6、sar -r

輸出記憶體和交換空間的統計資訊

7、iostat

tps 每秒鐘物理裝置的 I/O 傳輸總量。nbsp;

Blk_read 讀入的資料總量,單位為 塊。nbsp;nbsp;nbsp;nbsp;

Blk_wrtn 寫入的資料總量,單位為 塊。nbsp;nbsp;nbsp;nbsp;

kB_read 讀入的資料總量,單位為 KB。nbsp;nbsp;nbsp;nbsp;

kB_wrtn 寫入的資料總量,單位為 KB。nbsp;nbsp;nbsp;nbsp;

MB_read 讀入的資料總量,單位為 MB。nbsp;nbsp;nbsp;nbsp;

MB_wrtn 寫入的資料總量,單位為 MB。nbsp;nbsp;nbsp;nbsp;

Blk_read/s 每秒從驅動器讀入的資料量,單位為 塊 /s。nbsp; 

Blk_wrtn/s 每秒向驅動器寫入的資料量,單位為 塊 /s。nbsp; 

kB_read/s 每秒從驅動器讀入的資料量,單位為 KB/s。nbsp;   

kB_wrtn/s 每秒向驅動器寫入的資料量,單位為 KB/s。nbsp;   

MB_read/s 每秒從驅動器讀入的資料量,單位為 MB/s。nbsp;   

MB_wrtn/s 每秒向驅動器寫入的資料量,單位為MB/s。

rrqm/s 將讀入請求合併後,每秒傳送到裝置的讀入請求數。

wrqm/s 將寫入請求合併後,每秒傳送到裝置的寫入請求數。

r/s 每秒傳送到裝置的讀入請求 數。

w/s 每秒傳送到裝置的寫入請求 數。

rsec/s 每秒從裝置讀入的磁區 數。nbsp;nbsp;

wsec/s 每秒向裝置寫入的磁區 數。nbsp;nbsp;

rkB/s 每秒從裝置讀入的資料量,單位為 KB/s。

wkB/s 每秒向裝置寫入的資料量,單位為 KB/s。

rMB/s 每秒從裝置讀入的資料量,單位為 MB/s。

wMB/s 每秒向裝置寫入的資料量,單位為 MB/s。

avgrq-sz 傳送到裝置的請求的平均大小,單位為扇 區。 

avgqu-sz 傳送到裝置的請求的平均佇列長 度。

await I/O請求平均執行時間。包括傳送請求和執行的時間。單位為毫 秒。

svctm 傳送到裝置的I/O請求的平均執行時間。單位為毫 秒。

%util 在I/O請求傳送到裝置期間,佔用CPU時間的百分比。用於顯示裝置的頻寬利用率。當這個值接近100%時,表示裝置頻寬已經佔滿。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-09/154140.htm


IT145.com E-mail:sddin#qq.com