2012-12-24 2 views
13

Ich frage mich, wie ich überwachen kann, welcher Prozess alle meine I/O Bandbreite ausnimmt. Der einzige Befehl, den ich kenne, ist gstat, aber es zeigt kumulative Informationen. Gibt es irgendwelche Werkzeuge, die ich verwenden kann, um die laufenden Prozesse für ihre E/A-Nutzung zu überprüfen? Das System ist FreeBSD 8.3.Finding Prozess mit schweren Festplatte I/O

+0

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

+1

@ CiroSantilli709 Dies ist eine Linux-Frage. Allerdings ist dies besser geeignet: https://serverfault.com/questions/460634/identify-which-process-is-responsible-for-heavy-disk-io-under-freebsd – eis

+0

@eis sicher nur sagen, es ist verwandt; -) 99 Prozent der Googler werden hier allerdings unter Linux fallen :-) –

Antwort

14

iotop ist, was Sie verwenden möchten. Die meisten Linux-Distributionen haben ein Paket dafür.

+0

Aber FreeBSD nicht (zumindest nicht in Ports). Ich denke, "iotop" verwendet Linux/proc, das ist nicht das gleiche auf FreeBSD. – tjameson

+0

Ich frage mich, warum ist das so viel aufgewertet und akzeptiert, wenn das Tool nicht einmal auf freebsd existiert? – eis

0

Nach einer schnellen Forschung, für Netzwerkanalyse: können Sie entweder lsof -i oder sockstat (http://www.freebsd.org/cgi/man.cgi?query=sockstat & Sektion = 1), um die Buchsen zu identifizieren geöffnet von bestimmten Prozessen, dann können Sie tcpdump verwenden, um die Details dieser Verbindung zu überprüfen (http://www.thegeekstuff.com/2010/08/tcpdump-command-examples/#more-5676). Sie können auch versuchen, trafshow und iftop.

Für Disk I/O: unter Linux verwende ich sar -q, da muss etwas ähnliches sein.

+0

ist das nicht für Netzwerkverbindungen und nicht für Festplatten-I/O? – eis

+0

Ich habe kein Problem mit dem Netzwerk, nur mit hohem I/O der Festplatte (von gstat aus gesehen) –

+0

Mein schlechtes, sah ich "Bandbreite" in Ihrer Frage und wurde verwirrt. Hier ist ein interessanter Artikel: http://www.bsdnewsletter.com/bsda-book/Monitor_disk_input--output.html, hoffe es hilft. – theMarceloR

1

können Sie ktrace verwenden, wenn Sie einen einzelnen Prozess verfolgen möchten:

$ ktrace -ti -p PID 

Do lesen Sie die manual for ktrace so wissen Sie, wie ktrace zu deaktivieren, bevor Sie. Etwas wie:

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

kdump, da der Ausgang nicht menschlich lesbar ist.

+0

Ja, ich weiß über Ktrace, aber es zeigt nicht das Gewicht jeder Anfrage. –

+0

Warte, das Gewicht? Wie wäre es also mit einigen Packet-Sniffing-Programmen wie WireShark oder Fiddler? – theMarceloR

+0

Nein, es gibt kein Problem mit dem Netzwerk. Das Gewicht, das ich meine% der Disk-Kanalbandbreite –

6

die Antwort ist ‚top‘ dann klicken Sie auf ‚m‘ anzuzeigen IO Prozentsatz pro Prozess/Thread

+9

In welcher Version von 'top' ist das? Auf meinem 'm' schaltet die Zusammenfassung der Speicherauslastung um. –

+1

@DanielKitachewsky - Funktioniert auf meinem FreeBSD: '$ top -v' gibt' top: version 3.5beta12'. FreeBSD * verwendet * einen anderen Top als die meisten Linux-Distributionen. Auf meinen Linux-Boxen schaltet 'm' die Speicherbelegung wie bereits erwähnt um. – tjameson

+1

Versuchen Sie 'shift + m', um nach Speicherprozentsatz zu schließen. 'shift + p' für CPU und' shift + t' für Zeit –