Linux : Come ottimizzare EXT4

EXT4 è forse il File System più diffuso in ambito Linux, in questo articolo vedremo alcuni trucchi per ottimizzarlo e rendere la nostra Linux box ancora più performante.

ext4 filesystem
Ext4 è il FS di default per molte distro linux, tra cui Debian, Ubuntu, Mint e CentOS.
La sua diffusione capillare lo ha reso di fatto il filesystem più diffuso in ambito linux.

Tuttavia, è lontano dall’essere perfetto, e sebbene nella maggior parte dei casi svolga un buon lavoro, è possibile ottimizzarlo per ottenere il meglio da specifiche situazioni.

Ovviamente c’è sempre un prezzo da pagare, e per ogni ottimizzazione spiegherò l’entità di tale prezzo.

Ci tengo a sottolineare che non è una buona idea applicare tutte le ottimizzazioni che propongo in questa pagina se prima non si è compreso esattamente cosa comporta applicarle.

Ci sono situazioni in cui si possono ottenere solo benefici, ed altre in cui potrebbe essere meglio mantenere le impostazioni di default.

Detto questo possiamo cominciare.

 

EXT4 : Data commit time

Tutte le operazioni di scrittura vengono prima effettuare in un buffer, e solo successivamente salvate su disco. Questo viene gestito dal sistema operativo, e ha lo scopo di migliorare le prestazioni e ridurre le scritture al minimo.

Di default, EXT4 ha un commit time di 5 secondi, il che significa che tutte le operazioni di scrittura vengono salvate in memoria per 5 secondi prima che inizi il vero processo di scrittura su disco. Così facendo, molte richieste vengono raggruppate, e si diminuisce il tempo di accesso, inoltre, i software che le eseguono hanno l’impressione che la scrittura sia ultimata non appena i dati sono stati posto nel buffer, e possono continuare le operazioni.

Aumentando questo tempo si favorisce la lettura sulla scrittura, e i programmi potranno scrivere più dati che sembreranno immediatamente salvati.
In alcune situazioni in cui si vuole ottimizzare il tempo di scrittura, e in cui le letture hanno maggiore priorità (in un ambiente in cui si fa uso intensivo del disco), aumentare il limite a 60 o 120 secondi può far guadagnare molto in performance di scrittura.

ATTENZIONE : è importante capire che tutto quello che non è ancora stato scritto su dico è a rischio. Ad esempio, in caso di power failure (se va via la luce ndr), il contenuto del buffer non ancora scritto su disco viene perso. Quindi, un buffer di 5 secondi vi da molte meno possibilità di perdere dati in seguito ad interruzione di corrente, dall’altro lato, un buffer di 2 minuti può portare a perdite di dati che si credevano scritti fino a 2 minuti prima del guasto.

Come settare il data commit time:

Nel file /etc/fstab si trovano le istruzioni di mount di tutti i dischi, dopo defaults basta aggiungere ,commit=120 per cambiare il valore di default.

Ecco un esempio con evidenziato il testo ca aggiungere :

/dev/sda2 /boot ext4 defaults,commit=100 1 2

 

EXT4 : Access time

Ogni volta che si accede ad un file o ad una directory, viene salvato l’access time.
Questo implica che saranno svolte molte operazioni di scrittura sui metadati di file e cartelle che si vanno solo ad aprire in lettura.

Nel caso in cui si debba accedere a molti file, queste operazioni di scrittura possono creare una coda che rallenta le operazioni.
In parte questo problema viene mitigato dall’ottimizzazione presentata nel punto precedente, che permette di dare precedenza alle letture ed eseguire molte scritture in un solo colpo.

Tuttavia, nel caso in cui avere le informazioni sull’ultimo accesso ai file non sia interessante (di solito è utile, quindi valutate attentamente) è possibile disabilitare completamente questa funzione e risparmiare operazioni di scrittura.

Come disabilitare la registrazione dell’ora di accesso:

Sempre nel file /etc/fstab è possibile aggiungere un’opzione per disabilitare la registrazione dell’ora di accesso, ecco un esempio

/dev/sda2 /boot ext4 defaults,noatime 1 2

 

EXT4 : Cambiare l’algoritmo di scheduling del disco

In molte situazioni, lo scheduling di default è CFQ, che di solito fa un buon lavoro.
Tuttavia, in alcuni scenari, quando ad esempio il riordinamento delle richieste viene effettuato ad un livello sottostante, o quando si utilizza un SSD è possibile passare a NOOP, che è più semplice e veloce (se qualcuno si prende cura di riordinare le richieste, o se l’ordine non importa, come nel caso degli SSD).

Come passare a NOOP:

Eseguire questo comando come root :

echo noop > /sys/block/sda/queue/scheduler

dove sda è il disco su cui applicare il nuovo scheduling.

Lista della spesa :

Ti consiglio di provare un SSD! La differenza è davvero molta.
Leggi questo articolo per saperne di più e per avere qualche link di riferimento.

 

Your turn !

Non esitare a lasciare un commento, sei il benvenuto.

 

Computer geek e appassionato di elettronica dall'infanzia. Nel tempo libero oltre a realizzare progetti inutili ma entusiasmanti mi dedico ai videogiochi, rigorosamente su pc. Condivido su questo blog e su youtube i miei interessi nella speranza di entusiasmare tutti i matti come me.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Verifica anti-spam *