在CentOS安裝iostat

使用yum,如何安裝iostat
sysstat 使用yum安裝
#yum install sysstat

sysstat的安裝包是:sysstat-5.0.5-1.i386.rpm,裝完了sysstat-5.0.5-1.i386.rpm
後 就會有iostat、mpstat、sar、sa的功能,sysstat-5.0.5-1.i386.rpm

啓動sysstat
/etc/init.d/sysstat start

設置sysstat自啓動
#checkfig sysstat on

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 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
輸出內存和交換空間的統計信息
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請求平均執行時間。包括髮送請求和執行的時間。單位爲毫 秒。                                                  
svctm 發送到設備的I/O請求的平均執行時間。單位爲毫 秒。                                                                    
%util 在I/O請求發送到設備期間,佔用CPU時間的百分比。用於顯示設備的帶寬利用率。當這個值接近100%時,表示設備帶寬已經佔滿。

Linux系統出現了性能問題,一般我們可以通過top、iostat、free、vmstat等命令來查看初步定位問題。其中iostat可以給我們提供豐富的IO狀態數據。

1. 基本使用

$iostat -d -k 1 10

參數 -d 表示,顯示設備(磁盤)使用狀態;-k某些使用block爲單位的列強制使用Kilobytes爲單位;1 10表示,數據顯示每隔1秒刷新一次,共顯示10次。

$iostat -d -k 1 10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 39.29 21.14 1.44 441339807 29990031 sda1 0.00 0.00 0.00 1623 523 sda2 1.32 1.43 4.54 29834273 94827104 sda3 6.30 0.85 24.95 17816289 520725244 sda5 0.85 0.46 3.40 9543503 70970116 sda6 0.00 0.00 0.00 550 236 sda7 0.00 0.00 0.00 406 0 sda8 0.00 0.00 0.00 406 0 sda9 0.00 0.00 0.00 406 0 sda10 60.68 18.35 71.43 383002263 1490928140 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 327.55 5159.18 102.04 5056 100 sda1 0.00 0.00 0.00 0 0

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。

上面的例子中,我們可以看到磁盤sda以及它的各個分區的統計數據,當時統計的磁盤總TPS是39.29,下面是各個分區的TPS。(因爲是瞬間值,所以總TPS並不嚴格等於各個分區TPS的總和)

2. -x 參數

使用-x參數我們可以獲得更多統計信息。

iostat -d -x -k 1 10 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 1.56 28.31 7.80 31.49 42.51 2.92 21.26 1.46 1.16 0.03 0.79 2.62 10.28 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 2.00 20.00 381.00 7.00 12320.00 216.00 6160.00 108.00 32.31 1.75 4.50 2.17 84.20

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%,因 爲磁盤的併發能力,所以磁盤使用未必就到了瓶頸)。

3. -c 參數

iostat還可以用來獲取cpu部分狀態值:

iostat -c 1 10 avg-cpu: %user %nice %sys %iowait %idle 1.98 0.00 0.35 11.45 86.22 avg-cpu: %user %nice %sys %iowait %idle 1.62 0.00 0.25 34.46 63.67

4. 常見用法

$iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看設備使用率(%util)、響應時間(await) iostat -c 1 10 #查看cpu狀態

5. 實例分析

$$iostat -d -k 1 |grep sda10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda10 60.72 18.95 71.53 395637647 1493241908 sda10 299.02 4266.67 129.41 4352 132 sda10 483.84 4589.90 4117.17 4544 4076 sda10 218.00 3360.00 100.00 3360 100 sda10 546.00 8784.00 124.00 8784 124 sda10 827.00 13232.00 136.00 13232 136

上面看到,磁盤每秒傳輸次數平均約400;每秒磁盤讀取約5MB,寫入約1MB。

iostat -d -x -k 1 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29 sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25 sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24

可以看到磁盤的平均響應時間<5ms,磁盤使用率>80。磁盤響應正常,但是已經很繁忙了。


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