Linux - Festplatte als RAM verwenden

Linux - Festplatte als RAM verwenden

Ich habe eine VM und darin einen Prozess, der viel Speicher verbraucht (~200 GB). Eine Art In-Memory-DB. Ich muss sie auf einem Standard-Laptop ausführen und kann sie nicht neu kompilieren oder den Code sehen.

Ich habe 256 GB Swap-Speicherplatz mit pri=32767 in /etc/fstab und vm.swappiness=100 in /etc/sysctl.conf hinzugefügt, aber die Datenbank wird einfach nicht schnell genug geladen (bleibt nach 24 Stunden bei 4 GB hängen; scheint nicht mehr zu wachsen).

(EDIT: Ich habe die Maschine geklont, den RAM von 256 GB auf 4 GB geändert, eine Festplatte hinzugefügt, sie als ext4 formatiert und eine Auslagerungsdatei mit einer Größe von 256 GB erstellt (dd -> mkswap -> swapon...))

Warum hat es aufgehört zu wachsen?

Ich vermute, dass die Langsamkeit dadurch verursacht wird, dass es sich um einen Swap-Speicherplatz handelt und das Betriebssystem daher mit dem „Auslagern“ beschäftigt ist (Last -> nicht genug Platz -> Entscheidung, was ausgelagert werden soll …).

Ich suche nach einer Möglichkeit, „mehr Speicher hinzuzufügen“, das Betriebssystem ihn aber wie normalen Speicher behandeln zu lassen. Oder ist meine Swap-Konfiguration vielleicht falsch?

Ich weiß, dass die Leistung dadurch beeinträchtigt wird, aber für mich ist es akzeptabel.

Die VM ist CentOS 6.

Antwort1

Haben Sie mehrere Auslagerungsdateien ausprobiert? 4 GB klingt, als ob Sie die Dateigrößenbeschränkung für ein 32-Bit-System erreichen.

Dieses Tutorial fand ich untercentos.orgin dem ziemlich klar dargelegt wurde, wie man Auslagerungsdateien manuell erstellt.

So fügen Sie eine Auslagerungsdatei hinzu:

  1. Bestimmen Sie die Größe der neuen Auslagerungsdatei in Megabyte und multiplizieren Sie diese mit 1024, um die Anzahl der Blöcke zu ermitteln. Beispielsweise beträgt die Blockgröße einer 64 MB großen Auslagerungsdatei 65536.
  2. Geben Sie an einer Shell-Eingabeaufforderung als Root den folgenden Befehl ein, wobei count der gewünschten Blockgröße entspricht:

dd if=/dev/zero of=/swapfile bs=1024 count=65536

  1. Richten Sie die Auslagerungsdatei mit dem folgenden Befehl ein:

mkswap /swapfile

  1. So aktivieren Sie die Auslagerungsdatei sofort, jedoch nicht automatisch beim Booten:

swapon /swapfile

  1. Um es beim Booten zu aktivieren, bearbeiten Sie /etc/fstab, um den folgenden Eintrag einzufügen:

/swapfile swap swap defaults 0 0

Beim nächsten Systemstart wird die neue Auslagerungsdatei aktiviert.

Nachdem Sie die neue Auslagerungsdatei hinzugefügt und aktiviert haben, überprüfen Sie, ob sie aktiviert ist, indem Sie die Ausgabe des Befehls cat /proc/swapsoder anzeigen free.

Antwort2

Ich habe es schließlich geschafft, die Daten in eine SQLite-Datenbank zu konvertieren, und schriebhttps://github.com/assafmo/SQLiteQueryServerum aus der Ferne darauf zugreifen zu können. Es funktionierte einwandfrei und war superschnell.

verwandte Informationen