目錄
??包含的工具??
??安裝??
??sar??
??iostat??
??mpstat??
Linux Sysstat是linux系統(tǒng)免費提供用于收集主機性能的一個軟件包,不是默認安裝的,需要自己安裝。
sysstat 是?
Linux 系統(tǒng)中的常用工具包。它的主要用途是觀察服務負載,比如CPU和內(nèi)存的占用率、網(wǎng)絡的使用率以及磁盤寫入和讀取速度等。
sysstat 工具包中包含兩類工具:
即時查看工具:iostat、mpstat、sar
累計統(tǒng)計工具:sar
也就是說,sar 具有這兩種功能。因此,sar 是 sysstat 中的核心工具。
包含的工具
- iostat
輸出CPU的統(tǒng)計信息和所有I/O設備的輸入輸出(I/O)統(tǒng)計信息
- mpstat
關于CPU的詳細信息(單獨輸出或者分組輸出)
- pidstat
關于運行中的進程/任務、CPU、內(nèi)存等的統(tǒng)計信息
- sar
保存并輸出不同系統(tǒng)資源(CPU、內(nèi)存、IO、網(wǎng)絡、內(nèi)核等)的詳細信息
- sadc
系統(tǒng)活動數(shù)據(jù)收集器,用于收集sar工具的后端數(shù)據(jù)
- sa1
系統(tǒng)收集并存儲sadc數(shù)據(jù)文件的二進制數(shù)據(jù),與sadc工具配合使用
- sa2
配合sar工具使用,產(chǎn)生每日的摘要報告
- sadf
用于以不同的數(shù)據(jù)格式(CVS或者XML)來格式化sar工具的輸出
- sysstat
sysstat 工具包的 man 幫助頁面。
- nfsiostat
NFS(Network File System)的I/O統(tǒng)計信息
- cifsiostat
CIFS(Co
安裝
- CentOS
通過yum
安裝:yum install sysstat
或者通過rpm
包安裝:wget -c http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm sudo rpm -Uvh sysstat-11.7.3-1.x86_64.rpm
推薦rpm
包方式安裝,因為能隨時安裝最新版本。 - Ubuntu
apt-get install sysstat
查看是否成功安裝:
mpstat -V
sysstat version 9.0.4
(C) Sebastien Godard (sysstat <at> orange.fr)
sar 的累計統(tǒng)計
為了實現(xiàn) sar 的累計統(tǒng)計,系統(tǒng)必須周期地記錄當時的信息,這是通過調(diào)用 /usr/lib/
sa/ 中的三個工具實現(xiàn)的:
- sa1 :收集并存儲每天系統(tǒng)動態(tài)信息到一個二進制的文件中,用作 sadc 的前端程序
- sa2 :收集每天的系統(tǒng)活躍信息寫入總結性的報告,用作 sar 的前端程序
- sadc :系統(tǒng)動態(tài)數(shù)據(jù)收集工具,收集的數(shù)據(jù)被寫入一個二進制的文件中,它被用作 sar 工具的后端
定時統(tǒng)計任務
如果是用??yum?
?或??apt-get?
?方式安裝,默認已經(jīng)在??/etc/cron.d/sysstat?
?中配置好了計劃日志;如果是編譯安裝或沒有,可以手動配置,內(nèi)容大致如下:
# Run system activity accounting tool every 10 minutes
*/10 * * * * root? /usr/lib64/sa/sa1 1 1
# 0 * * * *? root? /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root? /usr/lib64/sa/sa2 -A
(紅色部分改為sa1和sa2實際所在地址,用yum和apt-get安裝sysstat后可以用命令 man sa1和man sa2 或find / -name sa1可以查看其所在的實際地址)
統(tǒng)計的日志文件會存放在??/var/log/sa?
?這個目錄下。每10分鐘就進行一次日志的記錄,在23:53對一天的日志進行匯總。
改為1分鐘一次:*/1? * * * * root /usr/lib64/sa/sa1 1 1
-
?
?/usr/lib64/sa/sa1?
?是一個可以使用 cron 進行調(diào)度生成二進制日志文件的 shell 腳本 -
?
?/usr/lib64/sa/sa2?
?是一個可以將二進制日志文件轉(zhuǎn)換為用戶可讀的編碼方式的 shell 腳本
可能會碰到的問題:
安裝后首次執(zhí)行??sar?
?會報如下錯誤:
(看到在這:/var/log/sysstat/--------------------------------------------------sar log存放目錄)
無法打開 /var/log/sa/sa25: 沒有那個文件或目錄
原因是安裝完??sysstat?
?后,定時任務還沒生成那個文件。此處的 25 指的是日期??梢允謩由晌募?/p>
(在守護進程 /etc/rc.d/init.d/sysstat 中使用???/usr/lib/sa/sadc -F -L -?
??命令創(chuàng)建當日記錄文件,文件為???/
?,其中 DD 為當天的日期。)
var/
log/sa/saDD?
sudo sar -o 5 #每5秒記錄一條信息,生成當日文件saDD
sar
在使用 Linux 系統(tǒng)時,常常會遇到各種各樣的問題,比如系統(tǒng)容易死機或者運行速度突然變慢,這時我們常常猜測:是否硬盤空間不足,是否內(nèi)存不足,是否 I/O 出現(xiàn)瓶頸,還是系統(tǒng)的核心參數(shù)出了問題?這時,我們應該考慮使用 sar 工具對系統(tǒng)做一個全面了解,分析系統(tǒng)的負載狀況。
sar(System Activity Reporter)是系統(tǒng)活動情況報告的縮寫。sar 工具將對系統(tǒng)當前的狀態(tài)進行取樣,然后通過計算數(shù)據(jù)和比例來表達系統(tǒng)的當前運行狀態(tài)。它的特點是可以連續(xù)對系統(tǒng)取樣,獲得大量的取樣數(shù)據(jù);取樣數(shù)據(jù)和分析的結果都可以存入文件,所需的負載很小。 sar 是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,可以從多方面對系統(tǒng)的活動進行報告,包括:文件的讀寫情況、系統(tǒng)調(diào)用的使用情況、磁盤I/O、CPU效率、內(nèi)存使用狀況、進程活動及IPC有關的活動等。為了提供不同的信息,sar 提供了豐富的選項、因此使用較為復雜。
sar 的命令格式
sar 的命令格式為:
sar [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ]
[ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]
[ -o [ filename ] | -f [ filename ] ]
[ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
[ interval [ count ] ]
其中:
- interval : 為取樣時間間隔
- count : 為輸出次數(shù),若省略此項,默認值為 1
常用選項:
選項 | 說明 |
-A | 等價于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL |
-b | 顯示I/O和傳送速率的統(tǒng)計信息 |
-B | 輸出內(nèi)存頁面的統(tǒng)計信息 |
-c | 輸出進程統(tǒng)計信息,每秒創(chuàng)建的進程數(shù) |
-d | 輸出每一個塊設備的活動信息 |
-i interval | 指定間隔時長,單位為秒 |
-p | 顯示友好設備名字,以方便查看,也可以和-d 和-n 參數(shù)結合使用,比如 -dp 或-np |
-q | 輸出進程隊列長度和平均負載狀態(tài)統(tǒng)計信息 |
-r | 輸出內(nèi)存和交換空間的統(tǒng)計信息 |
-R | 輸出內(nèi)存頁面的統(tǒng)計信息 |
-t | 讀取 /var/log/sa/saDD 的數(shù)據(jù)時顯示其中記錄的原始時間,如果沒有這個參數(shù)使用用戶的本地時間 |
-u | 輸出CPU使用情況的統(tǒng)計信息 |
-v | 輸出inode、文件和其他內(nèi)核表的統(tǒng)計信息 |
-V | 輸出版本號信息 |
-w | 輸出系統(tǒng)交換活動信息 |
-W | 輸出系統(tǒng)交換的統(tǒng)計信息 |
-y | 輸出TTY設備的活動信息 |
-n {DEV|EDEV|NFS|NFSD|SOCK|ALL} | 分析輸出網(wǎng)絡設備狀態(tài)統(tǒng)計信息。 |
DEV | 報告網(wǎng)絡設備的統(tǒng)計信息 |
EDEV | 報告網(wǎng)絡設備的錯誤統(tǒng)計信息 |
NFS | 報告 NFS 客戶端的活動統(tǒng)計信息 |
NFSD | 報告 NFS 服務器的活動統(tǒng)計信息 |
SOCK | 報告網(wǎng)絡套接字(sockets)的使用統(tǒng)計信息 |
ALL | 報告所有類型的網(wǎng)絡活動統(tǒng)計信息 |
-x {pid|SELF|ALL} | 輸出指定進程的統(tǒng)計信息。 |
pid | 用 pid 指定特定的進程 |
SELF | 表示 sar 自身 |
ALL | 表示所有進程 |
-X {pid|SELF|ALL} | 輸出指定進程的子進程的統(tǒng)計信息 |
-I {irq|SUM|ALL|XALL} | 輸出指定中斷的統(tǒng)計信息。 |
irq | 指定中斷號 |
SUM | 指定輸出每秒接收到的中斷總數(shù) |
ALL | 指定輸出前16個中斷 |
XALL | 指定輸出全部的中斷信息 |
-P {cpu|ALL} | 輸出指定 CPU 的統(tǒng)計信息 |
-o filename | 將輸出信息保存到文件 filename |
-f filename | 從文件 filename 讀取數(shù)據(jù)信息。filename 是使用-o 選項時生成的文件。 |
-s hh:mm:ss | 指定輸出統(tǒng)計數(shù)據(jù)的起始時間 |
-e hh:mm:ss | 指定輸出統(tǒng)計數(shù)據(jù)的截至時間,默認為18:00:00 |
sar 使用舉例
從 /var/log/sa/saDD 中讀取累計統(tǒng)計信息
1、輸出CPU使用情況的統(tǒng)計信息
[root@cnetos5 ~]# sar
[root@cnetos5 ~]# sar -u
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM CPU %user %nice %system %iowait %steal %idle
12:10:01 AM all 0.02 0.00 0.14 0.01 0.00 99.84
12:20:01 AM all 0.02 0.00 0.12 0.01 0.00 99.86
12:30:01 AM all 0.01 0.00 0.12 0.01 0.00 99.86
Average: all 0.03 0.00 0.13 0.01 0.00 99.84
輸出項說明:
CPU | all 表示統(tǒng)計信息為所有 CPU 的平均值。 |
%user | 顯示在用戶級別(application)運行使用 CPU 總時間的百分比。 |
%nice | 顯示在用戶級別,用于nice操作,所占用 CPU 總時間的百分比。 |
%system | 在核心級別(kernel)運行所使用 CPU 總時間的百分比。 |
%iowait | 顯示用于等待I/O操作占用 CPU 總時間的百分比。 |
%steal | 管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。 |
%idle | 顯示 CPU 空閑時間占用 CPU 總時間的百分比。 |
- 若 %iowait 的值過高,表示硬盤存在I/O瓶頸
- 若 %idle 的值高但系統(tǒng)響應慢時,有可能是 CPU 等待分配內(nèi)存,此時應加大內(nèi)存容量
- 若 %idle 的值持續(xù)低于 10,則系統(tǒng)的 CPU 處理能力相對較低,表明系統(tǒng)中最需要解決的資源是 CPU。
2、顯示I/O和傳送速率的統(tǒng)計信息
[root@cnetos5 ~]# sar -b
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM tps rtps wtps bread/s bwrtn/s
12:10:01 AM 1.58 0.00 1.58 0.00 16.71
12:20:01 AM 1.09 0.00 1.09 0.00 10.85
12:30:01 AM 1.08 0.00 1.08 0.00 10.74
Average: 1.24 0.00 1.24 0.00 12.70
輸出項說明:
tps | 每秒鐘物理設備的 I/O 傳輸總量 |
rtps | 每秒鐘從物理設備讀入的數(shù)據(jù)總量 |
wtps | 每秒鐘向物理設備寫入的數(shù)據(jù)總量 |
bread/s | 每秒鐘從物理設備讀入的數(shù)據(jù)量,單位為 塊/s |
bwrtn/s | 每秒鐘向物理設備寫入的數(shù)據(jù)量,單位為 塊/s |
3、輸出內(nèi)存頁面的統(tǒng)計信息
[root@cnetos5 ~]# sar -B
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM pgpgin/s pgpgout/s fault/s majflt/s
12:10:01 AM 0.00 4.17 9.74 0.00
12:20:01 AM 0.00 2.71 2.24 0.00
12:30:01 AM 0.00 2.69 2.25 0.00
Average: 0.00 3.17 4.07 0.00
輸出項說明:
pgpgin/s | 每秒鐘從磁盤讀入的系統(tǒng)頁面的 KB 總數(shù) |
pgpgout/s | 每秒鐘向磁盤寫出的系統(tǒng)頁面的 KB 總數(shù) |
fault/s | 系統(tǒng)每秒產(chǎn)生的頁面失效(major + minor)數(shù)量 |
majflt/s | 系統(tǒng)每秒產(chǎn)生的頁面失效(major)數(shù)量 |
4、輸出每秒創(chuàng)建的進程數(shù)的進程統(tǒng)計信息
[root@cnetos5 ~]# sar -c
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM proc/s
12:10:01 AM 0.05
12:20:01 AM 0.03
12:30:01 AM 0.03
Average: 0.03
輸出項說明:
proc/s | 每秒鐘創(chuàng)建的進程數(shù) |
5、輸出網(wǎng)絡設備狀態(tài)的統(tǒng)計信息
[root@cnetos5 ~]# sar -n DEV |grep eth0
12:00:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
12:10:01 AM eth0 0.59 0.92 41.57 893.98 0.00 0.00 0.00
12:20:01 AM eth0 0.55 0.88 37.50 859.56 0.00 0.00 0.00
12:30:01 AM eth0 0.55 0.86 38.17 871.98 0.00 0.00 0.00
Average: eth0 0.29 0.42 21.05 379.29 0.00 0.00 0.00
輸出項說明:
IFACE | 網(wǎng)絡設備名 |
rxpck/s | 每秒接收的包總數(shù) |
txpck/s | 每秒傳輸?shù)陌倲?shù) |
rxbyt/s | 每秒接收的字節(jié)(byte)總數(shù) |
txbyt/s | 每秒傳輸?shù)淖止?jié)(byte)總數(shù) |
rxcmp/s | 每秒接收壓縮包的總數(shù) |
txcmp/s | 每秒傳輸壓縮包的總數(shù) |
rxmcst/s | 每秒接收的多播(multicast)包的總數(shù) |
6、輸出網(wǎng)絡設備狀態(tài)的統(tǒng)計信息(查看網(wǎng)絡設備故障)
[root@cnetos5 ~]# sar -n EDEV |egrep 'eth0|IFACE'
12:00:01 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
12:10:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
輸出項說明:
IFACE | 網(wǎng)絡設備名 |
rxerr/s | 每秒接收的壞包總數(shù) |
txerr/s | 傳輸包時每秒發(fā)生錯誤的總數(shù) |
coll/s | 傳輸包時每秒發(fā)生沖突(collision)的總數(shù) |
rxdrop/s | 接收包時,由于缺乏緩存,每秒丟棄(drop)包的數(shù)量 |
txdrop/s | 傳輸包時,由于缺乏緩存,每秒丟棄(drop)包的數(shù)量 |
txcarr/s | 傳輸包時,每秒發(fā)生的傳輸錯誤(carrier-error)的數(shù)量 |
rxfram/s | 接收包時,每秒發(fā)生幀校驗錯誤(frame alignment error)的數(shù)量 |
rxfifo/s | 接收包時,每秒發(fā)生隊列(FIFO)一出錯誤的數(shù)量 |
txfifo/s | 傳輸包時,每秒發(fā)生隊列(FIFO)一出錯誤的數(shù)量 |
7、輸出進程隊列長度和平均負載狀態(tài)統(tǒng)計信息
[root@cnetos5 ~]# sar -q
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
12:10:01 AM 0 85 0.02 0.01 0.00
12:20:01 AM 0 85 0.01 0.00 0.00
12:30:01 AM 0 85 0.03 0.01 0.00
Average: 0 85 0.01 0.00 0.00
輸出項說明:
runq-sz | 運行隊列的長度(等待運行的進程數(shù)) |
plist-sz | 進程列表中進程(processes)和線程(threads)的數(shù)量 |
ldavg-1 | 最后1分鐘的系統(tǒng)平均負載(System load average) |
ldavg-5 | 過去5分鐘的系統(tǒng)平均負載 |
ldavg-15 | 過去15分鐘的系統(tǒng)平均負載 |
8、輸出內(nèi)存和交換空間的統(tǒng)計信息
[root@cnetos5 ~]# sar -r
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
12:10:01 AM 262068 253408 49.16 43884 156456 1048568 0 0.00 0
12:20:01 AM 261572 253904 49.26 44580 156448 1048568 0 0.00 0
12:30:01 AM 260704 254772 49.42 45124 156472 1048568 0 0.00 0
Average: 259551 255925 49.65 46453 156470 1048568 0 0.00 0
輸出項說明:
kbmemfree | 可用的空閑內(nèi)存數(shù)量,單位為 KB |
kbmemused | 已使用的內(nèi)存數(shù)量(不包含內(nèi)核使用的內(nèi)存),單位為 KB |
%memused | 已使用內(nèi)存的百分數(shù) |
kbbuffers | 內(nèi)核緩沖區(qū)(buffer)使用的內(nèi)存數(shù)量,單位為 KB |
kbcached | 內(nèi)核高速緩存(cache)數(shù)據(jù)使用的內(nèi)存數(shù)量,單位為 KB |
kbswpfree | 可用的空閑交換空間數(shù)量,單位為 KB |
kbswpused | 已使用的交換空間數(shù)量,單位為 KB |
%swpused | 已使用交換空間的百分數(shù) |
kbswpcad | 交換空間的高速緩存使用的內(nèi)存數(shù)量 |
9、輸出內(nèi)存頁面的統(tǒng)計信息
[root@cnetos5 ~]# sar -R
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM frmpg/s bufpg/s campg/s
12:10:01 AM -0.10 0.23 0.01
12:20:01 AM -0.21 0.29 -0.00
12:30:01 AM -0.36 0.23 0.01
Average: -0.21 0.22 0.00
輸出項說明:
frmpg/s | 每秒系統(tǒng)中空閑的內(nèi)存頁面(memory page freed)數(shù)量 |
bufpg/s | 每秒系統(tǒng)中用作緩沖區(qū)(buffer)的附加內(nèi)存頁面(additional memory page)數(shù)量 |
campg/s | 每秒系統(tǒng)中高速緩存的附加內(nèi)存頁面(additional memory pages cached)數(shù)量 |
10、輸出inode、文件和其他內(nèi)核表的信息
[root@cnetos5 ~]# sar -v
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz
12:10:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
12:20:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
12:30:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00
Average: 7253 589 5125 0 0.00 0 0.00 0 0.00
輸出項說明:
dentunusd | 目錄高速緩存中未被使用的條目數(shù)量 |
file-sz | 文件句柄(file handle)的使用數(shù)量 |
inode-sz | i節(jié)點句柄(inode handle)的使用數(shù)量 |
super-sz | 由內(nèi)核分配的超級塊句柄(super block handle)數(shù)量 |
%super-sz | 已分配的超級塊句柄占總超級塊句柄的百分比 |
dquot-sz | 已經(jīng)分配的磁盤限額條目數(shù)量 |
%dquot-sz | 分配的磁盤限額條目數(shù)量占總磁盤限額條目的百分比 |
rtsig-sz | 已排隊的 RT 信號的數(shù)量 |
%rtsig-sz | 已排隊的 RT 信號占總 RT 信號的百分比 |
11、輸出系統(tǒng)交換活動信息
[root@cnetos5 ~]# sar -w
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM cswch/s
12:10:01 AM 44.74
12:20:01 AM 44.41
12:30:01 AM 44.41
Average: 44.50
輸出項說明:
cswch/s | 每秒的系統(tǒng)上下文切換數(shù)量 |
12、 輸出系統(tǒng)交換的統(tǒng)計信息
[root@cnetos5 ~]# sar -W
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.00 0.00
12:20:01 AM 0.00 0.00
12:30:01 AM 0.00 0.00
Average: 0.00 0.00
輸出項說明:
pswpin/s | 每秒系統(tǒng)換入的交換頁面(swap page)數(shù)量 |
pswpout/s | 每秒系統(tǒng)換出的交換頁面(swap page)數(shù)量 |
13、輸出TTY設備的活動信息
[root@cnetos5 ~]# sar -y
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
12:00:01 AM TTY rcvin/s xmtin/s framerr/s prtyerr/s brk/s ovrun/s
12:10:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:20:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00
12:30:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00
………………
Average: 0 0.00 0.00 0.00 0.00 0.00 0.00
Average: 1 0.00 0.00 0.00 0.00 0.00 0.00
輸出項說明:
TTY | TTY 串行設備號 |
rcvin/s | 每秒接收的中斷數(shù)量 |
xmtin/s | 每秒傳送的中斷數(shù)量 |
framerr/s | 每秒發(fā)生的幀錯誤數(shù)(frame error)量 |
prtyerr/s | 每秒發(fā)生的奇偶校驗錯誤(parity error)數(shù)量 |
brk/s | 每秒發(fā)生的暫停(break)數(shù)量 |
ovrun/s | 每秒發(fā)生的溢出錯誤(overrun error)數(shù)量 |
14、顯示全面的累計統(tǒng)計信息
# sar -A
15、默認配置不提供的累計統(tǒng)計信息
[root@cnetos5 ~]# sar -d
Requested activities not available in file
[root@cnetos5 ~]# sar -x ALL
Requested activities not available in file
[root@cnetos5 ~]# sar -X ALL
Requested activities not available in file
- 默認情況下,為了防止統(tǒng)計數(shù)據(jù)文件 /var/log/sa/saDD 迅速增大,/usr/lib/sa/sadc 沒有記錄每個塊設備的統(tǒng)計信息。
- 可以在 -d -x -X 參數(shù)后添加取樣參數(shù)獲得即時統(tǒng)計信息。
- 帶有 -x -X 選項的 sar 命令從來不能記錄到二進制統(tǒng)計數(shù)據(jù)文件 。
查看即時統(tǒng)計信息
1、使用取樣選項查看即時統(tǒng)計信息
例如:每30秒取樣一次,連續(xù)取樣5次
# sar -n DEV 30 5
# sar -u 30 5
2、輸出和讀取統(tǒng)計信息文件
例如:
# sar -u 30 5 -o sar-dump-001
# sar -u -f sar-dump-001
3、輸出每一個塊設備的活動信息
# sar -dp 5 2
Linux 2.6.18-53.el5 (cnetos5) 01/22/2008
07:12:11 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:12:16 AM sda 0.40 0.00 17.56 44.00 0.00 1.00 1.00 0.04
07:12:16 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:12:16 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:12:21 AM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:12:21 AM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 0.20 0.00 8.78 44.00 0.00 1.00 1.00 0.02
Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
輸出項說明:
DEV | 正在監(jiān)視的塊設備 |
tps | 每秒鐘物理設備的 I/O 傳輸總量 |
rd_sec/s | 每秒從設備讀取的扇區(qū)(sector)數(shù)量 |
wr_sec/s | 每秒向設備寫入的扇區(qū)(sector)數(shù)量 |
avgrq-sz | 發(fā)給設備請求的平均扇區(qū)數(shù) |
avgqu-sz | 發(fā)給設備請求的平均隊列長度 |
await | 設備 I/O 請求的平均等待時間(單位為毫秒) |
svctm | 設備 I/O 請求的平均服務時間(單位為毫秒) |
%util | 在 I/O 請求發(fā)送到設備期間,占用 CPU 時間的百分比。用于體現(xiàn)設備的帶寬利用率。 |
- avgqu-sz 的值較低時,設備的利用率較高。
- 當 %util 的值接近 100% 時,表示設備帶寬已經(jīng)占滿。
要判斷一個系統(tǒng)瓶頸問題,有時需要幾個 sar 命令選項結合起來使用,例如:
- 懷疑CPU存在瓶頸,可用?
sar -u
?和?sar -q
?deng 等來查看 - 懷疑內(nèi)存存在瓶頸,可用?
sar -B
、sar -r
?和?sar -W
?等來查看 - 懷疑I/O存在瓶頸,可用??
?sar -b?
?、??sar -u?
??和???sar -d?
??等來查看iostat iostat 的命令格式 iostat 用于輸出CPU和磁盤I/O相關的統(tǒng)計信息。命令格式為:iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ]
其中:
- interval : 為取樣時間間隔
- count : 為輸出次數(shù),若指定了取樣時間間隔且省略此項,將不斷產(chǎn)生統(tǒng)計信息
- 常用選項:
- iostat 使用舉例
- 下面給出幾個例子:
# 顯示一條包括所有的CPU和設備吞吐率的統(tǒng)計信息# iostat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 1.44 16.79 10.58 800430 504340 sdb 0.01 0.07 0.00 3314 8 sdc 0.86 8.56 0.00 407892 24 # 每隔5秒顯示一次設備吞吐率的統(tǒng)計信息(單位為 塊/s) iostat -d 5 # 每隔5秒顯示一次設備吞吐率的統(tǒng)計信息(單位為 KB/s),共輸出3次 iostat -dk 5 3 # 每隔2秒顯示一次 sda 及上面所有分區(qū)的統(tǒng)計信息,共輸出5次 iostat -p sda 2 5 # 每隔2秒顯示一次 sda 和 sdb 兩個設備的擴展統(tǒng)計信息,共輸出6次 iostat -x sda sdb 2 6 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.17 0.84 0.96 0.47 16.67 10.56 19.01 0.01 7.11 1.25 0.18 sdb 0.00 0.00 0.01 0.00 0.07 0.00 5.16 0.00 0.22 0.19 0.00 ………… >iostat -t 5 -x > iostat.out -t是輸出時間和日期,5是代表5秒一次,-x是詳細情況都輸出 主要查看cpu的idle和磁盤的util
iostat 的輸出項說明
rrqm/s: 每秒對該設備的讀請求被合并次數(shù),文件系統(tǒng)會對讀取同塊(block)的請求進行合并
wrqm/s: 每秒對該設備的寫請求被合并次數(shù)
r/s: 每秒完成的讀次數(shù)
w/s: 每秒完成的寫次數(shù)
rkB/s: 每秒讀數(shù)據(jù)量(kB為單位)
wkB/s: 每秒寫數(shù)據(jù)量(kB為單位)
avgrq-sz:平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位)
avgqu-sz: 平均等待處理的IO請求隊列長度
await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)
svctm: 平均每次IO請求的處理時間(毫秒為單位)
%util: 采用周期內(nèi)用于IO操作的時間比率,即IO隊列非空的時間比率
?
對于以上示例輸出,我們可以獲取到以下信息:
每秒向磁盤上寫30M左右數(shù)據(jù)(wkB/s值)
每秒有91次IO操作(r/s+w/s),其中以寫操作為主體
平均每次IO請求等待處理的時間為120.57毫秒,處理耗時為6.33毫秒
等待處理的IO請求隊列中,平均有11.79個請求駐留
?
以上各值之間也存在聯(lián)系,我們可以由一些值計算出其他數(shù)值,例如:
util = (r/s+w/s) * (svctm/1000)
對于上面的例子有:util = (1+90)*(6.33/1000) = 0.57603
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統(tǒng)調(diào)用需要讀取數(shù)據(jù)的時候,VFS將請求發(fā)到各個FS,如果FS發(fā)現(xiàn)不同的讀取請求讀取的是相同Block的數(shù)據(jù),F(xiàn)S會將這個請求合并Merge);
wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。
r/s: 該設備的每秒完成的讀請求數(shù)(merge合并之后的)
w/s: ?該設備的每秒完成的寫請求數(shù)(merge合并之后的)
rKB/s:每秒發(fā)送給該設備的總讀請求數(shù) #rMB/s
wKB/s:每秒發(fā)送給該設備的總寫請求數(shù)?#wMB/s
avgrq-sz 平均請求扇區(qū)的大小
avgqu-sz 是平均請求隊列的長度。毫無疑問,隊列長度越短越好。 ?
await:每一個IO請求的處理的平均時間(單位是微秒毫秒)。這里可以理解為IO的響應時間,一般地系統(tǒng)IO響應時間應該低于5ms,如果大于10ms就比較大了。
這個時間包括了隊列時間和服務時間,也就是說,一般情況下,await大于svctm,它們的差值越小,則說明隊列時間越短,反之差值越大,隊列時間越長,說明系統(tǒng)出了問題。
r_await:讀IO的響應時間
w_await:寫IO的響應時間
svctm: 表示平均每次設備I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高于svctm的值,
則表示I/O隊列等待太長,系統(tǒng)上運行的應用程序?qū)⒆兟?/p>
%util: 在統(tǒng)計時間內(nèi)所有處理IO時間,除以總共統(tǒng)計時間。例如,如果統(tǒng)計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那么該設備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設備的繁忙程度。
一般地,如果該參數(shù)是100%表示設備已經(jīng)接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,因為磁盤的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。
rsec/s:每秒讀取的扇區(qū)數(shù);
wsec/:每秒寫入的扇區(qū)數(shù)。
- avg-cpu 部分輸出項說明:
- Device 部分基本輸出項說明:
- Device 部分擴展輸出項說明:
- mpstat
- mpstat 的命令格式
- mpstat 輸出每一個 CPU 的運行狀況,為多處理器系統(tǒng)中的 CPU 利用率提供統(tǒng)計信息。命令格式為:
mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ]
其中:
- interval : 為取樣時間間隔。指定0則輸出自系統(tǒng)啟動后的一個統(tǒng)計信息。
- count : 為輸出次數(shù)。若指定了取樣時間間隔且省略此項,將不斷產(chǎn)生統(tǒng)計信息。
- 常用選項:
- mpstat 使用舉例
- 下面給出幾個例子:
# 輸出所有 CPU 使用情況的統(tǒng)計信息。# mpstat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:39:06 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:39:06 AM all 0.10 0.04 0.31 0.06 0.04 0.01 0.00 99.45 1012.99 # 輸出第一個 CPU 使用情況的統(tǒng)計信息。 # mpstat -P 0 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:41:03 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:41:03 AM 0 0.09 0.02 0.40 0.09 0.08 0.01 0.00 99.32 1012.79 # 每隔2秒輸出所有CPU的統(tǒng)計信息,共輸出5次。 # mpstat 2 5 # 每隔2秒輸出一次所有CPU的統(tǒng)計信息,共輸出5次。 # mpstat -P ALL 2 5 # 每隔2秒輸出一次第二個CPU的統(tǒng)計信息,共輸出5次。 # mpstat -P 1 2 5
mpstat 輸出項說明
?
11.33 kSar 命令
11.33.1 命令詳解
sar 命令的輸出能夠用于識別服務器瓶頸。但是,分析 sar 命令提供的信息可能比較困難,所以要使用 kSar 工具。kSar 工具可以將 sar 命令的輸出繪制成基于時間周期的、易于理解的圖表。
官網(wǎng)介紹:
https://github.com/vlsi/ksar
11.33.2 kSar使用
本文摘自 :https://blog.51cto.com/l