無論如何,是否可以獲得 iostat -m 的輸出並僅實時添加擴展輸出中的等待列?我知道這個問題聽起來很瘋狂,但我需要能夠即時獲取所有這些列,而無需輸出到文件或運行 iostat 兩次,因為這會產生誤導性的結果。這是centos 6.2 iostat 9.0.4。內核 2.6.36.4。總而言之,我需要這個。
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 0.56 0.00 0.00 324 485
我需要添加等待,所以它看起來像這樣。
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn await
sda 0.56 0.00 0.00 324 485 10.72
我在做夢嗎?我是不是看錯方向了?我需要編譯自己的iostat嗎?
提前致謝。
答案1
我不確定如何獲得iostat
您正在尋找的格式。不過,我用於此類監視的工具可以自訂,以便您可以顯示相關欄位。它也非常適合產生用於重播和繪圖的數據。
我用採集監控(在 CentOS 中可透過 yum 取得),以及磁碟檢查標誌應該給你你需要的東西:
collectl -sD --dskfilt sda
範例輸出(您可以變更列印的單位和列):
collectl -sD --dskfilt sdb
waiting for 1 second sample...
# DISK STATISTICS (/sec)
# <---------reads---------><---------writes---------><--------averages--------> Pct
#Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util
sdb 0 0 0 0 336 0 52 6 6 0 0 0 1
sdb 16 0 1 16 389 1 52 7 7 0 0 0 3
sdb 0 0 0 0 1236 9 109 11 11 0 0 0 0
sdb 16 0 1 16 676 3 140 5 4 0 1 1 14
sdb 0 0 0 0 64 1 16 4 4 0 2 1 2
答案2
為什麼不在 bash 中創建包裝器?
單行版本看起來像:
iostat 1 2 | grep -w sda | tail -1 | awk {'print $7'}
這將運行 iostat 兩次,並傳回 await 的正確值(即第七列)
您可以使用 vmstat 執行相同的操作,方法是將右側欄位傳遞給 awk 以獲得整個 CPU iowait。例如 :
vmstat 1 2 | tail -1 | awk {'print $16'}
請注意,每個 Linux 發行版上的 iostat 和 vmstat 都不同,您必須選擇正確的欄位。
答案3
這似乎應該可以用 munin、石墨等來監控。
編輯:如果您的系統有watch
,您可以將 iostat 設定為自動運行給定(或無限重複)次數,並在運行之間指定指定的間隔! awk
找出您真正想要的欄位!
答案4
如果作者正在尋找即時訊息,重讀最初的問題,我同意 Collectl 是正確的選擇。這就是我寫它的原因。 ;)
如果您想對數據做一些具體的事情,也許我可以幫忙,但我需要了解更多。至於你想要的即時性,你可以選擇任何你喜歡的亞秒監控間隔。
-標記