三、一些擴充套件
參考資料
當我們要看系統io情況時,一般最先想到的應該就是iostat命令的。iostat提供了豐富的引數給我們查詢各種維度的io資料。學習iostat有助於我們排查io相關問題時可以更快的定位到問題根源。
以下內容大多來自iostat的man文件,會加上部分自己的理解,英文水平好的同學也可以直接看man文件命令使用:
iostat [ -c ] [ -d ] [ -n ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -v ] [ -x ] [ -y ] [ -z ] [ -j [ device [...] | all ] ] [ device [...] | all ] [ -p [ device [,...] | all ] ] [ interval [ count ] ]
看著有點亂,我們可以歸納為:
iostat [-引數] [指定磁碟] [採集週期頻率] [採集次數]
比如iostat -k sda 5 2
表示採集sda磁碟上的相關資訊,每5秒採集一次,一共採集2次。-k引數表示以kb來顯示。
引數詳解
-c只顯示cpu相關統計資訊(預設是同時顯示cpu和磁碟資訊)
-d只顯示磁碟統計資訊(預設是同時顯示cpu和磁碟資訊)
-h使用nfs的輸出報告更加友好可讀。nfs通過-n來開啟
-j 磁碟列表的device列要用什麼維度來描述磁碟
-k預設情況下,iostat的輸出是以block作為計量單位,加上這個引數可以以kb作為計量單位顯示。(該引數僅在linux核心版本2.4以後資料才是準確的)
-m預設情況下,iostat的輸出是以block作為計量單位,加上這個引數可以以mb作為計量單位顯示。(該引數僅在linux核心版本2.4以後資料才是準確的)
-n顯示磁碟陣列(lvm) 資訊
-n顯示nfs相關統計資料(network filesystem)。但是這個引數只在linux核心版本2.6.17之後有用
-p [ ]
顯示磁碟分割槽的相關統計資訊(預設粒度只到磁碟,沒有顯示具體的邏輯分割槽)
-t每次輸出報告時顯示系統時間,
-v顯示當前iostat的版本資訊
-x顯示更詳細的磁碟報告資訊,預設只顯示六列,加上該引數後會顯示更詳細的資訊。這個引數也需要在核心版本2.4之後才能使用
-y跳過不顯示第一次報告的資料,因為iostat使用的是取樣統計,所以iostat的第一次輸出的資料是自系統啟動以來累計的資料
-z只顯示在取樣週期內有活動的磁碟
通過uname -a可以檢視當前linux系統的核心版本。2.4版本後乙個block的大小通常是512byte
預設情況下,第一次的輸出資訊的資料是從作業系統啟動以來的累計資料,第二次開始才是真正的取樣週期內的真實資料,這點和top命令很像。我們可以加上-y來過濾掉第一次的輸出資訊。iostat的輸出資訊主要可以分為3大部分:
cpu部分的統計資訊
磁碟相關的統計資訊
nfs(network filesystem)相關的統計資訊
預設情況下,iostat只會顯示cpu和磁碟部分的統計資訊。如下圖:
加上-n可以顯示nfs的統計資訊。由於本人在多個系統上測試均沒有具體的數值輸出,因此下面只介紹cpu和磁碟部分的統計資訊。
這裡的cpu統計資訊只是取平均值,如果是多核cpu,想看每核cpu的具體統計資訊,可以使用top命令。
下面的百分比計算一般採用公式:消耗時間*100.0/取樣時間
iowait可以作為磁碟是否是系統瓶頸的參考值,但並不能全信。iowait表示的含義是cpu沒在工作而在等待io的時間佔比,在cpu高速運轉的情況下也會出現iowait高的情況,這並不能表明磁碟效能就有問題。唯一能說明磁碟效能差的應該是根據磁碟的read/write時間,一般來說,一次讀寫就是一次尋道+一次旋轉延遲+資料傳輸的時間。現代硬碟資料傳輸就是幾微秒或者幾十微秒的事情,遠遠小於尋道時間220ms和旋轉延遲48ms,所以只計算這兩個時間就差不多了,也就是15~20ms。如果磁碟讀寫時間大於20ms,就要考慮是否是磁碟讀寫太多,導致磁碟效能降低了。在沒加
-x
引數時,預設輸出以下六列:
如果加了-x
引數,會詳細更加詳細的資料,如下圖:
網上許多部落格都說用svctm可以衡量磁碟的效能,但是在iostat的man文件中有提到,讓我們不要相信這個列的輸出值,並且在後面的版本中會去除這個統計項。比如 iostat -x 的資料則來自於 /proc/diskstats檔案下的資料。另外,各種linux發行版的proc虛擬檔案系統實現可能會有偏差,因此iostat輸出的內容也可能不太一致。所以要統計磁碟效能,綜合來說還是用await列的資訊來判斷。一般的磁碟讀寫效能在20ms左右,如果await比這個數值大很多,就說明當前系統存在很大的io問題。
iostat命令詳解
它的特點是匯報磁碟活動統計情況,同時也會匯報出cpu使用情況。同vmstat一樣,iostat也有乙個弱點,就是它不能對某個程序進行深入分析,僅對系統的整體情況進行分析。iostat屬於sysstat軟體包。可以用yum install sysstat 直接安裝。命令格式 iostat 引數 時間 ...
linux效能分析 iostat
iostat iostat命令是另乙個研究磁碟吞吐量的工具。和sar類似,iostat可以使用間隔和計數引數。第乙個間隔的輸出包含linux總執行時間的指標。與其他效能命令比較,這可能是iostat最獨特的功能。例如,以下是乙個大部分時間處於空閒的系統的輸出。可見,從啟動以來hda裝置已經讀取大約9...
Linux效能監控 iostat
root wallet01 yuminstall ysysstat root wallet01 iostat help usage iostat options optionsare c d n n h k m t v x y z j all all p all c顯示cpu使用情況 d顯示磁碟使用...