Gründe für eine hohe Auslastung

15

Ich versuche herauszufinden, warum kjournaldmeine Maschine verrückt wird. Es ist eine 8-Kern-Box mit viel Speicher. Es hat ~ 50% CPU-Auslastung.

Das iotop scheint nicht auf bestimmte Prozesse zu verweisen - einige Schreibvorgänge hier und da (meistens Cron-Start, einige generierte Überwachungsstatistiken usw.). Als ich sys/vm/block_dumpdie Schreibstatistiken sammelte, erhielt ich Listen wie diese:

kjournald(1352): 1909
sendmail(28934): 13
cron(28910): 12
cron(28912): 11
munin-node(29015): 3
cron(28913): 3
check_asterisk_(28917): 3
sh(28917): 2
munin-node(29022): 2
munin-node(29021): 2

Wo kjournaldAktionen nur SCHREIBEN sind.

Warum passiert das? Worauf sollte ich noch achten, um die kjournald-Aktivität etwas einzuschränken? Es scheint unverhältnismäßig zu dem, was tatsächlich geschrieben wird.

viraptor
quelle
Welches Betriebssystem verwenden Sie. Kannst du die uname Informationen posten.
Soham Chakraborty
Ich hatte genau das gleiche Problem
Sharen Eayrs

Antworten:

15

kjournaldist verantwortlich für das Journal von ext3 (Journaling Filesystem). Es ist bekannt, dass unter bestimmten Belastungen viel CPU verbraucht wird. Es gibt nicht viel zu tun, außer ein anderes Dateisystem zu verwenden oder das Journaling zu deaktivieren (effektiv die fs ext2 zu machen).

Theoretisch können Sie einen der anderen Modi für ext3-Journaling verwenden und prüfen, ob die CPU-Auslastung sinkt. Beachten Sie jedoch, dass jede Methode einen Kompromiss für die Sicherheit der auf die Festplatte geschriebenen Daten darstellt. Sie haben den Modus "Bestellen", "Zurückschreiben" und "Alles" gewählt.

  1. Geordnet: Nur Journal-Metadaten, stellt jedoch sicher, dass Daten zu Metadaten gespeichert werden, bevor die Metadatenänderungen in das Journal übernommen werden.
  2. Rückschreiben: Nur Journal-Metadaten, aber keine Garantie dafür, dass die Daten vor dem Festschreiben des Journals gespeichert werden.
  3. journal: alles wird aufgezeichnet, Daten und Metadaten. Es kann langsam sein, aber YMMV.

Sie stellen den Modus mit der Option ein, data=wenn Sie das System einbinden, wie z data=ordered.

Core-Dump
quelle
Es hat keinen Sinn, den Journalmodus zu ändern, obwohl er vollständig ausgeschaltet ist, aber es hat noch weniger Sinn. Es macht also keinen Sinn zu beschreiben, was Journaloptionen bewirken.
Poige
3
Verschiedene Journalmodi weisen unterschiedliche CPU-Verhaltensweisen auf. Einige Tests hier .
Coredump
1
@coredump, immer noch sinnlos . Es gibt keine Grafiken, die die CPU-Auslastung für verschiedene Journalmodi zeigen, nur den Durchsatz. Das CPU-Auslastungsdiagramm zeigt tatsächlich nur Unterschiede zwischen FSes. Berücksichtigt man auch einen deutlichen Unterschied zwischen EXT3 und Reiser3 in diesem Diagramm, ist es klar, dass der gesamte und der durchschnittliche CPU-Fußabdruck analysiert werden.
Poige
Wir werden dann zustimmen, nicht zuzustimmen. Nur Tests in seiner Umgebung werden zeigen, dass es einen Unterschied gibt oder nicht in Bezug auf die CPU-Auslastung. Auch ReiserFS würde ich nicht empfehlen, da die Regierung eine permanente Sperre für den FS-Autor hat :).
Coredump
8
Hier, nimm diese Tasse Humor: \
coredump
4

Standardmäßig wird Ihr ext3-Dateisystem zeitweise aktiviert. Jedes Mal, wenn eine Datei oder ein Verzeichnis gelesen oder darauf zugegriffen wird, muss das Dateisystem auf die Festplatten zurückschreiben, um diesen Zeitdatensatz zu aktualisieren. Dies bedeutet, dass Sie auch dann, wenn Ihre Arbeitsauslastung größtenteils auf Lesezugriff basiert, die Datenträger durchsuchen müssen, um die Zugriffszeiten für die einzelnen Dateien und Verzeichnisse zu aktualisieren. Dies ist meine Vermutung, warum Ihr kjournaldProzess so viele Blöcke geschrieben hat.

Wenn Sie atime's deaktivieren, wird die Leistung erheblich gesteigert, die POSIX-Konformität wird jedoch verletzt. In diesem Wikipedia-Artikel wird die Kritik von atime diskutiert.

Zum Deaktivieren fügen Sie einfach noatimedie Mount-Optionen für Ihr Dateisystem hinzu, oder Sie können erneut mounten, wie von poige vorgeschlagen. Hier ist ein Beispiel für Ihr Root-Dateisystem:

mount -o remount,noatime /
Evan Borgstrom
quelle
3
Beachten Sie, dass neuere Kernel standardmäßig relatimeeinen akzeptablen Kompromiss zwischen noatimeund darstellen atime.
Oliver
1

Wenn die Richtigkeit der Daten nicht wichtig ist: Tun Sie dies

iostat -o -a

Stellen Sie sicher, dass es wirklich kjournald ist. Es ist das, was meinen Server zum Absturz bringt.

Das Wechseln der Festplatte zu SSD würde funktionieren.

Wenn Sie sehen, wie kjournald 5-10 MB Daten schreibt, tun Sie dies

http://ubuntuforums.org/showthread.php?t=56621

sudo tune2fs -O ^has_journal /dev/sda1
sudo e2fsck /dev/sda1

Wobei sda1 der Name Ihrer Partition ist

Ergebnis im Kommentar melden, damit ich es weiter überprüfen kann.

Sharen Eayrs
quelle
3
Du meinst iotop, nicht iostat, oder?
Joe Niland
0

Nicht in der Reihenfolge zu tun, nur um zu erwähnen:

  1. mount -oremount,noatime /fs/being_over/journaled- als schnelle Vermutung (du hast uns mountsowieso nicht gezeigt, wie du aussiehst)
  2. Versuchen Sie, die Journalgröße zu reduzieren ( tune2fs -J …)
  3. Wechseln Sie zu Reiser3 (robust für eine ziemlich lange Zeit, ja. Und noch nie so ein böses Journaling.)
Poige
quelle