web-dev-qa-db-ja.com

FreeBSDでディスクI / Oが重いプロセスを見つける

どのプロセスがすべてのI/O帯域幅を奪っているかをどのように監視できるのでしょうか。私が知っている唯一のコマンドはgstatですが、累積的な情報が表示されます。実行中のプロセスのI/O使用状況を検査するために使用できるツールはありますか?システムはFreeBSD 8.3です。

15
Sergey Efimov

iotop は必要なものです。ほとんどのLinuxディストリビューションには、そのためのパッケージがあります。

12
Jude

答えはtopを使用してヒットすることです m 表示するIOプロセス/スレッドごとのパーセンテージ。

9
Sergey Efimov

単一のプロセスをトレースする場合は、ktraceを使用できます。

$ ktrace -ti -p PID

ktraceのマニュアル を読んで、使用する前にktraceを無効にする方法を理解してください。何かのようなもの:

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

kdump、出力は人間が読める形式ではないため。

2
eis

簡単な調査によると、ネットワーク分析では、lsof -iまたはsockstat(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、似たようなものがあるはずです。

0
theMarceloR