Il Kernel Linux e le nuove frontiere nell’utilizzo della swap: zswap migliora con i Btree

Forse di questi tempi si fa meno caso alle necessità di memoria RAM dei programmi, ed alle tecniche usate per averne a disposizione, ma una delle più vecchie e comuni è quella dello swap: usare parte del disco fisso come memoria (virtuale) per poter liberare quella fisica. Normalmente in Linux – e Unix – si tratta di una partizione dedicata, formattata apposta per questo scopo, mentre in Windows viene usato un file apposta: il file di paging.

La tecnica funziona bene perché parte dei dati caricati in RAM è solo parcheggiata, non varia frequentemente né è necessario accederci in continuazione. Quei dati possono essere messi sul disco: rispetto ai dati in RAM ci vorrà molto di più per leggerli e scriverli, ma avremo più memoria veloce per le operazioni che la richiedono.
Il gioco funziona bene finché quelle necessità rimangono piuttosto rare, pagando altrettanto raramente quella penale molto alta.

Gli sviluppatori del Kernel hanno pensato che aggiungere del tempo di accesso pur di diminuire lo spazio usato sul disco potesse essere una tattica vantaggiosa, implementando (dal Kernel 3.11) zswap: compressione della swap sul disco.
Su un Raspberry Pi con poca RAM e disco rappresentato da una microSD, diventa importante sia avere dello spazio swap disponibile sia occupare il minor spazio possibile sul disco. Ma il vantaggio si ha anche in computer normali, perché semplicemente si usano meno i dischi (la parte lenta del processo).

La compressione funziona solo se i dati sono organizzati in gruppetti, cosa che li rende non immediatamente accessibili: alla richiesta di lettura o modifica di un dato, bisogna sapere in anticipo quale pezzo di swap scompattare. Rispetto alla swap normale, quindi, abbiamo una ricerca aggiuntiva che richiede un’implementazione specifica.

Proprio questa fase potrebbe essere migliorata di molto organizzando l’indice secondo la tecnica del b-tree, che rende la ricerca dei dati molto rapida.
I primi test dell’implementazione proposta sembrano portare un miglioramento di 5 volte, e forse è possibile ottenere prestazioni ancora migliori perfezionando l’algoritmo b-tree presente nel Kernel. Niente male.

Pronti ad abilitare zswap?

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: , , , ,