Afin d’optimiser les performances d’Elementary OS, Sergey Davidoff  notre propose un script répondant au nom zram-enabler activant un ou n disque ZRAM, de la SWAP compressée en RAM.


Le projet compcache existe depuis quelques temps et même certaines distributions l’utilisent comme Ubuntu ou PCLinux sur ses live-CD. Avant de procéder à l’installation de ce script, je vous en propose une petite analyse qui initialise un ou n disques ZRAM au démarrage de votre machine :

Analyse de zramswap-enabler

Le code source :

description "Initializes zram swapping"
 
start on runlevel [2345]
stop on runlevel [!2345]
 
pre-start script
 
# 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))
 
# 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 num_devices=$num_cpus
 
# 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
end script
 
post-stop script
 
# 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
fi
done
 
rmmod zram
end script

En premier zram-enabler récupère le nombre de core de votre cpu en comptant le nombre de ligne contenant le mot processor se trouvant dans le fichier /proc/cpuinfo.

La taille des disques se calculant ainsi :

$((mem_total / num_cpus))

taille_disque_zram = ram_totale / nombre de core

Le nombre de disque étant égal ou nombre de core

decr_num_cpus=$((num_cpus - 1))
<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">Donc prenons la config de mon inspiron duo avec un processeur Intel Atom N570 double coeur et ces 2 Go de RAM qui pourrait en avoir besoin : nous aurons deux disques de 1 Go.</span>

Pour un netbook équipé d’un processeur N455 avec 1 Go de RAM  simple coeur : 1 disque zram de 1Go

En clair toute la ram est compressée et tout cela passe par le CPU, du coup l’autonomie risque d’en prendre un coup : http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html ou http://mygeekopinions.blogspot.com/2011/10/boost-system-performance-ram.html

Conclusion

Si votre machine est un netbook équipé d’un processeur simple coeur passez votre chemin.

Par contre si vous voulez réellement utiliser un disque ZRAM sur votre netbook, utiliser plutôt le script fourni sur weirdfellow.wordpress.com, en l’adaptant à votre configuration Pour la taille totale compter entre 15% à 25% de la taille totale de votre RAM.

De plus une machine ne swap que si elle n’a presque plus de mémoire RAM disponible. Pour les machines avec 4 Go à moins de faire de la retouche photo, du montage vidéo ou du calcul de rendu, normalement votre machine ne swapera pas.

Il serait tout de même intéressant de faire des tests avec l’outil Phoronix Suite. Je vais  tenter de le faire.

Pour les plus pressés vous pouvez vous lancer dans l’analyse de performance de votre systeme

Installation de ZRAM

Si vous avez une machine équipé d’un proceseur avec plus de 2 cores vous pouvez toujours installer ce script :

Sur Ubuntu il suffit de d’installer le package suivant depuis le dépot PPA de Sergey

sudo add-apt-repository ppa:shnatsel/zram
sudo apt-get update
sudo apt-get install zramswap-enabler

Sur Fedora

il suffit de suivre ce lien : mystilleef.blogspot.com