2012-12-24 37 views
13

我想知道如何監視哪個進程取出所有I/O帶寬。我知道的唯一命令是gstat,但它顯示累積信息。是否有任何工具可用於檢查正在運行的進程以瞭解其I/O使用情況?該系統是FreeBSD 8.3。使用重磁盤I/O尋找過程

+0

http://serverfault.com/questions/169676/howto-check-disk-i-o-utilisation-per-process –

+0

@確信只是說它是相關的; - )但是,百分之99的谷歌將在這裏爲Linux下載:-) –

回答

14

iotop是你想要的。大多數Linux發行版都有一個包。

+0

但是FreeBSD並沒有(至少不是在端口上)。我認爲'iotop'使用Linux的/ proc,它在FreeBSD上與*不相同。 – tjameson

+0

我不知道爲什麼這個upvoted這麼多,並接受,當工具甚至不存在freebsd? – eis

0

根據快速調研,網絡分析:您可以使用lsof -isockstat(http://www.freebsd.org/cgi/man.cgi?query=sockstat & sektion = 1),以確定插座由特定進程打開,那麼您可以使用tcpdump來檢查該連接的詳細信息(http://www.thegeekstuff.com/2010/08/tcpdump-command-examples/#more-5676)。您也可以嘗試trafshowiftop

對於磁盤I/O:在Linux上我使用sar -q,必須有類似的東西。

$ ktrace -ti -p PID 

務必閱讀manual for ktrace讓你知道如何使用前禁用的ktrace:

+0

是不是網絡連接,而不是磁盤I/O? – eis

+0

我沒有網絡問題,只有高I/O的磁盤(從gstat看) –

+0

我的不好,我看到「帶寬」在你的問題,並感到困惑。這裏有一篇有趣的文章:http://www.bsdnewsletter.com/bsda-book/Monitor_disk_input--output.html,希望它有幫助。 – theMarceloR

1

,如果你想跟蹤單個進程可以使用的ktrace。例如:

$ ktrace -p PID -f debug.txt 
$ ktrace -C 
$ kdump -f debug.txt 

kdump,因爲輸出不是人類可讀的。

+0

是的,我知道ktrace,但它不顯示每個請求的權重。 –

+0

等,體重?那麼像WireShark或Fiddler這樣的一些包嗅探程序怎麼樣? – theMarceloR

+0

不,網絡沒有問題。我的意思是磁盤通道帶寬的百分比 –

6

的答案是使用「頂」然後點擊「M」顯示每個進程/線程IO個

+9

'top'是什麼版本?在我的'米'切換內存使用情況摘要。 –

+1

@DanielKitachewsky - 適用於我的FreeBSD:'$ top -v'給出'top:version 3.5beta12'。 FreeBSD *不會使用與大多數Linux distrubitions不同的功能。在我的Linux機器上,'m'像您提到的那樣切換內存使用情況。 – tjameson

+1

按內存百分比嘗試「shift + m」。 'shift + p'代表cpu和'shift + t'的時間 –