sysstat Sysstat的工具集sar、 iostat、mpstat、sadf、sar、sadc * iostat 工具提供CPU使用率及硬碟吞吐效率的數據; * mpstat 工具提供單個處理器或多個處理器相關數據; * sar 工具負責收集、報告並存儲系統活躍的信息; * sa1 工具負責 ...
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 – [email protected]
. /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 的平均值。
%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 網路設備名
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)
ldavg-5 過去5分鐘的系統平均負載
ldavg-15 過去15分鐘的系統平均負載
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 的平均值。
%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 網路設備名
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)
ldavg-5 過去5分鐘的系統平均負載
ldavg-15 過去15分鐘的系統平均負載
6、sar -r
輸出記憶體和交換空間的統計信息
7、iostat
tps 每秒鐘物理設備的 I/O 傳輸總量。
Blk_read 讀入的數據總量,單位為 塊。
Blk_wrtn 寫入的數據總量,單位為 塊。
kB_read 讀入的數據總量,單位為 KB。
kB_wrtn 寫入的數據總量,單位為 KB。
MB_read 讀入的數據總量,單位為 MB。
MB_wrtn 寫入的數據總量,單位為 MB。
Blk_read/s 每秒從驅動器讀入的數據量,單位為 塊 /s。
Blk_wrtn/s 每秒向驅動器寫入的數據量,單位為 塊 /s。
kB_read/s 每秒從驅動器讀入的數據量,單位為 KB/s。
kB_wrtn/s 每秒向驅動器寫入的數據量,單位為 KB/s。
MB_read/s 每秒從驅動器讀入的數據量,單位為 MB/s。
MB_wrtn/s 每秒向驅動器寫入的數據量,單位為MB/s。
rrqm/s 將讀入請求合併後,每秒發送到設備的讀入請求數。
wrqm/s 將寫入請求合併後,每秒發送到設備的寫入請求數。
r/s 每秒發送到設備的讀入請求 數。
w/s 每秒發送到設備的寫入請求 數。
rsec/s 每秒從設備讀入的扇區 數。
wsec/s 每秒向設備寫入的扇區 數。
rkB/s 每秒從設備讀入的數據量,單位為 KB/s。
wkB/s 每秒向設備寫入的數據量,單位為 KB/s。
rMB/s 每秒從設備讀入的數據量,單位為 MB/s。
wMB/s 每秒向設備寫入的數據量,單位為 MB/s。
avgrq-sz 發送到設備的請求的平均大小,單位為扇 區。
avgqu-sz 發送到設備的請求的平均隊列長 度。
await I/O請求平均執行時間。包括發送請求和執行的時間。單位為毫 秒。 &nbs