linux sysstat相關工具sar、iostat等介紹

@簡介:

Sysstat是linux系統上的狀態查看工具,包含監測系統性能及效率的一組工具,這些工具對於我

們收集系統性能數據,比如CPU使用率、硬盤和網絡吞吐數據,這些數據的收集和分析,有利於

我們判斷系統是否正常運行,是提高系統運行效率、安全運行服務器的得力助手;

Sysstat 軟件包集成如下工具:

iostat : reports CPU statistics and input/output statistics for devices, partitions

              and network filesystems.

              報告cpu使用率以及硬盤網絡的吞吐量。

mpstat:reports individual or combined processor related statistics.

              提供單個處理器或多個處理器相關數據;

pidstat:reports statistics for Linux tasks (processes) : I/O, CPU, memory, etc.

              報告linux上的進程io、cpu、內存等的使用率。

sar:      collects, reports and saves system activity information (CPU, memory,

              disks, interrupts, network interfaces, TTY, kernel tables,etc.)

              工具負責收集、報告並存儲系統活躍的信息;

sadc:    is the system activity data collector, used as a backend for sar.是系統動態

              數據收集工具,收集的數據被寫一個二進制的文件中,它被用作sar工具的後端;

sa1:      collects and stores binary data in the system activity daily data file. It is a

              front end to sadc designed to be run from cron.

              工具負責收集並存儲每天系統動態信息到一個二進制的文件中。它是通過計劃任務工具

              cron來運行,是爲sadc所設計的程序前端程序;

sa2:      writes a summarized daily activity report. It is a front end to sar designed

              to be run from cron.

              工具負責把每天的系統活躍性息寫入總結性的報告中。它是爲sar所設計的前端 ,要通

      過cron來調用

sadf:    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.

              顯示被sar通過多種格式收集的數據;

nfsiostat: reports input/output statistics for network filesystems (NFS).

               報告nfs的吞吐率。

cifsiostat:reports CIFS statistics. 統計cifs的使用情況。

@安裝:

在centos上可以通過yum安裝Sysstat

yum install sysstat

但是安裝的不是最新版本,好多功能沒有,所以建議用源代碼安裝。

首先下載最新版sysstat-9.1.5.tar.gz

wget http://pagesperso-orange.fr/sebastien.godard/sysstat-9.1.5.tar.gz

tar zxvf sysstat-9.1.5.tar.gz

cd sysstat-9.1.5

./configure

make

make install

如果沒有指定--prefix,默認安裝在/usr/local下。

Sysstat 通過a1 和sa2收集系統信息,如果要把收到的信息自動保存到文件中,必須通過cron

爲sa1 和sa2 做計劃任務。通過crontab –e 添加如下內容。

# Run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib/sa/sa1 -d 1 1

# 0 * * * * root /usr/lib/sa/sa1 -d 600 6 &

# Generate a daily summary of process accounting at 23:53

53 23 * * * root /usr/lib/sa/sa2 –A

@Sysstat 工具集介紹:

通用參數說明:這些命令中,有些事收集統計,有些事報告顯示統計,有些收集的同時也能報

告收集到的信息,下面每個命令都有說明。

 

統計採集的命令會把結果寫入文件,如果文件不指定,則寫入默認位置

 

既能統計也能顯示報告的命令把結果寫到控制檯,同時也可以用參數指定寫入的文件,這些要顯

示的統計可能來自當前統計,也可能來自以前統計保存的文件;

 

只能顯示報告的命令需要指定讀取的文件,如果文件不存在則會從默認位置讀取。

【注】默認位置,通常在/var/log/sa/sadd文件中,dd表示當前的天數,如sa1,如果指定的文

件名爲”-”,也表示默認位置

 

這些命令中大部分都有[ interval [ count ] ] 可選

參數,interval參數定義統計或顯示統計的間隔,count參數定義了統計或顯示統計的個數;在

顯示統計信息的時候

**如果不指定interval參數或者指定爲0,

    **則當統計信息來源以前保存的文件,則顯示文件所有內容;

    **如果來源於目前當前的的統計,則只顯示一次;

**如果指定了interval,count沒有指定或爲0,

    **如果要顯示的統計來源來自文件,則按照interval間隔顯示文件全部內容。

    **如果文件內容來自當前命令的統計,則不停的統計統計並顯示。

**如果指定了interval、count,則按照interval間隔顯示count次。

pidstat:(報告)

pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,...] | SELF | ALL } ] [ -r ]

[ -s ] [ -t ] [ -T { TASK | CHILD | ALL } ] [ -u ] [ -V ] [ -w ] [ interval [ count ] ]

-d 統計io狀況
-C string 只顯示名字中包含string的進程
-I 在smp環境中,顯示每個cpu的佔用率
-l 顯示進程命令的名字以及參數
-p 進程pid
-r 報告頁錯誤和內存使用情況。
-s 報告棧的使用情況。
-t 報告進程相關的線程情況
-T 定義監視的類型(TASK:只統計指定進程;CHILD:統計指定進程以及子進程;ALL統計指定進程所屬的進程及其所有子進程)
-u 報告cpu使用率
-d:顯示io統計

PID:進程pid

kB_rd/s:每秒鐘進程讀磁盤的字節數(kB)

kB_wr/s:每秒鐘進程寫磁盤的字節數(KB)

kB_ccwr/s:寫磁盤被取消的字節數。

Command:進程的命令名

-r:顯示頁中斷和內存信息

PID:進程pid

minflt/s:每秒鐘產生的次中斷

majflt/s:每秒鐘產生的主中斷

VSZ:使用的虛擬內存(KB)

RSS:實際駐留"在內存中"的內存數

Command:進程的命令名

-s:堆棧使用情況

pid:進程pid

StkSize:爲進程堆棧預留的內存大小,

StkRef:用作堆棧的內存大小。

Command:進程的命令名

-u:報告cpu的使用率

PID :進程pid

%usr :用戶態級cpu的使用率

%system :系統級的cpu使用率

%guest :運行虛擬處理器消耗的cpu。

%CPU :cpu的佔用率

CPU :進程佔用的cpu編號

Command:進程的命令字

-w:進程切換統計(只有在內核大於2.6.23纔有用) sadc :(採集並寫入文件)

位於 /usr/lib/sa目錄中,sadc 是把數據寫在一個二進制的文件中,需要用sadf工具來顯示保存

的內容;/usr/local/lib/sa/sadc [ -C comment ] [ -S { INT | DISK | SNMP | IPV6 |

POWER | XDISK | ALL | XALL } ] [ -F ] [ -L ] [ -V ] [ interval [ count ] ] [ outfile ]

-F  強制把數據寫入文件;

-L  在寫或者刪除文件的時候獲得獨佔鎖,如果有不能獲得鎖,會在下一個間隔重試獲得鎖。防

止多個進程同時寫文件,導致文件損壞。

-S { INT | DISK | SNMP | IPV6 | POWER | XDISK | ALL | XALL }:指定哪種數據要被

sadc收集。

-V 版本信息

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

count 統計數據的次數,也是一個數字;

outfile 輸出統計到outfile文件;

sadc在interval間隔內抽樣系統數據count次,並以二進制形式寫入outfile或標準輸出,如果輸入

文件設置爲-,則使用sysstat默認的路徑,通常在/var/log/sa/sadd文件中,dd表示當前的天數,

如sa1。默認sadc收集除了中斷和磁盤以爲的所有的數據,如果要收集磁盤和中斷數據,必須用-S

明確指明。當count參數沒有指定時,sadc永遠不停的寫入收集到的數據;當count和interval都

沒有指定的時候,會創建一個空文件。XDISK是DISK的一個擴展,它比DISK多統計分區的信息。

ALL包括除了XDISK,XALL包括所有。

sar :(收集報告並保存)
-A 顯示所有歷史數據
-b io吞吐率的統計
-B 報告頁信息
-d 報告物理塊設備(存儲設備)的寫入、讀取之類的信息,如果直觀一點,可以和p參數共同使用,-dp
-f 從一個二進制的數據文件中讀取內容
-i interval  指定數據收集的時間,時間單位是秒
-e[ hh:mm:ss ] 設置結束的時間
-n 顯示網絡統計
-o 把統計信息寫入一個文件
-P 報告每個處理器應用統計,用於多處理器機器,並且啓用SMP內核纔有效;
-p 顯示友好設備名字,以方便查看
-q 顯示運行隊列的統計和負載
-r 顯示內存使用情況
-R 顯示內存統計
-S 顯示交換分區統計
-t 這個選項對從文件讀取數據有用,如果沒有這個參數,會以本地時間爲標準讀出
-u 報告CPU利用率的參數
-v 報告inode, 文件或其它內核表的資源佔用信息;

sar可以收集、報告、存儲系統活動信息。具體分一下情況:

##當不指定interval參數,會全部顯示以前收集到的文件內容。如果指定-f標誌,sar從-f指定

     的以前保存的文件中提取內容,然後寫入標準輸出,如果沒有指定-f標誌,將從默認的日報文

     件(/var/log/sadd)讀取。如果-f指定的文件或者默認位置沒有文件,則提示沒有那個文件目

     錄或目錄錯誤。

##當指定interval參數,如果指定了count則以interval爲間隔顯示count條,接下來說要顯示

     的數據來源:果指定-f標誌,sar從-f指定的以前保存的文件中提取內容,然後寫入標準輸出

    (-f -表示默認位置);如果沒有指定-f標誌,將從系統收集信息並顯示到控制檯,如果指定了

     -o標誌,收集的數據同時會寫到-o指定的文件中(-o -表示默認位置)和控制檯。

 

如果沒有-P標誌,sar報告系統範圍中整體cpu的使用的平均值;反之如果指定了-P標誌,sar將只

報告某個cpu的使用狀況;當-P ALL標誌指定,每個單獨的cpu和整體所有cpu的使用情況都被報告。

 

如果同時需要採樣和統計報告,爲sar指定輸出文件將使得這很便利,運行如下命令:

sar -o datafile interval count >/dev/null 2>&1 &

所有被捕獲的數據會以二進制形式寫入datafile中,這些數據可以用sar  -f顯示,如果不指定count參數,則文件

-b:io相關:

tps  :每秒總共的物理設備的請求次數

rtps :每秒總共的物理設備的寫請求次數

wtps :每秒的io寫請求次數

bread/s :每秒的io讀請求扇區數(1扇區=512byte)

bwrtn/s :每秒的io寫請求扇區數

-B:頁相關信息

pgpgin/s :每秒系統從磁盤置入的字節數(KB)

pgpgout/s :每秒系統置出到磁盤上的字節數(KB)

fault/s  :每秒鐘系統產生的頁中斷(major + minor)。

majflt/s  :每秒產生的主中斷次數(見【注】)。

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

pgscank/s :每秒被頁面交換守護進程kswapd掃描的頁個數。

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

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

%vmeff:每秒清除的頁佔總掃描頁的百分比。

-d:報告塊設備相關信息

DEV :設備名

tps  :設備每秒的傳輸次數。

rd_sec/s  :每秒讀的扇區數。

wr_sec/s  :每秒寫的扇區數。

avgrq-sz  :平均的請求扇區數。

avgqu-sz :設備的平均請求的隊列長度。

await  :平均每次io花費的時間(包括服務時間的隊列等待時間)

svctm :(這個參數不準確,在將來版本中會去掉)

%util:一秒中有百分之多少的時間用於I/O 操作

-m { keyword [,...] | ALL }:報告cpu、風扇、電源、溫度 相關信息。 -n { keyword [,...] | ALL }:顯示網絡統計信息

keyword 值:DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP,

SOCK6, IP6, EIP6, ICMP6, EICMP6 and UDP6

**DEV:

IFACE :網絡接口的名字

rxpck/s :每秒收到的包數量

txpck/s :每秒發出的包的數量

rxkB/s :每秒收到的字節數(KB)

txkB/s :每秒發出的字節數(KB)

rxcmp/s :每秒收到的壓縮包的數量

txcmp/s :每秒發出的壓縮包的數量。

rxmcst/s :每秒收到的廣播包的數量。

**EDEV:網絡錯誤的信息

IFACE :網絡接口的名字

rxerr/s :每秒收到的非法包的個數

txerr/s :每秒發出的非法包的數量

coll/s :遭遇衝突的發送包數量。

rxdrop/s :因爲緩衝充滿,每秒鐘丟棄的已接收數據包數

txdrop/s :因爲緩衝充滿,每秒鐘丟棄的已發送數據包數

txcarr/s :發送數據包時,每秒載波錯誤數

rxfram/s :每秒接收數據包的幀對齊錯誤數

rxfifo/s :接收的數據包每秒FIFO過速的錯誤數

txfifo/s :發送的數據包每秒FIFO過速的錯誤數

**SOCK:套接字信息

totsck:使用的套接字總數量

tcpsck:使用的TCP套接字數量

udpsck:使用的UDP套接字數量

rawsck:使用的raw套接字數量

ip-frag:使用的IP分片數量

tcp-tw:time_wait的套接字數量

**IP:

irec/s :每秒收到的數據包(包括錯誤)

fwddgm/s :每秒收到非本機終點ip包(即包的終點ip不是本機)

idel/s :每秒收到的成功遞送的ip用戶協議包。

orq/s :每秒應答的ip用戶協議包。

asmrq/s :每秒收到的需要重組的ip分片。

asmok/s :每秒成功重組的數據包。

fragok/s :本機上每秒被分片的數據包

fragcrt/s :每秒產生的ip分片數

**TCP:

active/s :tcp連接從CLOSED狀態遷移到SYN-SENT狀態的次數。

passive/s :tcp連接從LISTEN狀態遷移到SYN-RCVD狀態的次數。

iseg/s :每秒收到的數據片段。

oseg/s :每秒發送的數據片段。

**UDP:

idgm/s  :每秒收到的數據報的個數

odgm/s  :每秒發送的數據報個數

noport/s :每秒鐘收到的,其指定端口沒有應用程序的數據報個數

idgmerr/s :每秒鐘收到的,不能被遞送的,除了其指定端口沒有應用程序的數據報個數

-q:顯示運行隊列長度和負載

runq-sz :運行隊列的長度,即等待 CPU 以便運行的內核線程數。通常,此值應小於 2。如果此值持續偏高,

則表明系統可能計算密集 (CPU-bound)。

plist-sz :任務隊列中的任務個數

ldavg-1:系統最後1分鐘的平均負載

ldavg-5 :系統最後5分鐘的平均負載

ldavg-15:系統最後15分鐘的平均負載

-r:顯示內存統計

kbmemfree:可用的內存數(kB),即未被分配的內存。

kbmemused:使用的內存,不包括內核自己使用的內存

%memused:內存使用百分比

kbbuffers :被內核用作buffer緩衝的內存

kbcached :被內核用作cache緩衝的內存

kbcommit  :保證當前工作所需要的內存(KB)

%commit:當前需要的內存佔總內存的百分比。

-R:內存統計

frmpg/s:  每秒被釋放的內存頁數,負值表示系統已經分配了的內存頁數。注意:依據機器體系的不同,內存頁

的大小有4kB或8kB

bufpg/s :每秒系統用於buffers的附加的內存頁數。負值表示較少的頁數用於系統buffers

campg/s : 每秒系統用於cached的附加的內存頁數。負值表示較少的頁數用於系統cached

-S:交換分區的統計

kbswpfree:空閒的交換分區(KB)

kbswpused:使用的交換分區(KB)

%swpused:交換分區使用百分比

kbswpcad:用於cache的swap內存數

%swpcad:用於cache的swap內存百分比

-W :交換分區的統計

pswpin/s:每秒鐘換入的交換頁數量。

pswpout/s:每秒鐘置出的交換頁數量。

-w:報告進程的創建和調度信息

proc/s:每秒創建的進程。

cswch/s:沒秒上下文交換的進程。

-v:顯示索引節點,文件和其他內核表。

dentunusd:在目錄條目中沒有使用的緩衝條目。

file-nr:被系統使用的文件句柄數量。

inode-nr:使用的索引節點數量。

pty-nr:正在使用的pty數量。

-u [ ALL ]:顯示cpu統計

%user :用戶態使用的cpu百分比,不包括虛擬處理器。

%usr :用戶態使用的cpu百分比,包括虛擬處理器。

%nice :用戶態nice優先級進程佔用的cpu百分比。

%sys :內核態佔用的cpu百分比。

%iowait :有突出io請求、cpu空閒的百分比。

%steal  :cpu等待系統進程調度的百分比。

%irq  :花費在硬件中斷上的cpu百分比。

%soft :花費在軟件中斷上的cpu百分比。

%guest  :花費在運虛擬處理器的cpu百分比。

%idle:沒有io操作、cpu處於空閒的cpu百分比。

【注】缺頁中斷可分爲主缺頁中斷(Major Page Fault)和次缺頁中斷(Minor Page Fault),

要從磁盤讀取數據而產生的中斷是主缺頁中斷;數據已經被讀入內存並被緩存起來,從內存緩存

區中而不是直接從硬盤中讀取數據而產生的中斷是次缺頁中斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章