Kategorieauswahl

Translator

Google +1

Bitte teilen Sie Google mit, wenn Ihnen diese Seite gefällt.

RAM

Speicher sparen in der Powershell

Die Powershell von Windows startet für jedes eingegebene Kommando einen eigenen Thread, was jeweils extra Speicher kostet, aber auch für etwas mehr Stabilität und Skalierbarkeit sorgt. Das ist also eigentlich auch gut so. Auf Systemen wo der RAM Speicher aber knapp ist, will man aufwendige Scripts vielleicht etwas RAM schonender ausführen. Dazu sollten Sie in die erste Zeile Ihres ps1 Scriptes folgenden Befehl schreiben:
$Host.Runspace.ThreadOptions="ReuseThread"

Selbstverständlich können Sie den Befehl auch direkt in der Powershell eintippen, um bei nachfolgenden Befehlen immer wieder denselben Thread zu nutzen.

Eine weitere Möglichkeit den RAM-Speicher zu schonen ist nicht mehr benötigte Variablen wieder frei zugeben. Hat man also Beispielsweise eine Variable
$Variable="blabla"
erstellt und benötigt diese nicht mehr, dann löscht man nur den Inhalt der Variablen, wenn Sie $Variable="" eintragen. Der Speicher und die Variable an sich bleiben aber weiterhin erhalten. Erst ein rv Variable (dieses Mal ohne $ Zeichen!) gibt den Namen der Variablen und den Speicherplatz wieder frei.

Linux und Swap

So lange Linux im RAM arbeiten kann sind auch virtuelle Computer z.B. mit VMware super schnell im Vergleich zu Hyper-V. Sobald allerdings geswappt werden muss kann es zu einer echten Geduldsprobe werden. Eine komprimierte RAM-Disk kann dabei auf Mehrkernsystemen weiter helfen. Alle nachfolgenden Schritte sollten Sie als Benutzer root durchführen.

Installieren Sie dazu zunächst das Paket compcache, falls es noch nicht auf Ihrem PC ist. Bei Ubuntu ist es meistens schon mit an Bord, während bei SuSE (zum installieren auf der Kommandozeile zypper in compcache eintippen) dies in der Regel fehlt.

Jetzt müssen wir nur noch irgendwelche Befehle finden um das Ganze auch nutzen zu können. Die Linux Cracks mögen meine etwas unkonventionelle Beschreibung bitte verzeihen und Verbesserungsvorschläge unterbreiten. Ich habe im Internet keine besseren Anleitungen gefunden. In meinem System sind 4 Kerne und 4 GB RAM. Daher zwacke ich max. 512 MB für RAMdisks ab. Hat man mehrere Kerne sollte für jeden Kerne eine eigene RAMdisk angelegt werden, damit die Kerne sich nicht um den Zugriff auf das Swapdevice prügeln. Mein Vorschlag an dieser Stelle ist, tragen Sie die folgenden Zeilen in Ihre /etc/init.d/boot.local Datei ein:

modprobe ramzswap num_devices=4        # um das Kernelmodul zu laden und ihm klar zu machen, dass 4 Swapdrives angelegt werden
rzscontrol /dev/ramzswap0 -i -d 128000   # legt 128KB für die 1. RAM-Disk zur Seite
rzscontrol /dev/ramzswap1 -i -d 128000   # legt noch einmal 128KB für die 2. RAM-Disk zur Seite
rzscontrol /dev/ramzswap2 -i -d 128000   # …und so weiter…
rzscontrol /dev/ramzswap3 -i -d 128000   # bis ich schliesslich mein 512 MB zusammen habe.
swapon -p -1 /dev/ramzswap0   # hier nachfolgend werden nun die vorbereiteten RAMdisks als Swapdevices mit gleicher Priorität zugewiesen
swapon -p -1 /dev/ramzswap1
swapon -p -1 /dev/ramzswap2
swapon -p -1 /dev/ramzswap3   # bis hier hin.
swapon -p -100 /dev/sda6   # der schaltet noch die Festplattenreserve dazu, wenn mal alle Stricke reissen. Allerdings mit einer Priorität von -100. Das hat zur Folge, dass er erst die RAMdisks verwendet und erst 2. rangig die Festplatte.

Wenn Sie 8 Kerne haben legen Sie eben 8 RAM Disks an und bei mehr Speicher nehmen Sie entsprechend ein Vielfaches des hier angegebenen RAM. Mehr als 15% des RAM-Speichers würde ich aber nicht zuordnen. Sollten Sie Ihre CPUs aber sowieso schon am Anschlag fahren, wird dieser Tipp leider nicht weiterhelfen, da bleibt nur mehr RAM-Speicher einzubauen.

Viel Spaß und Erfolg mit Ihrem schnelleren System!