Come abilitare permanentemente lo scambio di ram compresso? Quale versione usare?


11

EDIT: In preciso c'è adesso zram-config. È un processo di avvio comprimere fino a metà della RAM distribuita su dispositivi di scambio $ (numero di core della CPU). Non è sempre iniziato all'avvio, ma l'emissione sudo service zram-config startfunziona.

Ho abilitato compcache = "256 M" in /etc/initramfs-tools/initramfs.confcome descritto qui (da me: P). Questo, credo, crea /dev/ramzswap0ma non è mai abilitato come swap. Funziona solo dopo mkswap&& swapon.

Quindi c'è il modulo zram che crea /dev/zram. È qualcos'altro? Funziona allo stesso modo ma /dev/ramzswapviene creato dal modulo ramzswap.

Alla fine della giornata voglio avere uno scambio compresso in ram e usare il meglio dei due e per questo ho bisogno di sapere come abilitarlo permanentemente in modo non hacker. Come si fa?

Ho scritto di Ramzswap in Lucido qui, ma le cose sono cambiate in Natty. Puoi ancora abilitare ramzswap in initramfs.conf ma non viene attivato.

PS: Ho scansionato tutte le regole di udev in / lib e / etc ma non ho trovato nulla di interessante.

Risposte:



2

Ero alle prese con lo stesso problema.

Oggi ho trovato un eccellente post sul blog a riguardo. http://weirdfellow.wordpress.com/2011/05/04/compressed-ram-with-zram/

Anche se "sudo start zramswap" non ha funzionato, quando ho riavviato il mio PC ha risolto perfettamente il mio problema.

Provalo.


Questa è in realtà la prima volta che ho anche notato che c'è / etc / init /. Normalmente uso /etc/init.d/ per iniziare cose all'avvio. Affascinante ...
turbo,

/etc/init/è dove vivono gli script di avvio Upstart. Quelli in /etc/init.dsono per lo più solo wrapper di compatibilità che richiamano quelli /etc/init.
Ryan C. Thompson,

1

Ecco la soluzione economica. Aggiungi la seguente riga a /etc/rc.local, prima di exit 0:

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

for i in /dev/ramzswap*;do ...sarebbe la soluzione migliore, penso. Ancora un po 'troppo hacker nel mio libro.
turbo,

Che ne dici find /dev/ -maxdepth 1 -name 'ramzswap*' -print0 | while read -d0 dev; do ... ? Risolverà il problema dello strano nome file con newline al suo interno.
Cbhihe,

@turbo: roba vecchia qui, ma credo che la risposta di Ryan sopra sia in realtà più generale e più sicura dal punto di vista dello scripting rispetto a ciò che proponi nel tuo commento. In generale, yr per loop potrebbe causare problemi ai nomi dei file con spazio e / o caratteri speciali. Detto questo, risparmi un processo al tuo sistema.
Cbhihe,

1

Direttamente dal wiki di Debian. Per me questo è il più semplice.

Innanzitutto, copia e incolla questo codice in /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 <antonio.galea@gmail.com>
# 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

Quindi, esegui questi due comandi:

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

Infine, per aggiungere zram all'avvio:

sudo update-rc.d zram defaults

Fatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.