sysstat工具的用法

sysstat工具簡介裏簡單對sysstat工具包進行了一下說明,這篇日誌銜接上一篇。主要說明其所包含的工具sadc、sdaf、sar、iostat、mpstat的用法。html

1、sadc工具node

sadc 位於 /usr/lib/sa目錄中(64位系統在:/usr/lib64/sa目錄中),若是你沒有設置可執行路徑,要用絕對路徑來運行。sdac準備的說只是一個蒐集寫入工具,並不直接回顯於屏幕上。sadc 是把數據寫在一個二進制的文件中,若是想查看數據內容,須要用sadf工具來顯示。ios

 

# /usr/lib64/sa/sadc --help
Usage: /usr/lib64/sa/sadc [ options... ] [ <interval> [ <count> ] ] [ <outfile> ]
Options are:
[ -d ] [ -F ] [ -I ] [ -V ]

參數說明:web

-d 報告硬盤設置的相關統計;
-F 強制把數據寫入文件;
-I
報告全部系統中斷數據;
interval 表示時間間隔,單位是秒,好比3 ;
count 統計數據的次數,也是一個數字;
outfile
輸出統計到outfile文件;
數據庫

注意:此工具中的參數都是可選的,若是沒有指定任何參數,好比 /usr/lib/sa/sadc - (後面的「-」是必須的,少了會出亂碼和報錯),則會輸出數據到 /var/log/sa/
目錄下的一個文件中。要經過sadf 或sar工具來查看。網絡

[root@localhost test]# /usr/lib/sa/sadc -
[root@localhost test]# ls /var/log/sa 注:列出全部sa目錄下的文件,根據文件的時間來判斷哪一個文件是最新的;
[root@localhost test]# sar -f /var/log/sa/sa11
或 sadf /var/log/sa/sa11
[root@localhost ~]# /usr/lib/sa/sadc  1 10 sa000  表示每1秒進行一次數據統計,共進行10次。
[root@localhost ~]# sar -f sa000

2、sadf工具app

sdaf 能從二進制文件中提取sar所收集的數據;顯示的格式不如sar直觀。(不能就此認爲該工具沒有用,其主要用於導出爲csv、xml等格式的文件,方便導入數據庫或excel等程序。)官方給出的說明這樣的:工具

 displays data collected by sar in multiple formats (CSV, XML, etc.) This is useful to load performance data into a database, or import them in a spreadsheet to make graphs..net

 

 

上圖是一個以sdaf導出的csv格式,經過excel生成的圖表效果。具體用法,能夠--help或man查看。日誌

3、sar工具

sar 工具比較強大,既能收集系統CPU、硬盤、動態數據,也能顯示動態顯示,更能查看二進制數據文件;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就是讀取 /var/log/sa目錄下最近系統狀態文件。sar -A 讀取/var/log/sa目錄下全部文件數據。

 

應用舉例:

一、若是咱們想知道CPU的利用率;動態更新;下面的例子是每秒更新一次數據,總共更新五次;

 

[root@web20 sa]# sar -u  1 5
Linux 2.6.18-238.el5 (web20.com)        2012年06月11日
16時30分44秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
16時30分45秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16時30分46秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16時30分47秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16時30分48秒       all      0.00      0.00      0.00      0.00      0.00    100.00
16時30分49秒       all      0.00      0.00      0.00      0.00      0.00    100.00
Average:          all      0.00      0.00      0.00      0.00      0.00    100.00

CPU:表示機器內全部的CPU;
%user 表示CPU的利用率;
%nice 表示CPU在用戶層優先級的百分比,0表示正常;
%system
表示當系統運行時,在用戶應用層上所佔用的CPU百分比;
%iowait 表示請求硬盤I/0數據流出時,所佔用CPU的百分比;
%idle
表示空閒CPU百分比,值越大系統負載越低;

咱們能夠將上面的結果輸出到文本,或者利用sar自己的-o參數輸出爲二進制文件。(輸出的二進制文件能夠經過-f參數查看)

 

二、查看網絡吞吐量

[root@localhost ~]# sar -n DEV 2 5    //每2秒更新一數據,共更新5次
時間 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s

上面的結果部分我並未複製過來。這裏只是顯示所顯示的參數部分,其具體意思以下:

IFACE:設備名;
rxpck/s:每秒收到的包;
rxbyt/s:每秒收到的全部包的數量 ;
txbyt/s:每秒發送的全部包的數量 ;
txbyt/s:每秒發送的全部包的大小;
rxcmp/s:每秒收到數的據壓縮包的數量;
txcmp/s :每秒傳輸的數據壓縮包的數據;
rxmcst/s: 每秒收到的多播的包數量;

若是想獲取某塊網卡的流量狀況,咱們可使用grep過濾。

4、iostat 

iostat 是sysstat包中重要性僅次於sar工具的又一重量級工具。其參數也比較多。其能夠蒐集CPU使用狀況、磁盤IO狀態。

Usage: iostat [ options... ] [ <interval> [ <count> ] ]    //iostat 參數   間隔時間  總顯示次數

參數說明:

-c : 僅顯示cpu的狀態
-d : 僅顯示存儲設備的狀態,不能夠和-c一塊兒使用
-k :
默認顯示的是讀入讀出的block信息,用-k能夠改爲KB大小來顯示
-t  : 顯示日期
-p device | ALL :
device爲某個設備或者某個分區,若是使用ALL,就表示要顯示全部分區和設備的信息
-x 顯示擴展狀態,顯示出更多內容

[root@web20 sa]# iostat -x
Linux 2.6.18-238.el5 (web20.com)        2012年06月11日
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.02    0.06    0.14    0.00   99.74
Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util

上面結果部分我進行了省略。咱們主要講下其給出的幾個參數:

rrqm/s: 每秒進行 merge 的讀操做數目。即 delta(rmerge)/s
wrqm/s: 每秒進行 merge 的寫操做數目。即 delta(wmerge)/s
r/s: 每秒完成的讀 I/O 設備次數。即 delta(rio)/s
w/s: 每秒完成的寫 I/O 設備次數。即 delta(wio)/s
rsec/s: 每秒讀扇區數。即 delta(rsect)/s
wsec/s: 每秒寫扇區數。即 delta(wsect)/s
rkB/s: 每秒讀K字節數。是 rsect/s 的一半,由於每扇區大小爲512字節。(須要計算)
wkB/s: 每秒寫K字節數。是 wsect/s 的一半。(須要計算)
avgrq-sz: 平均每次設備I/O操做的數據大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (由於aveq的單位爲毫秒)。
await: 平均每次設備I/O操做的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次設備I/O操做的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的時間用於 I/O 操做,或者說一秒中有多少時間 I/O 隊列是非空的。即 delta(use)/s/1000 (由於use的單位爲毫秒)
若是 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
idle小於70% IO壓力就較大了,通常讀取速度有較多的wait.

5、mpstat

mpstat 用於多處理器系統中的CPU的利用率的統計。細化到具體某個cpu的狀態時可使用參數-p,處理器的ID從0開始。這個和top中按1的效果相同。

 

mpstat --help
Usage: mpstat [ options... ] [ <interval> [ <count> ] ]
Options are:
[ -P { <cpu> | ALL } ] [ -V ]

[root@localhost ~]# mpstat -P 0 2 10    //查看第一個CPU

 

[root@localhost ~]# mpstat 2 10          //查看全部CPU,也可使用-p ALL
Linux 2.6.18-238.el5 (web20.sangame.com)        2012年06月12日
10時03分37秒  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s

一樣,上面的顯示中,我也省略告終果,只保留了參數。其中幾個主要的參數的含義以下:

%user    顯示在用戶級別(application)運行使用 CPU 總時間的百分比。
%nice    顯示在用戶級別,用於nice操做,所佔用 CPU 總時間的百分比。
%system 在覈心級別(kernel)運行所使用 CPU 總時間的百分比。
%iowait 顯示用於等待I/O操做佔用 CPU 總時間的百分比。
%irq  顯示在interval時間段內,硬中斷佔用的CPU總時間。
%soft  顯示在interval時間段內,軟中斷佔用的CPU總時間。
%steal   管理程序(hypervisor)爲另外一個虛擬進程提供服務而等待虛擬CPU的百分比。
%idle    顯示 CPU 空閒時間佔用CPU總時間的百分比。
intr/s 在internal時間段裏,每秒CPU接收的中斷的次數。
其計算理論以下:

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時間前的值。上表中的全部值可取到兩位小數點。
注:mpstat的取值來自於/proc/stat文件。該文件的幾個參數解析以下:

ctxt: 給出了自系統啓動以來CPU發生的上下文交換的次數。 
btime: 給出了從系統啓動到如今爲止的時間,單位爲秒。 
processes (total_forks): 自系統啓動以來所建立的任務的個數目。 
procs_running:當前運行隊列的任務的數目。 
procs_blocked:當前被阻塞的任務的數目。

    至此,sysstat的講解差很少算作了一個完結,不過最新的sysstat包中還另外包含的工具備pidstat、nfsiostat、cifsiostat。具體能夠參看其官方文檔 —— http://sebastien.godard.pagesperso-orange.fr/documentation.html 。

相關文章
相關標籤/搜索