Linux mit 256 GByte mem / 48-Kernen - Die Maschine fängt an, mit tonnenweise verbleibendem Speicher zu würgen

12

Maschine: Dell r815, CentOS 5.4, 256 GB RAM, 4 x 12 Kerne.

Wir haben eine Anwendung, die eine 275 GB-Datei hat. Es sortiert 20 GB Daten gleichzeitig an Ort und Stelle, dh es tauscht Bits aus und ersetzt sie in derselben Datei. Das alles funktioniert gut.

Es gibt einen letzten Durchgang, der dann die gesamte Datei durchliest und eine Zusammenführungssortierung für die verschiedenen 20-GB-Blöcke durchführt und diese in eine ganz neue Datei ausgibt.

Dieser Prozess scheint für eine Weile in Ordnung zu sein und es landet bei etwa 50 GB auf der Festplatte. Irgendwann danach geht die GANZE Maschine aus.

Einfache Befehle wie " ps -ef," ls -alhängen lange und belegen 100% der CPU (das ist nur ein Kern).

Wenn topich mir die Speicherstatistiken ansehe, sehe ich, dass sie ungefähr 120 GB RAM (also 128 GB frei) belegen und 120 GB im Bereich "zwischengespeichert" haben.

Hat jemand diese Art von Verhalten schon einmal gesehen? Der gleiche Prozess läuft gut auf einem Computer mit 64 GB Arbeitsspeicher. Ich denke also, dass er mit dem RAM-Speicher zusammenhängt, den ich auf dem Computer habe.

(Während wir sprechen, führe ich den Test auf diesem Computer mit allen bis auf 64 GB durch, um ein Hardwareproblem auszuschließen.)

Vermisse ich vielleicht ein paar vm params /etc/sysctrl.conf?

Vielen Dank!

Aspitzer
quelle
Was machen die Festplatten? Gehst du in die Hölle?
Arenstar
64-Bit-Kernel / App / etc? Sie erwähnten 100% CPU, was ist der Lastdurchschnitt, wenn es passiert, es ist die App Multithreaded (es wird nicht alle Prozessoren verwenden, wenn nicht), was Vmstat 4 Ihnen sagt (Io / CPU speziell)
Coredump
dies wie "ps" sind 100% CPU ist aus 4800% (weil 48 Kerne) - also sind die am wahrscheinlichsten durch io oder etwas blockiert. die durchschnittliche Auslastung auf dem Feld ist nur wie 5. die Scheiben, die Festkörper sind nicht viel schreibt ... Es scheint so , eher ein Kernel Problem dann Ressourcen zu sehen
aspitzer
Die Maschine tauscht überhaupt nicht.
Aspitzer
1
Ja, es läuft jetzt mit 64GB. sollte innerhalb einer Stunde wissen, ob es auf die Gesamtmenge von mem in der Maschine bezogen
Aspitzer

Antworten:

12

Ihre Frage hat mich an etwas erinnert, das ich kürzlich gelesen habe:

http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/

Hier wird erläutert, wie sich NUMA-Architekturen (wie sie beispielsweise in einem 48-Kern-AMD-System vorkommen) auf die Speicherzuweisung und das Auslagern auswirken. Ich weiß nicht, ob es das ist, worauf Sie stoßen, aber es klang hinreichend ähnlich, so dass es vielleicht eine Lektüre wert ist.

Auch wenn es nicht die Antwort ist, macht es faszinierend zu lesen.

larsks
quelle
1
Das scheint ein würdiger Versuch zu sein, das Problem dieser Frage zu lösen. Und es ist eine fantastische Lektüre.
Coredump
1
Das ist eine großartige Lektüre und 4 Sockel, 256 GB RAM = 64 GB pro Knoten, und das scheint der Punkt zu sein, an dem Sie Probleme haben, was die Situation im Dokument genau wiedergibt.
Mark Henderson
12

Dies schien also ein Kernel-Fehler in 64-Bit-Centos 5.4 und 64-Bit-Fedora 14 zu sein. Nachdem ich Centos 5.5 installiert hatte, war das Problem behoben.

Entschuldigung, ich habe keine bessere Antwort für alle ...

Aspitzer
quelle
1
Hey Mann, wenn es das ist, was es repariert, ist es das, was es repariert. Gib dir das Häkchen, damit andere aus deinen Schwierigkeiten lernen können :-)
mfinni
0

Sie können versuchen, eine Zeile zu /etc/sysctl.conf hinzuzufügen, um anzugeben, dass Swap nur verwendet werden soll, wenn dies unbedingt erforderlich ist.

swappiness = 0

Möglicherweise wissen Sie bereits, dass diese Datei globale Einstellungen definiert. Daher müssen Sie die Auswirkungen dieser Änderung auf die übrigen in der Umgebung ausgeführten Anwendungen berücksichtigen.

NginUS
quelle
das ist schon eingestellt ... aber wie gesagt, es sind 128GB frei - es gibt also keine Swap-Probleme.
Aspitzer
0

Wo ist dein temporärer Raum? Oft ist es auf tempfs. Tempfs bezieht Speicherplatz aus dem durch Swap-Speicher gesicherten Speicher. Wenn Sie also zu viel Material in tempfs haben, wird Swap-I / O ausgelöst.

Angesichts der Größe der Daten, die Sie zusammenführen, würde ich eine Änderung erwarten, wenn Sie die endgültige Zusammenführung durchführen.

Das Verteilen Ihres Swap-Speichers auf mehrere Festplatten kann hilfreich sein.

BillThor
quelle
0

Während Sie möglicherweise nicht Swap treffen, können Sie immer noch I / O-gebunden sein. Das ls info legt dies nahe.

Ich würde auf die Ausgabe von schauen dstat -df, um Festplattenstatistiken dstat -afanzuzeigen , oder (ja, es wird eine Milliarde Spalten breit sein; dies passiert, wenn Sie 48 Kerne haben und die CPU-Auslastung auf allen zeigen), wenn Sie alles sehen möchten.

Ich wäre überrascht, wenn alle CPUs ausgelastet wären (Zusammenführungssortierung ist keine CPU-intensive Aufgabe), aber Sie sagen nichts über Ihr E / A-System. Wenn Sie nur wenige Datenträger und eine Reihe von Dateien haben, können Sie die Datenträger zerschlagen, indem Sie nach Dateien suchen, um die Zusammenführungssortierung aufrechtzuerhalten.

Slartibartfast
quelle