Raspberry PI
Unter Linux ist es möglich zram als swap Speicher einzuschalten.
Der Vorteil ist dabei, dass kein Swapfile mehr auf die SD Karte zugreift und somit die Lebenszeit dieser Karte verkürzt.
Mit folgendem Befehl kann das zram eingeschaltet werden:
modprobe zram
Mit folgendem Befehl kann überprüft werden ob das Modul erfolgrei geladen werden konnte:
lsmod | grep zram
Die Ausgabe sieht dann z.B. so aus:
zram 9338 1
zsmalloc 8107 1 zram
lzo_compress 2179 1 zram
lzo_decompress 2372 1 zram
Zum Starten währendes Bootvorgangs benötigt man noch ein init Skript
/etc/init.d/zram:
#!/bin/bash
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)
# Description: Adapted from systemd scripts at https://github.com/mystilleef/FedoraZram
### END INIT INFO
start() {
# get the number of CPUs
num_cpus=$(grep -c Processor /proc/cpuinfo)
# if something goes wrong, assume we have 1
[ "$num_cpus" != 0 ] || num_cpus=1
# set decremented number of CPUs
decr_num_cpus=$((num_cpus - 1))
sleep 2
# get the amount of memory in the machine
mem_total_kb=$(grep MemTotal /proc/meminfo | grep -E --only-matching '[[:digit:]]+')
mem_total=$((mem_total_kb * 1024))
# load dependency modules
#modprobe zram zram_num_devices=$num_cpus
modprobe zram
# initialize the devices
for i in $(seq 0 $decr_num_cpus); do
echo $((mem_total / num_cpus)) > /sys/block/zram$i/disksize
done
# Creating swap filesystems
for i in $(seq 0 $decr_num_cpus); do
mkswap /dev/zram$i
done
# Switch the swaps on
for i in $(seq 0 $decr_num_cpus); do
swapon -p 100 /dev/zram$i
done
}
stop() {
# get the number of CPUs
num_cpus=$(grep -c Processor /proc/cpuinfo)
# set decremented number of CPUs
decr_num_cpus=$((num_cpus - 1))
# Switching off swap
for i in $(seq 0 $decr_num_cpus); do
if [ "$(grep /dev/zram$i /proc/swaps)" != "" ]; then
swapoff /dev/zram$i
sleep 1
fi
done
sleep 1
rmmod zram
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 3
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
RETVAL=1
esac
Das Skript wir nun noch in die entsprechenden runlevel eingetragen und nach einem Neustart läuft das ZRAM Modul.
sudo update-rc.d zram enable
Schaltet das Zram beim booten ein.
Nun sollte noch das Swapfile abgeschlaten werden.
Dies geht mit folgendem Befehl:
sudo update-rc.d dphys-swapfile disable
Zum überprüfen ob alles geklappt hat, kann man folgendes eingeben:
#swapon -s
Ausgabe:
Filename Type Size Used Priority
/dev/zram0 partition 383748 0 100