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

L'aggiornamento dell'ora influisce sulle prestazioni del sistema. Cosa sta succedendo lì e cosa fare al riguardo: leggi l'articolo.

Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux
Ogni volta che aggiorno Linux sul mio computer di casa, devo risolvere alcuni problemi. Nel corso degli anni, questa è diventata un'abitudine: eseguo il backup dei miei file, pulisco il sistema, installo tutto da zero, ripristino i miei file, quindi reinstallo le mie applicazioni preferite. Cambio anche le impostazioni di sistema in base alle mie esigenze. A volte ci vuole troppo tempo. E recentemente mi sono chiesto se avessi bisogno di questo mal di testa.

un tempo è uno dei tre timestamp per i file in Linux (ne parleremo più avanti). In particolare mi chiedevo se sarebbe ancora una buona idea disabilitare atime sui sistemi Linux più recenti. Poiché atime viene aggiornato ogni volta che si accede al file, mi sono reso conto che ha un impatto significativo sulle prestazioni del sistema.
Recentemente ho aggiornato a Fedora 32 e, per abitudine, ho iniziato disabilitando atime. Ho pensato: ne ho davvero bisogno? Ho deciso di studiare questo problema e questo è quello che ho scoperto.

Un po' di timestamp dei file

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

  1. Quando è stata modificata l'ultima volta il file (mtime)
  2. Quando è stata l'ultima volta che le proprietà del file e i metadati sono stati modificati (ctime)
  3. Quando è stato effettuato l'ultimo accesso al file (atime)
  4. Puoi usare il comando statper visualizzare informazioni su un file o una directory. Ecco il fascicolo /etc/fstab da uno dei miei server di prova:

$ 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 l'ultima volta il 16 maggio 2019 e tutti gli altri attributi sono stati modificati nello stesso periodo.

Se copio /etc/fstab in un nuovo file, le date cambiano per indicare 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 l'ora in cui il file è stato modificato:

$ 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

Questi timestamp sono molto utili per alcuni programmi Unix. Ad esempio, biff è un programma che ti avvisa quando c'è un nuovo messaggio nella tua email. Al giorno d'oggi poche persone lo usano Biff, ma ai tempi in cui le caselle di posta erano locali nel sistema, il biff era abbastanza comune.

Come fa il programma a sapere se hai nuova posta nella tua casella di posta? biff confronta l'ora 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 email). Se la modifica è avvenuta più tardi dell'accesso, biff capirà che è arrivata una nuova lettera e ti avviserà. Il client di posta elettronica Mutt funziona più o meno allo stesso modo.

Il timestamp dell'ultimo accesso è utile anche se è necessario raccogliere statistiche sull'utilizzo del file system e ottimizzare le prestazioni. Gli amministratori di sistema devono sapere a quali oggetti si accede in modo da poter configurare il file system di conseguenza.

Ma la maggior parte dei programmi moderni non ha più bisogno di questa etichetta, quindi è stata proposta di non usarla. Nel 2007, Linus Torvalds e molti altri sviluppatori del kernel hanno discusso di atime nel contesto di un problema di prestazioni. Lo sviluppatore del kernel Linux Ingo Molnar ha sottolineato quanto segue riguardo atime e il file system ext3:

"È abbastanza strano che ogni desktop e server Linux soffra di un notevole degrado delle prestazioni I/O a causa dei costanti aggiornamenti atime, anche se ci sono solo due utenti reali: tmpwatch [che può essere configurato per usare ctime, quindi non è un grosso problema] e alcuni strumenti di backup."

Ma le persone usano ancora alcuni programmi che necessitano di questa etichetta. Pertanto, la rimozione di time interromperà la loro funzionalità. Gli sviluppatori del kernel Linux non dovrebbero violare la libertà dell'utente.

Soluzione di Salomone

Ci sono molte applicazioni incluse nelle distribuzioni Linux e inoltre gli utenti possono scaricare e installare altri programmi in base alle proprie esigenze. Questo è un vantaggio chiave di un sistema operativo open source. Ma ciò rende difficile ottimizzare le prestazioni del file system. La rimozione di componenti che utilizzano molte risorse potrebbe danneggiare il sistema.

Come compromesso, gli sviluppatori del kernel Linux hanno introdotto una nuova opzione di tempo di inoltro che mira a trovare un equilibrio tra prestazioni e compatibilità:

atime viene aggiornato solo se il tempo di accesso precedente è inferiore al tempo di modifica corrente o di cambio di stato... A partire da Linux 2.6.30, il kernel usa questa opzione per impostazione predefinita (a meno che non sia specificato noatime)... Inoltre, a partire da Linux 2.6.30 . 1, l'ora dell'ultimo accesso di un file viene sempre aggiornata se risale a più di XNUMX giorno.

I moderni sistemi Linux (a partire da Linux 2.6.30, rilasciato nel 2009) utilizzano già il tempo di inoltro, che dovrebbe fornire un notevole incremento delle prestazioni. Ciò significa che non è necessario configurare il file /etc/fstabe con RelayTime puoi fare affidamento sul valore predefinito.

Migliorare le prestazioni del sistema con noatime

Ma se vuoi ottimizzare il tuo sistema per ottenere le massime prestazioni, è ancora possibile disabilitare atime.

Il cambiamento di prestazioni potrebbe non essere molto evidente sui moderni drive molto veloci (come NVME o Fast SSD), ma c'è un piccolo aumento in questo caso.

Se sai che non stai utilizzando un software che richiede atime, puoi migliorare leggermente le prestazioni abilitando l'opzione noatime nel file /etc/fstab. Dopodiché, il kernel non verrà più aggiornato costantemente. Utilizza l'opzione noatime durante il montaggio del filesystem:

/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.

Sui diritti della pubblicità

Hai bisogno di un server per ospitare il tuo sito web? La nostra azienda offre server affidabili con un pagamento giornaliero o una tantum ogni server è connesso ad un canale Internet da 500 Megabit ed è protetto gratuitamente dagli attacchi DDoS!

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

Fonte: habr.com

Aggiungi un commento