2009-01-28 10 views
88

Wenn ich "top" verwende kann ich sehen, welche CPU beschäftigt ist und welcher Prozess alle meine CPU verwendet.Welcher Prozess verwendet alle meine Festplatte IO

Wenn ich "iostat-x" verwende, kann ich sehen, welches Laufwerk beschäftigt ist.

Aber wie kann ich sehen, welcher Prozess den gesamten Durchsatz des Laufwerks verwendet?

+2

Nun, technisch gilt das auch für Linux, da Benutzerprozesse nur Seiten im Seitencache ändern ...;) – Damon

+0

Nur die Frage, die ich hatte und die Antwort, die ich gesucht habe, passt aber nicht zu dieser Frage besser bei SuperUser? –

+0

Und deshalb ist Linux Solaris und MacOS unterlegen, weil sie Dtrace eingebaut haben, das macht es trivial einfach herauszufinden: -/ –

Antwort

134

Sie suchen nach iotop (vorausgesetzt, Sie haben Kernel> 2.6.20 und Python 2.5). Wenn Sie das nicht tun, suchen Sie nach dem Dateisystem. Ich empfehle das ehemalige.

+0

http://articles.slicehost.com/2010/11/12/using-iotop-to-check-io-and-swap –

+1

"iotop" scheint die E/A-Bandbreite anzuzeigen und nicht die Anzahl der IOPS, die verbraucht werden Prozesse. Das ist nicht besonders relevant. Ein Prozess, bei dem viele kleine Schreibvorgänge und Synchronisierungsvorgänge ausgeführt werden, verbraucht mehr E/A-Kapazität der Festplatte als ein Prozess, der große zusammenhängende Datenmengen mit hoher Geschwindigkeit schreibt. – arnaud576875

0

Haben Sie in Betracht gezogen lsof (offene Dateien auflisten)?

+2

das zeigt nur offene Datei-Handles, nicht MB/s für jede Datei. Iotop macht das. – oligofren

9

, die im Zustand 'D' verarbeitet Um herauszufinden, (für Disk-Antwort wartet) laufen derzeit:

while true; do date; ps aux | awk '{if($8=="D") print $0;}'; sleep 1; done

oder

watch -n1 -d "ps axu | awk '{if (\$8==\"D\") {print \$0}}'"

Wed Aug 29 13:00:46 CLT 2012 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:00:47 CLT 2012 
Wed Aug 29 13:00:48 CLT 2012 
Wed Aug 29 13:00:49 CLT 2012 
Wed Aug 29 13:00:50 CLT 2012 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:00:51 CLT 2012 
Wed Aug 29 13:00:52 CLT 2012 
Wed Aug 29 13:00:53 CLT 2012 
Wed Aug 29 13:00:55 CLT 2012 
Wed Aug 29 13:00:56 CLT 2012 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:00:57 CLT 2012 
root  302 0.0 0.0  0  0 ?  D May28 3:07 \_ [kdmflush] 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:00:58 CLT 2012 
root  302 0.0 0.0  0  0 ?  D May28 3:07 \_ [kdmflush] 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:00:59 CLT 2012 
root  302 0.0 0.0  0  0 ?  D May28 3:07 \_ [kdmflush] 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:01:00 CLT 2012 
root  302 0.0 0.0  0  0 ?  D May28 3:07 \_ [kdmflush] 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:01:01 CLT 2012 
root  302 0.0 0.0  0  0 ?  D May28 3:07 \_ [kdmflush] 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 
Wed Aug 29 13:01:02 CLT 2012 
Wed Aug 29 13:01:03 CLT 2012 
root  321 0.0 0.0  0  0 ?  D May28 4:25 \_ [jbd2/dm-0-8] 

Wie Sie sehen können Aus dem Ergebnis blockieren der jdb2/dm-0-8 (ext4 journal process) und kdmflush ständig Ihr Linux.

Weitere Details dieser URL könnte hilfreich sein: Linux Wait-IO Problem

+1

funktioniert nicht für mich RHEL5.5 Bash 3.2.25 (1) -Release –

1

Für KDE-Benutzer können Sie ‚ctrl-esc‘ verwenden rufen oben ein System actrivity Monitor und es gibt E/A-Aktivitäten Diagramme mit Prozess-ID und Name.

Ich habe keine Berechtigung zum Hochladen von Bildern, aufgrund eines neuen Benutzerstatus, aber Sie können das Bild unten sehen. Es hat eine Spalte für IO lesen und schreiben.

6

atop funktioniert auch gut und lässt sich leicht installieren auch auf älteren CentOS 5.x-Systeme, die iotop nicht ausgeführt werden können. Klicken Sie auf d, um Details zur Festplatte anzuzeigen, ?, um Hilfe zu erhalten.

ATOP - mybox       2014/09/08 15:26:00       ------       10s elapsed 
PRC | sys 0.33s | user 1.08s |    | #proc 161 | #zombie 0 | clones 31 |    | #exit   16 | 
CPU | sys 4% | user  11% | irq  0% | idle 306% | wait  79% |    | steal  1% | guest  0% | 
cpu | sys 2% | user  8% | irq  0% | idle  11% | cpu000 w 78% |    | steal  0% | guest  0% | 
cpu | sys 1% | user  1% | irq  0% | idle  98% | cpu001 w 0% |    | steal  0% | guest  0% | 
cpu | sys 1% | user  1% | irq  0% | idle  99% | cpu003 w 0% |    | steal  0% | guest  0% | 
cpu | sys 0% | user  1% | irq  0% | idle  99% | cpu002 w 0% |    | steal  0% | guest  0% | 
CPL | avg1 2.09 | avg5 2.09 | avg15 2.09 |    | csw 54184 | intr 33581 |    | numcpu  4 | 
MEM | tot  8.0G | free 81.9M | cache 2.9G | dirty 0.8M | buff 174.7M | slab 305.0M |    |    | 
SWP | tot  2.0G | free 2.0G |    |    |    |    | vmcom 8.4G | vmlim 6.0G | 
LVM | Group00-root | busy  85% | read  0 | write 30658 | KiB/w  4 | MBr/s 0.00 | MBw/s 11.98 | avio 0.28 ms | 
DSK |   xvdb | busy  85% | read  0 | write 23706 | KiB/w  5 | MBr/s 0.00 | MBw/s 11.97 | avio 0.36 ms | 
NET | transport | tcpi 2705 | tcpo 2008 | udpi  36 | udpo  43 | tcpao  14 | tcppo  45 | tcprs  1 | 
NET | network  | ipi  2788 | ipo  2072 | ipfrw  0 | deliv 2768 |    | icmpi  7 | icmpo  20 | 
NET | eth0 ---- | pcki 2344 | pcko 1623 | si 1455 Kbps | so 781 Kbps | erri  0 | erro  0 | drpo  0 | 
NET | lo  ---- | pcki  423 | pcko  423 | si 88 Kbps | so 88 Kbps | erri   0 | erro  0 | drpo  0 | 
NET | eth1 ---- | pcki 22 | pcko  26 | si 3 Kbps | so 5 Kbps | erri  0 | erro  0 | drpo  0 | 

    PID     RDDSK     WRDSK     WCANCL     DSK     CMD  1/1 
9862      0K     53124K      0K     98%     java 
    358      0K      636K      0K      1%     jbd2/dm-0-8 
13893      0K      192K      72K      0%     java 
1699      0K      60K      0K      0%     syslogd 
4668      0K      24K      0K      0%     zabbix_agentd 

Dies zeigt deutlich, java pid 9862 der Schuldige ist.

2

TL; DR

Wenn Sie iotop verwenden können, tun dies. Sonst könnte das helfen.


Verwenden top, dann diese Verknüpfungen verwenden:

d 1 = set refresh time from 3 to 1 second 

1 = show stats for each cpu, not cumulated 

Diese Werte zeigen muss > 1.0 wa für mindestens einen Kern - wenn es keine diskwaits sind, gibt es einfach keine IO-Last und keine Notwendigkeit, Schau weiter. Signifikante Lasten starten normalerweise > 15.0 wa.

x  = highlight current sort column 
<and> = change sort column 
R  = reverse sort order 

Wählen Sie "S", die Prozessstatusspalte.Kehren Sie die Sortierreihenfolge um, sodass die Prozesse "R" (running) oben angezeigt werden. Wenn Sie "D" -Prozesse erkennen können (Warten auf die Festplatte), haben Sie einen Hinweis darauf, was Ihr Schuldiger sein könnte.

Verwandte Themen