Linux - Datenträger als RAM verwenden

443
assafmo

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

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

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

Warum hat es aufgehört zu wachsen?

Ich vermute, die Langsamkeit ist darauf zurückzuführen, dass es sich um einen Swap-Bereich handelt, daher ist das Betriebssystem damit beschäftigt, "zu tauschen" (load -> nicht genügend Platz -> entscheidet, was ausgetauscht werden soll ...).

Ich suche nach einer Möglichkeit, "mehr Speicher hinzuzufügen", aber das Betriebssystem als normalen Speicher behandeln zu lassen. Oder ist meine Swap-Konfiguration möglicherweise falsch?

Ich weiß, dass es der Leistung schaden wird, aber es ist akzeptabel für mich.

Die VM ist CentOS 6.

0
"Ich muss es auf einem Standard-Laptop laufen lassen." Selbst wenn Sie das Programm starten könnten, ist eine In-Memory-Datenbank nicht für die Langsamkeit des Festplattenzugriffs ausgelegt. Sie könnten genauso gut das Programm mit Stift und Papier von Hand ausführen, und es wäre wahrscheinlich schneller. Daniel B vor 6 Jahren 2
Wenn es keinen Unterschied zwischen Swap- und Real-RAM gäbe, hätten alle unsere Systeme einen sehr kleinen RAM. Wenn Sie die Geschwindigkeit von echtem RAM benötigen, benötigen Sie echtes RAM. xenoid vor 6 Jahren 1

1 Antwort auf die Frage

0
codykochmann

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

Ich habe dieses Tutorial bei centos.org gefunden, das ziemlich sauber dargelegt hat, 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 sie mit 1024, um die Anzahl der Blöcke zu bestimmen. Beispielsweise beträgt die Blockgröße einer 64 MB-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 Befehl ein:

mkswap /swapfile

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

swapon /swapfile

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

/swapfile swap swap defaults 0 0

Beim nächsten Systemstart aktiviert das System die neue Auslagerungsdatei.

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

Vielleicht möchten Sie Details dazu hinzufügen, wie dies für alle gemacht wird, die nicht wissen, wie sie es tun sollen. Ramhound vor 6 Jahren 0
Dies war eine saubere Ressource, wie man es im Grunde tun kann. https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-swap-creating-file.html codykochmann vor 6 Jahren 0
Ich mag dieses Tutorial jedoch ein bisschen mehr, weil es darin enthalten ist, wie Sie Ihre Berechtigungen verwalten können. Https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-6 codykochmann vor 6 Jahren 0
@Ramhound Es ist ein 64-Bit-System. Vielen Dank. assafmo vor 6 Jahren 0
@codykochmann Das Material sollte sich im Antwortkörper befinden. Ein Tutorial auf einer anderen Website tut uns nicht gut Ramhound vor 6 Jahren 0
@assafmo Auch wenn der * Prozessor * 64bit ist, bedeutet dies nicht, dass das Dateisystem vorhanden ist. Beispielsweise ist [FAT32] (https://en.wikipedia.org/wiki/File_Allocation_Table#FAT32) auf 4 GB-Dateien beschränkt. FAT16 und FAT12 sind noch schlimmer. jpaugh vor 6 Jahren 1
Ich habe das vergessen. :) codykochmann vor 6 Jahren 0