1、vmstat
剛啟動不久,即使採集增量報告,第一行的值還是顯示自系統啟動以來的平均值,第二行開始展示現在正在發生的情況。
procs
r這列一列顯示了多個進程在等待CPU,b列顯示多少進程在這不可中斷的休眠(通常意味著它們在等待I/O,例如磁碟、網路、使用者輸入等)。
memory
swpd列顯示多少塊被切換出到了磁碟(頁面交換)。剩下的三個列顯示了多少塊是閒置(未被使用)、多少塊正誒用作緩衝,以及多少正在被作業系統的緩衝。
swap
這些列顯示頁面交換活動:每秒有多少塊正在被換入(從磁碟)和換出(到磁碟)。他們比健康swpd列重要多了。大部分時間我們喜歡看到si和so的列是0,並且我們明確不希望看到沒秒超過10個塊。突發性的高峰一樣很糟糕。
io
這些列顯示了多少塊從塊裝置讀取(bi)和寫出(bo)。這通常反應了磁碟I/O。
system
這些列顯示了沒秒中斷(in)和環境切換(cs)的數量。
cpu
這些列顯示所有的CPU時間花費在各類操作的百分比,包括執行使用者代碼(非核心)、執行系統代碼(核心)、空閑,已經等待I/O。如果正在使用虛擬化,則第五個列可能是st,顯示從虛擬機器中“偷走”的百分比。這關係到那些虛擬機器想運行但是系統管理程式轉而運行其他的對象的時間。如果虛擬機器不希望運行任何對象,但是系統管理程式運行了其他對象這不算被偷走的CPU時間。
vmstat的輸出跟系統有關,具體查看vmstat(8)。一個重要的提示是:記憶體、交換區,已經I/O系統是塊數而不是位元組,在GNU/Linux,塊大小通常是1024位元組。
2、iostat
與vmstat一樣,第一行報告顯示的是自系統啟動以來的平均中。
rrqm/s和wrqm/s
每秒合并的讀和寫請求。“合并的”意味著作業系統從隊列中拿出多少個邏輯請求合并為一個請求到實際磁碟。
r/s和w/s
每秒發送到裝置的讀和寫請求。
rsec/s和wsec/s
每秒讀和寫的扇區數。遊戲系統也輸出為rkB/s和wkB/s,意為每秒讀寫的KB數。
avgrq-sz
每請求的扇區數。
avgqu-sz
在裝置隊列中等待的請求數。
await
磁碟隊列上花費的毫秒數,但是沒有獨立統計讀和寫的請求。
svctm
服務要求花費的毫秒數,不包括排隊時間。
%util
至少有一個活躍請求所佔用時間的百分比。如果熟悉隊列理論中利用率的標準定,那麼這個命令很莫名其妙。它其實不是塊裝置的利用率。超過一塊磁碟的裝置(例如raid控制器)比一塊硬碟的裝置可以支援更高的並非。但是%util從來不會超過100%,除非在技術時有四捨五入的錯誤。因此,這個指標無法真實反映裝置的利用率,實際上跟文檔說的相反、除非只有一塊物理磁碟的特殊例子。
可以用iostat的輸出推斷某些關於機器I/O子系統的實際情況。一個重要的度量標準司請求服務的並發數。因為讀寫的單位是每秒而服務時間的單位是千分之一秒,所有可以利用利特爾法則(Littler’s Law)得到下面的公式,計算出裝置服務的並發請求:
concurrency = (r/s + w/s)* (svctm/1000)