Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== zram su 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 ===== ''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> In questo modo eudev creerà diverse aree di swap da 512M. </callout> ===== Usiamo zram come disco ===== Nulla vieta di utilizzare zram come spazio temporaneo per salvare file (ad esempio ''/tmp''). A differenza di altre soluzioni del tipo **tmpfs** o **ramdisk**, zram ha il vantaggio di comprimere i dati. Possiamo aggiungere un nuovo spazio con udev usando il file appena creato ''10-zram.rules'' aggiungendo una riga del tipo: <code bash> KERNEL=="zram1", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", ATTR{disksize}="512M", RUN+="/sbin/mkfs.ext4 $env{DEVNAME}" </code> Nell'esempio abbiamo creato un nuovo disco da 512M e formattato con **ext4** (possiamo utilizzare qualsiasi tipo di FS con o senza journaling -- es. ''/sbin/mkfs.ext4 -O ^has_journal'') Per montare all'avvio questo disco magari per utilizzarlo per la nostra directory ''/tmp'' aggiungiamo al file ''/etc/fstab'' la seguente riga: /dev/zram1 /tmp ext4 defaults 0 0 ===== Gestiamo zram ===== 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: # 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.txt Last modified: 8 years agoby Giuseppe Di Terlizzi Log In