Linux läuft langsam, 0 Swap übrig

Linux läuft langsam, 0 Swap übrig

Unser Linux-Server reagiert sehr langsam. topEr zeigt keine übermäßige CPU-Auslastung. Mir ist aufgefallen, dass das System, obwohl etwa 5 GB freier Speicher vorhanden sind, den gesamten Swap-Speicher nutzt und kein freier Swap-Speicher mehr übrig ist. Könnte dies der Grund dafür sein, dass das System langsam läuft? Gibt es eine andere Lösung als die Reduzierung der Anzahl der Prozesse?

Zweitens: Warum führt Linux bereits Swapping durch, obwohl freier Speicher verfügbar ist? Ich dachte, Swap wird nur verwendet, wenn kein tatsächlicher Speicher mehr vorhanden ist.

free -m
             total       used       free     shared    buffers     cached
Mem:         32045      26218       5826          0        127        123
-/+ buffers/cache:      25967       6077
Swap:        16387      16387          0

Aktualisieren:

  • Swapiness ist auf Standardniveau: 60
  • Ich glaube nicht, dass es ein Numa-System ist
  • Ich sehe ein paar Java-Prozesse, die mit einem 8 GB großen Heap laufen:-Xms8000m -Xmx8000m

Scheint auf den ersten Blick verrückt, aber möglicherweise hatte jemand Gründe, dies zu tun. Ich denke, das ist es, was den größten Teil des Swaps auffrisst, aber ich muss weiter untersuchen, wie sich der Java-Heap auf den Linux-Swap und den Speicher/die Leistung im Allgemeinen auswirkt. Alle Hinweise zu den Auswirkungen der obigen Java-Heap-Konfiguration auf die Systemleistung sind wirklich hilfreich.

Antwort1

Wie viele Java-Prozesse wurden mit dem 8-GB-Heap initialisiert? Vielleicht sollten Sie das Maximum bei 8 belassen und die anfängliche Heap-Größe verringern. Wenn Sie über den Speicherplatz verfügen, können Sie auch mit der Erhöhung der Swap-Größe experimentieren.

Antwort2

Haben Sie tmpfsMounts? Diese werden durch Swap gesichert und können der Grund dafür sein, dass kein Swap-Speicherplatz verfügbar ist. Tut syslogoder dmesgzeigt etwas Unerwartetes? Sind Sie sicher, dass Ihr System nicht ständig Swaps durchführt? Überprüfen vmstat -SK 1und verifizieren Sie die Spalten siund so(ein- und ausgelagerte Seiten in KB/s). Wenn Sie wissen müssen, welche Prozesse Swaps durchführen, führen Sie aus sudo iotop -od5. Wenn Sie Ubuntu verwenden, benötigen Sie delayacctdas Kernel-Flag für vollständige Statistiken. Mir scheint, Ihr System hat für einen so großen Systemspeicher wirklich wenig Cache und Puffer.

Der Swap wird verwendet, um die Gesamtsystemleistung zu verbessern. Ein Beispiel hierfür wäre, Teile eines großen Programms, das gerade schläft, auszulagern, um mehr Speicher für den Festplattencache oder Dateipuffer verwenden zu können. Wenn Sie in diesem Fall den Swap deaktivieren würden, hätte das System effektiv einen kleineren Festplattencache und kleinere Dateipuffer. Da Ihr Swap-Speicher voll ist, könnten Sie tatsächlich unter demselben Problem leiden.

Der Swap-Speicher ist besonders wichtig, wenn Sie Programme haben, die Speicher „verlieren“ (d. h. ein Programm belegt Speicherblöcke, die nicht wirklich verwendet werden). Ein solches „Verlust“ muss kein Fehler im Programm sein, sondern nur, weil der Speicher so selten verwendet wird, dass er besser als verlorener Speicher behandelt werden kann. Ohne Swap-Speicher kann ein solcher verlorener Speicher nicht als Cache oder Puffer verwendet werden.

Ein ordnungsgemäß laufendes Betriebssystem mit virtuellem Speicher verwendet den Swap-Speicher praktisch immer, es sei denn, der gesamte Arbeitssatz (alle aufgerufenen Dateien, der gesamte von Anwendungen reservierte Speicher und alle Schreibpuffer) passt für die gesamte Laufzeit des Systems vollständig in den Speicher. In den meisten Fällen trifft dies nur zu, wenn das System ständig neu gestartet wird oder wenn das System im Vergleich zur gesamten Dateisystemgröße über eine riesige Menge an RAM verfügt.

verwandte Informationen