Warum ist die CPU-Auslastung hauptsächlich bei E/A-Vorgängen so hoch?

Warum ist die CPU-Auslastung hauptsächlich bei E/A-Vorgängen so hoch?

Ich habe einen Prozess, der Binärdateien in das Ext3-Dateisystem schreibt.

Ich würde annehmen, dass dies ein ziemlich einfacher Prozess für die CPU sein sollte, aber ich sehe eine CPU-Auslastung von 45 % des Systems. Es ist ein Server mit 40 Kernen und 80 Threads und es gibt ein RAID 1+0-Array mit 16 Festplatten.

Es gibt 100 Threads, die gleichzeitig IO ausführen. Ist es normal, dass fast die Hälfte der System-CPU genutzt wird? Gibt es eine Möglichkeit zu analysieren, warum so viel CPU genutzt wird?

Die Benutzer-CPU liegt bei etwa 10–15 %.

Der Vorgang läuft folgendermaßen ab: Wir lesen einige Daten aus einer Datei, prüfen, ob die Daten in der Datenbank sind, und schreiben die Daten dann in Dateien. Die Datenbank befindet sich auf einem anderen Rechner, die Protokollierung erfolgt ebenfalls auf einem anderen Rechner. Was passiert, ist, dass wir prüfen, ob die Datei bereits vorhanden ist. Normalerweise ist sie nicht vorhanden. Also erstellen wir eine neue Datei und schreiben einige Daten hinein.

hier ist, was ich sehe mit

iostat -xkt 1

03/07/2014 01:06:28 PM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.14    0.00   43.24    0.01    0.00   40.60

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00   166.00    0.00   69.00     0.00   940.00    27.25     0.02    0.23   0.17   1.20
sda               0.00   322.00    1.00  598.00   128.00  3680.00    12.71     0.07    0.12   0.09   5.50
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-3              0.00     0.00    0.00  235.00     0.00   940.00     8.00     0.06    0.26   0.05   1.10
dm-4              0.00     0.00    1.00  920.00   128.00  3680.00     8.27     0.10    0.11   0.06   5.40

Antwort1

Die Lastdurchschnittsberechnung von Linux und einige Lastmonitore (oben) zeigen „io-wait“ als Last an.

Wenn die CPU auf das E/A-Gerät wartet (und keine andere Last verarbeitet), gilt sie grundsätzlich immer noch als „ausgelastet“ und trägt daher zur durchschnittlichen Auslastung bei.

verwandte Informationen