Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
how-to:zram-in-slackware [2014/07/24 00:07]
Giuseppe Di Terlizzi
how-to:zram-in-slackware [2016/03/18 11:17] (current)
Giuseppe Di Terlizzi
Line 1: Line 1:
-====== Utilizzare zram su Slackware ======+====== zram su Slackware ======
  
-Questo articolo spiega come abilitare ed utilizzare ''zram'' in Slackware.+{{:news:slackware-logo.png?50 |}}Questo articolo spiega come abilitare ed utilizzare ''zram'' in Slackware-current (e 14.2). 
 + 
 +La vecchia guida per la -current pre //quasi-beta// è presente [[how-to:zram-in-slackware?rev=1406279492|qui]].
  
 ===== Cos'è zram ===== ===== Cos'è zram =====
-''zram'' è un modulo del Kernel Linux che permette di creare un area di **swap** compressa, direttamente nella RAM. Questo modulo nato in seno agli sviluppatori Android permette e promette a dispositivi con poca RAM (PC, netbook, notebook, smartphone, etc.) di aumentare le performance generali del sistema. Avendo la **swap** in RAM permette ai dispositivi che usano memorie //flash// (es. //sdcard//, //{mini,micro}sd//) di non scrivere su di essa. In questo modo la vita della memoria //flash// si allunga. 
  
-===== Installiamo zram =====+''zram'' (conosciuto in precedenza anche come ''compcache'') è un modulo del Kernel Linux che permette di creare un area di **swap** compressa, direttamente nella RAM. Questo modulo permette a dispositivi con poca RAM (es. vecchi PC, netbook, notebook, smartphone, sistemi embedded, etc.) di aumentare le performance generali del sistema. Inoltre avendo la **swap** in RAM permette ai dispositivi che usano memorie di tipo //flash// (es. //sdcard//, //{mini,micro}sd//) di non **swappare** su di essa. In questo modo la vita della memoria //flash// si allunga notevolmente in quanto non ci saranno cicli di lettura/scrittura. 
 + 
 +Il modulo è presente sin dalla versione 3.2 del Kernel Linux ed stato diverso tempo in //staging// ma dalla versione 3.14 del Kernel Linux è in //mainline//
 + 
 + 
 +===== Carichiamo zram ===== 
 + 
 +Per caricare all'avvio zram, editiamo da root con il nostro editor di testo preferito il file ''/etc/rc.d/rc.modules.local'' ed aggiungiamo la riga: 
 + 
 +  /sbin/modprobe zram 
 + 
 +Prossimo passo è specificare il numero dei block device da far creare a zram (di default zram ne crea solo uno - ''/dev/zram0''). 
 + 
 +<callout type="info" icon="true"> 
 +=== Quanti block device servono ? === 
 + 
 +Per utilizzare la swap con zram è raccomandato creare almeno un block device per cpu in modo da ottimizzare il carico sulle CPU. 
 + 
 +Per sapere quanti core abbiamo sulla nostra macchina possiamo scoprirlo in questo modo: 
 + 
 +  $ cat /proc/cpuinfo | grep processor | wc -l 
 +</callout> 
 + 
 +Per far creare automaticamente più block device creiamo il file ''/etc/modprobe.d/zram.conf'' ed aggiungiamo la riga: 
 + 
 +  options zram num_devices=2 
 + 
 +<callout type="tip" icon="true"> 
 +=== Usiamo LILO === 
 + 
 +Un'altro modo per configurare zram è utilizzare LILO aggiungendo al file ''/etc/lilo.conf'' nella variabile ''append'' la stringa ''zram.num_devices=n'' (dove **n** è il numero dei block devices da creare). 
 +Dopo aver modificato ''lilo.conf'' ricordiamoci di lanciare ''lilo''
 +</callout> 
 + 
 +===== Configuriamo lo swap con eudev ===== 
 + 
 +Un modo che ritengo più flessibile senza creare script-shell è far gestire ad eudev la creazione dello swap all'avvio del sistema. Per farlo basta creare il file ''/etc/udev/rules.d/10-zram.rules'' ed aggiungiamo la seguente riga: 
 + 
 +<file bash 10-zram.rules> 
 +KERNEL=="zram0", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="512M", RUN+="/sbin/mkswap $env{DEVNAME}" 
 +</file> 
 + 
 +In questo modo alla creazione del block device (in questo caso ''/dev/zram0'') in automatico imposterà la dimensione (512M) ed eseguirà il comando ''mkswap'' per creare l'area di swap. 
 + 
 +<callout type="tip" icon="true"> 
 +=== Creiamo più aree di swap per sistemi multicore === 
 + 
 +Nel caso in cui abbiamo più block devices zram da creare, possiamo modificare la riga così: 
 + 
 +<file bash 10-zram.rules> 
 +KERNEL=="zram[0-9]", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="512M", RUN+="/sbin/mkswap $env{DEVNAME}" 
 +</file>
  
-==== Scarichiamo il modulo ==== +In questo modo eudev creerà diverse aree di swap da 512M
-In Slackware il modulo non è fornito //out-of-the-box// ma è possibile compilarlo avendo a disposizione i sorgenti del kernel Linux+</callout>
-Per facilitare il compito scarichiamo dal mio repository (http://lotar.altervista.org/slackbuilds) il pacchetto precompilato presente nella directory [[http://lotar.altervista.org/slackbuilds/zram-kernel-module/pkg|/slackbuilds/zram-kernel-module/pkg]] oppure possiamo utilizzare il tool ''slackpkg'' insieme a ''slackpkgplus'' (per informazioni su come configurare il repository [[:slackbuilds#slackpkg_e_slackpkg|clicca qui]]).+
  
-  # slackpkg update +===== Usiamo zram come disco =====
-  # slackpkg install zram-kernel-module+
  
-<div round center important 90%> +Nulla vieta di utilizzare zram come spazio temporaneo per salvare file (ad esempio ''/tmp''). A differenza di altre soluzioni del tipo **tmpfs** **ramdisk**, zram ha il vantaggio di comprimere i dati.
-Il pacchetto precompilato è disponibile per l'architettura **x86_64** e per la versione del Kernel Linux rilasciata da Patrick per la **-current**. +
-</div>+
  
-<div round center important 90%> +Possiamo aggiungere un nuovo spazio con udev usando il file appena creato ''10-zram.rules'' aggiungendo una riga del tipo:
-Nel caso in cui è necessario utilizzare ''zram'' per un'altra architettura (es. **arm**) o per una versione stabile di **Slackware**, è possibile compilare il modulo utilizzando lo [[http://lotar.altervista.org/slackbuilds/zram-kernel-module/build|SlackBuild]] fornito. +
-</div>+
  
-==== Configuriamo ====+<code bash> 
 +KERNEL=="zram1", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="512M", RUN+="/sbin/mkfs.ext4 $env{DEVNAME}" 
 +</code>
  
-Dopo aver installato il modulo è necessario caricarlo, impostare la dimensione della swap, formattare la swap attivarla.+Nell'esempio abbiamo creato un nuovo disco da 512M formattato con **ext4** (possiamo utilizzare qualsiasi tipo di FS con o senza journaling -- es''/sbin/mkfs.ext4 -O ^has_journal'')
  
-  # modprobe zram +Per montare all'avvio questo disco magari per utilizzarlo per la nostra directory ''/tmp'' aggiungiamo al file ''/etc/fstab'' la seguente riga:
-  # echo 1024*1024*1024 | bc > /sys/block/zram0/disksize +
-  # mkswap /dev/zram0 +
-  # swapon /dev/zram0+
  
-Per facilitare il compito è disponibile lo script di //stop & start// ''/etc/rc.d/rc.zram''.+  /dev/zram1    /tmp    ext4    defaults    0  0
  
-Di default lo script creerà una memoria di **swap** di 1GiB. E' possibile cambiare la dimensione modificando la variabile ''SIZE'' presente nello script.+===== Gestiamo zram =====
  
-Per automatizzare all'avvio del sistema il caricamento del modulo e l'attivazione della memoria di **swap**basta dare i permessi di esecuzione allo script.+Oltre agli strumenti classici per controllare lo stato della memoria swap (''free''''/proc/swaps'') ed occupata (''df'') viene fornito anche un tool ''zramctl'' che ci da diverse informazioni sull'occupazione dello spazio e dati compressi oltre alla gestione di zram stesso:
  
-  # chmod +x /etc/rc.d/rc.zram+  # zramctl 
 +  NAME       ALGORITHM DISKSIZE   DATA COMPR TOTAL STREAMS MOUNTPOINT 
 +  /dev/zram0 lzo           512M   193M 52,9M 57,4M       1 [SWAP] 
 +  /dev/zram1 lzo           512M 192,6M 52,8M 57,3M       1 [SWAP]
  
 +===== Maggiori informazioni =====
 +  * [[wp>en.wikipedia.org/wiki/Zram|zram - Wikipedia]]
  
 +{{tag>how-to slackware zram linux swap}}
  • how-to/zram-in-slackware.1406153222.txt.gz
  • Last modified: 8 years ago
  • by Giuseppe Di Terlizzi