Pagina 1 di 1

Swap in ram e compressa

Inviato: lun 14 lug 2014, 11:13
da rik70
Ciao di nuovo a tutti.

Volevo condividere con voi alcuni esperimenti con gli ultimi kernel e la Slackware.

Premessa.

PC vecchio: P4 2.8Ghz con 1 GB di ram.

SWAP
Chiaro che con così poca RAM in certe circostanze il sistema 'swappa'. Sopratutto con firefox e siti particolarmenti pesanti.
Su questa storia dello swapping ho sempre avuto molti dubbi e poche certezze.
Si legge in giro che sarebbe meglio evitarlo. Altri sostengono che in un pc desktop varrebbe l'esatto contrario.

Io ho sempre seguito la prima corrente di pensiero, impostando il parametro del kernel 'vm.swappiness' sul valore '10'.

Problema:
come dicevo prima, in certe circostanze il sistema swappa. E quando lo fa purtroppo tende a essere parecchio meno reattivo - il lancio di nuove applicazioni ci mette più tempo del solito.

Ho deciso allora di provare il secondo approccio e spingere il sistema a 'swappare' - che brutto termine - più spesso. Ma non su disco, piuttosto in ram.

A tale scopo viene in aiuto il modulo zram. Questo modulo negli ultimi kernel è uscito dallo stato "staging" ed è dunque considerato stabile. Supporta la compressione LZ4, che dovrebbe grantire maggiore velocità nella compressione e decompressione. Potrebbe tornare utile anche per montare la /tmp in ram.

Ma veniamo ai "trucchi e consigli".

Kernel 3.15.5.

Configurazione (se non ho dimenticato qualcosa):

Codice: Seleziona tutto

CONFIG_ZSMALLOC=y
CONFIG_ZRAM=m
CONFIG_ZRAM_LZ4_COMPRESS=y
CONFIG_LZ4_COMPRESS=m
CONFIG_LZ4_DECOMPRESS=y
CONFIG_DECOMPRESS_LZ4=y
modinfo zram:

Codice: Seleziona tutto

filename:       /lib/modules/3.15.5-smp/kernel/drivers/block/zram/zram.ko
description:    Compressed RAM Block Device
author:         Nitin Gupta <ngupta@vflare.org>
license:        Dual BSD/GPL
depends:        lz4_compress
intree:         Y
vermagic:       3.15.5-smp SMP preempt mod_unload PENTIUMIII 
parm:           num_devices:Number of zram devices (uint)
/etc/rc.d/rc.local:

Codice: Seleziona tutto

if [ -f /lib/modules/$(uname -r)/kernel/drivers/block/zram/zram.ko ]; then
  sysctl vm.swappiness=80
  swapoff -a
  modprobe zram
  echo '256M' > /sys/devices/virtual/block/zram0/disksize
  mkswap /dev/zram0
  swapon -a
  swapon -p 16000 /dev/zram0
fi
Risultato:
bhè a "occhio" i miglioramenti ci sono. Al momento in cui scrivo il sistema utilizza 54 MB di swap, ma non c'è nessun rallentamento di sorta. Insomma il trucco sembra funzionare.

A voi l'onere della prova e i commenti - ovviamente se la faccenda v'interessa.

Ciao

Re: Swap in ram e compressa

Inviato: lun 14 lug 2014, 21:32
da targzeta
Io però non capisco perché swappare in RAM. Cioé, l'area di swap serve proprio quando il PC non ha più RAM, ha senso ridurla ulteriormente per creare un'area di swap che conterrà dei dati che sarebbero comunque andati in lì?

L'unico "vantaggio" è che l'area dovrebbe contenere più dati visto che è compressa, ma questo viene fatto a scapito della CPU.

In pratica il tuo è un finto swap, più che altro è un modo per comprimere la memoria.

Detto questo, io non so cosa usi tu ma io con un semplice WM (IceWM), quindi senza DE faccio quasi tutto con meno di 1GB di RAM (firefox aperto con varie schede). Attualmente ho allocato 500MB.

Emanuele

Re: Swap in ram e compressa

Inviato: lun 14 lug 2014, 21:51
da rik70
Anch'io utilizzo un DE leggero, e ho 512Mb di swap. Lo swap avviene di solito di pocohi Mb e mi capita su siti come i quotidiani - che caricano la madon*a di roba - o se sto compilando. Poi se apro un pdf nel browser son dolori.

Il problema più che altro è che dopo che swappa su disco come dicevo i programmi mettono più tempo a caricare. L'hardware è a posto quindi escludo problemi.

E' vero che tolgo ram. Ma solo quando questa viene utilizzata. O mi sbaglio? Come avviene con /dev/shm. A me basta che quei pochi megabyte non mi tocchino il disco.

O sto dicendo fesserie? E' per questo che ho postato :)

Re: Swap in ram e compressa

Inviato: mar 15 lug 2014, 17:28
da rik70
P.s.

La compressione LZ4 non è attiva di default.

Subito dopo il caricamento del modulo e prima di ogni altra cosa:

Codice: Seleziona tutto

echo lz4 > /sys/block/zram0/comp_algorithm
Comunque è tutto spigato per bene nella documentazione del kernel alla voce 'blockdev/zram.txt'.

Re: Swap in ram e compressa

Inviato: mar 15 lug 2014, 17:45
da conraid
Sinceramente ho gli stessi dubbi di Emanuele. Non riesco a vederne l'utilità. Se pensi che la ram ti basti e non vuoi swap su file semplicemente toglilo. Se non basta, ancor di più vale il discorso di non utilità. Forse mi manca qualche prospettiva però :-)

Re: Swap in ram e compressa

Inviato: mar 15 lug 2014, 18:24
da rik70
conraid ha scritto:Sinceramente ho gli stessi dubbi di Emanuele. Non riesco a vederne l'utilità. [...] Forse mi manca qualche prospettiva però :-)
E' la ragione per cui ho aperto la discussione: sentire i vostri pareri perché anch'io ho molti dubbi :)

Ma andiamo con ordine:
Se pensi che la ram ti basti e non vuoi swap su file semplicemente toglilo.
La ram non basta. Il sistema swappa, di qualche decina di megabyte non di più. Firefox è il responsabile numero uno.
Se non basta, ancor di più vale il discorso di non utilità.
No, perché il punto dolente è che se swappa su disco il sistema diventa meno reattivo.

Il concetto è questo: "devi swappare? Bene, allora ti obbligo finché riesco a tenere tutto in ram, sacrificando un po di memoria". Che poi bisogna vedere a quanto ammonta questo sacrificio: leggendo la documentazione si dovrebbe vedere in '/sys/block/zram0/mem_used_total', anche se non ho capito in cosa è espresso il valore che si legge. Se fosse byte, al momento sono 5.8 megabyte.

Comunque, son tornato al vm.swappiness predefinito (60) e al momento ho 10Mb di swap. Se supera i 256MB - mai visto - e va a pescare sulla partizione, tolgo tutto :)

Re: Swap in ram e compressa

Inviato: mar 2 dic 2014, 17:59
da Shuren
In questi giorni sto testando anch'io zram. Ho un EeeBox con 4 Gb di ram, di cui 3 a mia disposizione (512 Mb sono per la memoria grafica, altri 512 per un tipo di bug o feature che affligge Nvidia Ion). Swappiness a 20 e KDE. Senza swap finché non ho cominciato a compilare Firefox. Vari test finché, con un po' di manica larga, mi sono attestato sui 3 Gb di swap.

Da subito su un file di swap per la mancanza di partizioni libere. Quando un sistema swappa su disco per forza di cose perde in prestazioni. E swappa anche quando sembra non servire. Ma il concetto di cache è uno dei punti di forza di Linux: tiene occupata parte di ram come cache delle applicazioni appunto. Modificare vm.swappiness serve a chiedere al kernel di limitare l'uso della cache, svuotandola più velocemente e limitando l'uso di swap. Compcache/zram serve semplicemente per limitare la perdita di prestazioni. E a questo punto, ad utilizzare la ram in maniera più efficace.

Re: Swap in ram e compressa

Inviato: mer 3 dic 2014, 18:37
da Rama
sono perplesso, non creo la partizione di swap fin da quando ho messo 2 giga di RAM (mo' mi sono allargato a 4);
uso KDE con gli effetti spezziali attivati e non ricordo di aver mai superato il giga di RAM occupata, almeno nell'uso normale: dolphin, gkrellm, amule, firefox e thunderbird in azione;
di certo se aprissi dozzine di schede in firefox il giga lo supererei di sicuro, ma non riesco ad immaginare i motivi per cui sarebbe necessario;

r

Re: Swap in ram e compressa

Inviato: mar 20 gen 2015, 10:37
da Shuren
Eseguito test di compilazione di Firefox. Out of memory. Nell'uso quotiiano nessun problema. Quindi, tiriamo le somme: zram funziona egregiamente nelle situazioni di uso quotidiano SOHO su macchine con poca ram e di qualche anno fa. Per usi più spinti, di fatto, file o partizione di swap è necessaria.

Re: Swap in ram e compressa

Inviato: gio 22 gen 2015, 17:32
da rik70
Sì, la swap va tenuta almeno come backup.

Ora comunque sono su con il kernel 3.17, niente zram, patchset di Colivas e scheduler BFQ.

Minch** fa paura :o

42MB di swap su disco in uso e rimane una scheggia. Per non parlare dell'audio in real-time: threadirqs abilitato, rtprio della scheda audio a 85, 5.3ms di latenza e non si schioda di un millimetro.

Non so di chi sia il merito, ma c'è di che godere :)