Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux

L'aggiornamento di atime influisce sulle prestazioni del sistema. Cosa succede e come affrontarlo — leggi nell'articolo.

Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux
Ogni volta che aggiorno Linux sul mio computer di casa, mi trovo a dover affrontare alcune questioni. Negli anni è diventata una routine: faccio il backup dei miei file, formatto il sistema, installo tutto da zero, ripristino i miei file e poi reinstallo le mie applicazioni preferite. Cambi anche le impostazioni del sistema a tuo piacimento. A volte ci vuole troppo tempo. E recentemente mi sono chiesto se avessi bisogno di questo stress.

atime — è uno dei tre timestamp per i file in Linux (di più su questo dopo). In particolare, mi sono chiesto se valesse ancora la pena disattivare atime nei sistemi Linux più recenti. Poiché atime viene aggiornato ogni volta che un file viene accesso, ho capito che ha un impatto significativo sulle prestazioni del sistema.
Di recente sono passato a Fedora 32 e per abitudine ho iniziato disattivando atime. Mi sono chiesto: ne ho realmente bisogno? Ho deciso di approfondire la questione e ecco cosa ho scoperto.

Un po' sulle timestamp dei file

Per capire meglio, devi fare un passo indietro e ricordare alcune cose sui file system Linux e su come il kernel assegna timestamp a file e directory. Puoi vedere la data dell'ultima modifica di file e directory eseguendo il comando ls -l (lungo) o semplicemente visualizzando le informazioni su di essi nel gestore di file. Ma dietro le quinte, il kernel Linux tiene traccia di diversi timestamp per file e directory:

  1. Quando un file è stato modificato per l'ultima volta (mtime)
  2. Quando le proprietà e i metadati di un file sono stati modificati per l'ultima volta (ctime)
  3. Quando un file è stato aperto per l'ultima volta (atime)
  4. Puoi usare il comando stat, per visualizzare i dati di un file o di una directory. Ecco un file /etc/fstab da uno dei miei server di test:

$ stat fstab
  File: fstab
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2097285     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
 Birth: 2019-04-25 21:03:11.840496275 -0500

Qui puoi vedere che questo file è stato creato il 25 aprile 2019, quando ho installato il sistema. Il mio file /etc/fstab è stato modificato per l'ultima volta il 16 maggio 2019, e tutti gli altri attributi sono stati modificati più o meno nello stesso periodo.

Se copio /etc/fstab in un nuovo file, le date cambiano, indicando che si tratta di un nuovo file:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Ma se rinomino semplicemente il file senza modificarne il contenuto, Linux aggiornerà solo il tempo di modifica del file:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Queste timestamp sono molto utili per alcuni programmi Unix. Ad esempio, biff è un programma che ti avvisa della ricezione di un nuovo messaggio di posta elettronica. Oggi pochi usano biff, ma nei giorni in cui le caselle di posta erano locali al sistema, biff era piuttosto diffuso.

Come fa il programma a sapere se hai nuova posta in arrivo? biff confronta l'orario dell'ultima modifica (quando il file della posta in arrivo è stato aggiornato con un nuovo messaggio di posta elettronica) e l'ora dell'ultimo accesso (l'ultima volta che hai letto la tua posta elettronica). Se la modifica è avvenuta dopo l'accesso, biff capirà che è arrivata una nuova email e te lo comunicherà. Il client di posta Mutt funziona più o meno allo stesso modo.

Il timestamp dell'ultimo accesso è anche utile se hai bisogno di raccogliere statistiche sull'uso del file system e regolare le prestazioni. Gli amministratori di sistema devono sapere quali oggetti vengono utilizzati per configurare adeguatamente il file system.

Ma la maggior parte dei moderni programmi non ha più bisogno di questo flag, quindi è stata proposta la sua eliminazione. Nel 2007, Linus Torvalds e alcuni altri sviluppatori del kernel hanno discusso di atime nel contesto dei problemi di performance. L'ingegnere del kernel Linux Ingo Molnar ha fatto il seguente commento su atime e sul file system ext3:

«È piuttosto strano che ogni desktop e server Linux soffrano di un notevole calo delle prestazioni I/O a causa degli aggiornamenti costanti di atime, mentre i veri utenti sono solo due: tmpwatch [che può essere configurato per utilizzare ctime, quindi non è un grosso problema] e alcuni strumenti di backup».

Ma le persone continuano a utilizzare alcuni programmi che necessitano di questo flag. Quindi, rimuovere atime comprometterebbe il loro funzionamento. Gli sviluppatori del kernel Linux non devono limitare la libertà dell'utente.

Una soluzione di compromesso

Le distribuzioni Linux includono numerose applicazioni e, inoltre, gli utenti possono scaricare e installare altri programmi in base alle loro esigenze. Questo è un vantaggio chiave dei sistemi operativi con codice sorgente aperto. Tuttavia, questo complica l'ottimizzazione delle prestazioni del file system. Rimuovere componenti che richiedono molte risorse può compromettere il funzionamento del sistema.

Come compromesso, gli sviluppatori del kernel Linux hanno implementato una nuova opzione chiamata relaytime, che mira a garantire un equilibrio tra prestazioni e compatibilità:

atime viene aggiornato solo se il tempo di accesso precedente è inferiore al tempo corrente di modifica o modifica dello stato... A partire da Linux 2.6.30, il kernel utilizza questa opzione per impostazione predefinita (se non è specificato noatime)... Inoltre, a partire da Linux 2.6.30, il tempo dell'ultimo accesso a un file viene sempre aggiornato se è superiore a 1 giorno.

I moderni sistemi Linux (a partire da Linux 2.6.30, rilasciato nel 2009) utilizzano già relaytime, il che dovrebbe fornire un notevole incremento delle prestazioni. Questo significa che non è necessario configurare il file /etc/fstab, e con relaytime puoi contare sul valore predefinito.

Miglioramento delle performance di sistema attraverso noatime

Se desideri ottimizzare la tua macchina per ottenere prestazioni massime, puoi comunque disabilitare atime.

La modifica delle performance potrebbe non essere molto evidente su dischi moderni molto veloci (come NVME o Fast SSD), ma c'è un piccolo incremento.

Se sei consapevole di non utilizzare software che richiede atime, puoi migliorare leggermente le prestazioni attivando l'opzione noatime nel file /etc /fstab. Dopo di che, il kernel non aggiornerà continuamente atime. Utilizza l'opzione noatime durante il mount del file system:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

Le modifiche avranno effetto al prossimo riavvio.

In pubblicità

Hai bisogno di un server per ospitare il tuo sito? La nostra azienda offre server affidabili con pagamento giornaliero o una tantum, ogni server è connesso a una banda internet di 500 Megabit ed è protetto gratuitamente da attacchi DDoS!

Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster