Warum wird beim meist IO-Betrieb viel CPU-Auslastung benötigt?

1197
Roman Goyenko

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

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

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

Die CPU des Benutzers liegt bei 10-15%.

Der Vorgang ist wie folgt: Wir lesen einige Daten aus einer Datei, überprüfen, ob die Daten in DB sind, und schreiben dann die Daten in Dateien. Db ist auf einer anderen Maschine, die Protokollierung erfolgt auch auf einer anderen Maschine. Was passiert ist, überprüfen wir, ob die Datei bereits vorhanden ist. Normalerweise ist sie nicht vorhanden. Daher erstellen wir eine neue Datei und schreiben Daten in diese Datei.

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 
1
Sie müssten den Code als Benchmark verwenden. Ramhound vor 10 Jahren 0
Dies ist nicht mein Code, daher kann ich nicht viel dagegen tun. Roman Goyenko vor 10 Jahren 0
Wenn Sie den Code nicht vergleichen können, können Sie die Ursache für die CPU-Auslastung nicht ermitteln. Ramhound vor 10 Jahren 0
Woher kommen die "Binärdateien"? Hardware- oder Software-RAID? Irgendwelche anderen Aktivitäten auf der Maschine? vonbrand vor 10 Jahren 0
Ich habe am Ende weitere Informationen hinzugefügt. Es ist Hardware-RAID. Wir protokollieren etwas bei diff. Dateisystem und es gibt auch Datenbank auf verschiedenen Computern Roman Goyenko vor 10 Jahren 0

1 Antwort auf die Frage

0
KJ4IPS

Die durchschnittliche Lastverteilung von Linux und einige Lastmonitore (oben) zeigen io-wait als Last an.

Grundsätzlich gilt: Wenn die CPU auf dem IO-Device wartet (und keine andere Last verarbeitet), wird sie immer noch als "geladen" betrachtet und trägt daher zu Durchschnittswerten bei.

Ich habe iostat -xkt 1 verwendet, um die Statistiken zu erhalten, und fügte die Ergebnisse der Frage hinzu. Es gibt sehr wenig Iowait Roman Goyenko vor 10 Jahren 1