Cuando se trata de máquinas pequeñas, con recursos de memoria RAM escasos, normalmente tenemos notorios problemas de rendimiento cuando nos quedamos sin memoria física (RAM) y damos uso al área de disco SWAP.

No vamos a profundizar a estas alturas del partido en lo lento que puede ser un disco duro tradicional en comparación a la RAM para nuestros sistemas. En esta ocasión le daremos una oportunidad al módulo de Kernel ZRAM, el cual nos permite utilizar un espacio de la RAM como área de intercambio comprimido en la misma memoria.

compcache

Lo interesante de esta funcionalidad es que nuestro pequeño sistema, e incluso unos no tan pequeños, pueden ver incrementado su rendimiento general al privilegiar el intercambio en RAM por sobre el área de intercambio en disco.

A continuación, un script de configuración, extraído de la wiki de debian. Lo creamos y guardamos como /etc/init.d/zram

#!/bin/sh
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description: Use compressed RAM as in-memory swap
### END INIT INFO

# Author: Antonio Galea
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization
# Distributed under the GPL version 3 or above, see terms at
# https://gnu.org/licenses/gpl-3.0.txt

FRACTION=75

MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo` CPUS=`grep -c processor /proc/cpuinfo` SIZE=$(( MEMORY * FRACTION / 100 / CPUS )) case "$1" in "start") param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '` modprobe zram $param=$CPUS for n in `seq $CPUS`; do i=$((n - 1)) echo $SIZE > /sys/block/zram$i/disksize
mkswap /dev/zram$i
swapon /dev/zram$i -p 10
done
;;
"stop")
for n in `seq $CPUS`; do
i=$((n - 1))
swapoff /dev/zram$i && echo "disabled disk $n of $CPUS" &
done
wait
sleep .5
modprobe -r zram
;;
*)
echo "Usage: `basename $0` (start | stop)"
exit 1
;;
esac

Para activar el arranque del mismo, ejecutamos lo siguiente:

chmod +x /etc/init.d/zram
insserv zram

Con eso deberíamos estar OK.

Leave a Comment