126 Stimmen

Welcher Prozess verbraucht die gesamte IO meiner Festplatte?

Wenn ich "top" verwende, kann ich sehen, welche CPU ausgelastet ist und welcher Prozess meine gesamte CPU beansprucht.

Wenn ich "iostat -x" verwende, kann ich sehen, welches Laufwerk belegt ist.

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

169voto

phresus Punkte 1986

Sie suchen nach iotop (vorausgesetzt, Sie haben einen Kernel >2.6.20 und Python 2.5). Wenn das nicht der Fall ist, müssen Sie sich in das Dateisystem einklinken. Ich empfehle Ersteres.

22voto

quentinxue Punkte 211

Um herauszufinden, welche Prozesse im Status "D" (Warten auf Antwort von der Festplatte) derzeit laufen:

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 aus dem Ergebnis ersehen können, blockieren jdb2/dm-0-8 (ext4-Journalprozess) und kdmflush ständig Ihr Linux.

Für weitere Details könnte diese URL hilfreich sein: Linux Wait-IO Problem

12voto

Steve Kehlet Punkte 5758

auf funktioniert ebenfalls gut und lässt sich auch auf älteren CentOS 5.x-Systemen, auf denen iotop nicht läuft, problemlos installieren. Hit d um Details zur Festplatte anzuzeigen, ? für Hilfe.

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 eindeutig, dass die Java-Pid 9862 der Übeltäter ist.

6voto

sjas Punkte 16831

TL;DR

Wenn Sie Folgendes verwenden können iotop tun Sie dies. Andernfalls könnte dies helfen.


Utilice top , dann verwenden Sie diese Abkürzungen:

d 1 = set refresh time from 3 to 1 second

1   = show stats for each cpu, not cumulated

Diese muss Werte aufweisen > 1.0 wa für mindestens einen Kern - wenn es keine Diskwaits gibt, gibt es einfach keine IO-Last und keine Notwendigkeit, weiter zu suchen. Signifikante Belastungen beginnen normalerweise > 15.0 wa .

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

Wählen Sie 'S', die Spalte für den Prozessstatus. Kehren Sie die Sortierreihenfolge um, so dass die "R"-Prozesse (laufende Prozesse) ganz oben angezeigt werden. Wenn Sie "D"-Prozesse (auf die Festplatte wartend) erkennen können, haben Sie einen Anhaltspunkt dafür, was der Übeltäter sein könnte.

5voto

Chris Godwin Punkte 109

Iotop mit der Option -a:

-a, --accumulated     show accumulated I/O instead of bandwidth

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X