web-dev-qa-db-fra.com

Comment activer en permanence le swap compressé? Quelle version utiliser?

EDIT: Plus précisément, il y a maintenant zram-config. Il s'agit d'un travail rapide qui comprime jusqu'à la moitié de votre RAM répartie sur des périphériques swap $ (nombre de cœurs de processeur). Cela n'a pas toujours commencé au démarrage mais émettre Sudo service zram-config start fonctionne.

J'ai activé compcache = "256 M" dans /etc/initramfs-tools/initramfs.conf comme décrit ici (par moi: P). Ceci - je crois - crée /dev/ramzswap0 mais il n’est jamais activé en tant que swap. Cela fonctionne seulement après mkswap && swapon.

Ensuite, il y a le module zram qui crée /dev/zram. Est-ce autre chose? Cela fonctionne de la même manière mais /dev/ramzswap est créé à partir du module ramzswap.

À la fin de la journée, je souhaite utiliser un échange compressé et utiliser le meilleur des deux. Pour ce faire, je dois savoir comment l'activer de manière permanente, de manière non fictive. Comment est-ce fait?

J'ai écrit à propos de ramzswap dans Lucid ici mais les choses ont changé dans Natty. Vous pouvez toujours activer ramzswap dans initramfs.conf mais il n'est pas activé.

P.S.: J’ai analysé toutes les règles udev dans/lib et/etc mais je n’ai rien trouvé d’intéressant.

11
turbo

Il existe maintenant un PPA qui installe un script Upstart approprié pour activer zram au démarrage. Il choisit la taille et le nombre corrects de périphériques d'échange compressés pour votre système.

https://launchpad.net/~shnatsel/+archive/zram

2
Ryan Thompson

Je me débattais avec le même problème.

Aujourd'hui, j'ai trouvé un excellent article de blog à ce sujet. http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/

Bien que "Sudo start zramswap" ne fonctionne pas, lorsque j'ai redémarré mon PC, mon problème a été résolu parfaitement.

L'essayer.

2
Shunsuke Watanabe

Voici la solution bon marché. Ajoutez la ligne suivante à /etc/rc.local, avant le exit 0:

find /dev/ -maxdepth 1 -name 'ramzswap*' | while read dev; do
    mkswap $dev
    swapon -p 1000 $dev
done
1
Ryan Thompson

Directement du wiki Debian. Pour moi, c'est le plus facile.

Tout d’abord, copiez et collez ce code dans /etc/init.d/zram

### 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 <[email protected]>
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization

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

Ensuite, exécutez ces deux commandes:

Sudo chmod +x /etc/init.d/zram
Sudo /etc/init.d/zram start

Enfin, pour ajouter zram au démarrage:

Sudo update-rc.d zram defaults

Terminé.

1
mchid