REDHAT環境下使用SYSSTAT監控系統效能

dayong2015發表於2014-09-12
IOSTAT
iostat 命令主要透過觀察物理磁碟的活動時間以及她們的平均傳輸速度,監控系統輸入 / 輸出裝置負載。根據 iostat 命令生成的報告,使用者可確定系統配置是否平衡,並據此在物理磁碟與介面卡之間更好地平衡輸入 / 輸出負載。iostat 工具的主要目的是透過監控磁碟的利用率,而探量觀測到系統中的 I/O 瓶頸。

1.命令格式
iostat[引數][時間][次數]
2.命令功能
透過iostat方便檢視CPU、網路卡、tty裝置、磁碟、CD-ROM 等等裝置的活動情況, 負載資訊。
3.命令引數
-C 顯示CPU使用情況     -d 顯示磁碟使用情況       -k 以 KB 為單位顯示       -m 以 M 為單位顯示     -N 顯示磁碟陣列(LVM) 資訊
-n 顯示NFS 使用情況    -p[磁碟] 顯示磁碟和分割槽的情況     -t 顯示終端和CPU的資訊    -x 顯示詳細資訊       -V 顯示版本資訊
4.在linux作業系統上安裝sysstat
[root@rac1 Server]# rpm -ivh sysstat-7.0.2-3.el5.x86_64.rpm
warning: sysstat-7.0.2-3.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:sysstat                ########################################### [100%]
5.使用示例
示例1:顯示所有裝置的負載情況

批註:cpu屬性值說明:
%user:CPU處在使用者模式下的時間百分比。
%nice:CPU處在帶NICE值的使用者模式下的時間百分比。
%system:CPU處在系統模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程式維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
%idle:CPU空閒時間百分比。
說明:
如果%iowait的值過高,表示硬碟存在I/O瓶頸,%idle值高,表示CPU較空閒,如果%idle值高但系統響應慢時,有可能是CPU等待分配記憶體,此時應加大記憶體容量。%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
示例2:定時顯示所有資訊

批註:每隔3秒重新整理一次,一共顯示2次。
示例3:以KB為單位顯示系統資訊

批註:kB_read/s:每秒從裝置(drive expressed)讀取的資料量;kB_wrtn/s:每秒向裝置(drive expressed)寫入的資料量;
          kB_read:讀取的總資料量;kB_wrtn:寫入的總數量資料量;
示例4:檢視裝置使用率(%util)、響應時間(await)

批註:引數解釋
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 = (r/s+w/s) * (svctm/1000)
對於上面的示例有:%util=1.53%=(r/s+w/s) * (svctm/1000)=(0.78+1.65)*(6.32/1000)
裝置IO操作:總IO(io)/s = r/s(讀) +w/s(寫) =0.78+1.65=2.43

MPSTAT

mpstat 是Multiprocessor Statistics的縮寫,是實時系統監控工具。在多CPUs系統裡,其不但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。
1.命令語法
Usage: mpstat [ options... ] [ [ ] ]
Options are:
[ -P { | ALL } ] [ -V ]
引數的含義如下:
-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次取樣的間隔時間
count 取樣的次數,count只能和delay一起使用
當沒有引數時,mpstat則顯示系統啟動以後所有資訊的平均值。有interval時,第一行的資訊自系統啟動以來的平均資訊。
從第二行開始,輸出為前一個interval時間段的平均資訊。 
引數解釋 從/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時間前的值。上表中的所有值可取到兩位小數點。
2.使用示例
示例1:使用mpstat不帶引數,顯示從系統啟動以來的平均值

示例2:每2秒產生了2個處理器的統計資料包告
下面的命令可以每2秒產生了2個處理器的統計資料包告,一共產生三個interval 的資訊,然後再給出這三個interval的平均資訊。預設時,輸出是按照CPU 號排序。第一個行給出了從系統引導以來的所有活躍資料。接下來每行對應一個處理器的活躍狀態。

批註:以上輸出列值含義解析
%user 表示處理使用者程式所使用 CPU 的百分比。使用者程式是用於應用程式(如 Oracle 資料庫)的非核心程式,在本示例輸出中,使用者 CPU 百分比非常低。 
%nice  表示使用 nice 命令對程式進行降級時 CPU 的百分比。在之前的部分中已經對 nice 命令進行了介紹。簡單來說,nice 命令更改程式的優先順序。   
%system表示核心程式使用的 CPU 百分比    
%iowait表示等待進行 I/O 所使用的 CPU 時間百分比    
%irq 表示用於處理系統中斷的 CPU 百分比    
%soft  表示用於軟體中斷的 CPU 百分比    
%idle 顯示 CPU 的空閒時間  
%intr/s  顯示每秒 CPU 接收的中斷總數 

備註:由於本臺機器為測試機,所以CPU基本沒有負載。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29634949/viewspace-1268642/,如需轉載,請註明出處,否則將追究法律責任。

相關文章