歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

sysstat工具簡介

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

一、sadc工具

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

# /usr/lib64/sa/sadc --help

Usage: /usr/lib64/sa/sadc [ options... ] [ [ ] ] [ ]

Options are:

[ -d ] [ -F ] [ -I ] [ -V ]

參數說明:

-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

二、sadf工具

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.

 

\

 

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

三、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目錄下所有文件數據。

應用舉例:

1、如果我們想知道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參數查看)

2、查看網絡吞吐量

[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過濾。

四、iostat

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

Usage: iostat [ options... ] [ [ ] ] //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.

五、mpstat

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

mpstat --help

Usage: mpstat [ options... ] [ [ ] ]

Options are:

[ -P { | 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。具體可以參看其官方文檔

Copyright © Linux教程網 All Rights Reserved