Swap 

Swap Speicher auf einem Androiden ist eine umstrittene Angelegenheit. Das System ist so konzipiert, dass es Anwendungen im Speicher hält, bis der Speicher knapp wird - und "räumt" dann im Hintergrund laufende, umgenutzte Anwendung "auf" indem diese beendet werden.
Dies führt zu einem flüssigen System mit schnellen Wechseln zwischen den Anwendungen bis der Speicher knapp wird. Ab dann reagiert das System langsam, da das Beenden der Anwendungen und freigeben des Speichers Zeit kostet. Besonders lästig ist dabei, dass es keinen Gewöhnungseffekt gibt (wie: das "schließen" von Programm xyz dauert immer lange), sondern die Wartezeiten sich daraus ergeben, welche Anwendung das System im Hintergrund gerade als "schließbar" empfindet.
Es gibt daher auch Programme um das Speicherverhalten des Systems zu beeinflussen, siehe z.B. hier.

Eine andere Variante ist mit Swap-Speicher dafür zu Sorgen, dass Programme in den Swap verschoben werden, statt geschlossen zu werden.
Als Swap-Speicher kann dabei eine SD-Karte verwendet werden. Eine schnelle (!) SD-Karte würde ich generell - für verschiedene Anwednungen - immer in dem Gerät lassen.
Die kritische Frage ist dabei, was länger dauert: Das beenden des Programms und bei Bedarf ggf. neu starten oder das Verschieben und wieder lesen aus dem Swap.
Ich persönlich bin mit einem "defensiven" Swapping sehr zufrieden, defensiv meint, dass der Swap-Speicher erst wenn es gar nicht anders geht benutzt wird.

Zum Einrichten: Root-Zugriff und Autostart-Scripts erforderlich.

Nach Einlegen der SD-Karte auf dieser mittels

adb shell
dd if=/dev/zero of=/sdcard/swap.img bs=1024 count=262144

ein swap-image anlegen. bs*count ergibt die Größe in byte, das o.g. Beispiel entspricht 256MB.

Dann weiter in der adb-shell mit

busybox mkswap /sdcard/swap.img

ein Swap-System in das Image erstellen und mit

echo 10 >/proc/sys/vm/swappiness

die Swap-Verhalten sehr zurückhaltend einstellen (0..100, Standard: 60), bei 100 wird quasi immer geswapped, auch wenn es nicht nötig ist.

dann mittels

busybox swapon /sdcard/swap.img

in der adb-shell den Swap aktiviren - das wars.

Mittels

busybox free

kann man in der adb-shell sehen, ob und wie der Swap-Speicher genutzt wird.

Damit nach einem Neustart des Geräts wieder automatisch Swap genutzt wird, müssen die Befehle:


echo 10 >/proc/sys/vm/swappiness
busybox swapon /sdcard/swap.img

in die autostart.sh abgelegt werden - Details siehe unter Autostart.

Wer möchte, kann anstelle einer Image-Datei die SD-Karte auch partitionieren (parted, fdisk, am einfachsten vor dem Einlegen in das Gerät über einen Kartenleser) und eine eigene Swap-Partition einrichten - das verspricht nochmal etwas mehr Geschwindigkeit.

Achtung! Bei aktiviertem Swap darf die SD-Karte nicht mehr aus dem Gerät entfernt werden solange es läuft!

[ 1 Kommentar ] ( 360 views ) permalink