GNU/Linux >> Linux Esercitazione >  >> Linux

Migliora le prestazioni del sistema Linux con noatime

Ogni volta che aggiorno Linux sul mio computer di casa, ho un elenco di attività che di solito svolgo. Sono diventate abitudini nel corso degli anni:eseguo il backup dei miei file, pulisco il sistema, reinstallo da zero, ripristino i miei file, quindi reinstallo le mie applicazioni extra preferite. Ho anche apportato alcune modifiche al sistema. Ho apportato alcune di queste modifiche per così tanto tempo che di recente mi sono chiesto se avessi ancora bisogno di farle.

Una modifica è atime , che è uno dei tre timestamp su ogni file su Linux (ne parleremo più avanti). In particolare, mi chiedevo se vale ancora la pena disabilitare atime nei sistemi Linux più recenti. Da atime viene aggiornato ogni volta che si accede al file, ho capito che ha avuto un impatto significativo sulle prestazioni del sistema.

Di recente ho aggiornato il mio computer a Fedora 32 e ho disattivato atime sul mio sistema aggiornato per abitudine. Ma ne avevo ancora bisogno? Ho deciso di approfondire. Ecco cosa ho trovato.

Un po' sui timestamp dei file

Per capire noatime , è necessario fare un passo indietro e comprendere alcune cose sui filesystem Linux e su come il kernel applica timestamp a file e directory. Probabilmente sei già a conoscenza della data dell'ultima modifica su file e directory; puoi vederlo in un ls -l elenco di directory (lungo) o se guardi i dettagli del file in un file manager. Ma dietro le quinte, il kernel Linux tiene traccia di diversi timestamp su file e directory:

  1. Quando il file è stato modificato l'ultima volta (mtime )
  2. Quando il file è stato modificato l'ultima volta (ctime )
  3. Quando è stato effettuato l'ultimo accesso al file (atime )

Puoi usare la stat comando per vedere questi dettagli per un file o una directory. Ecco un esempio di /etc/fstab file su 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

Dall'output, puoi vedere che questo file è stato creato il 25 aprile 2019, quando ho installato il sistema. Il mio /etc/fstab il file è stato modificato 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 il file senza cambiarne il contenuto, Linux aggiorna solo l'ora 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

Questi timestamp sono molto utili per alcuni programmi Unix. Ad esempio, biff è un programma che ti avvisa quando hai un nuovo messaggio di posta elettronica. Non vedi molte persone che usano biff in questi giorni, ma ai tempi in cui le cassette postali erano locali nel tuo sistema, biff era abbastanza comune.

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Come fa un 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 email) e l'ora dell'ultimo accesso (l'ultima volta che hai letto la tua email). Se Modified è più recente di Accessed, allora biff sa che è arrivato un messaggio e-mail dall'ultima volta che hai letto l'e-mail e te lo farà sapere. Il client di posta elettronica Mutt fa qualcosa di simile per avvisarti quando arrivano nuovi messaggi.

L'ora dell'ultimo accesso è utile anche se devi eseguire statistiche sul filesystem e ottimizzare le prestazioni. Su sistemi Linux di grandi dimensioni, gli amministratori potrebbero aver bisogno di sapere a cosa si accede in modo da poter ottimizzare il filesystem in modo appropriato.

Ma la maggior parte dei programmi moderni non ha più bisogno dell'ora dell'ultimo accesso, quindi c'è stato qualche argomento per non usarlo. Nel 2007, Linus Torvalds e molti altri sviluppatori di kernel hanno discusso di atime e i suoi problemi di prestazioni. Lo sviluppatore del kernel Linux Ingo Molnár ha fatto questa osservazione su atime e il filesystem ext3:

È un po' strano che ogni desktop e server Linux sia danneggiato da un notevole rallentamento delle prestazioni IO dovuto ai costanti aggiornamenti atime, mentre ci sono solo due utenti reali: tmpwatch [che può essere configurato per utilizzare ctime quindi non è un grosso problema] e alcuni strumenti di backup. (Ok, e anche la notifica tramite posta, immagino.) Su decine di migliaia di applicazioni.

Ma le persone usano ancora alcuni programmi che ne hanno bisogno e rimuovono atime interromperebbe quei programmi utente. E la regola nello sviluppo del kernel Linux è di non rompere lo spazio utente.

Il compromesso relativo

Le distribuzioni Linux includono molte applicazioni software e gli utenti possono scaricare e installare altri programmi per soddisfare le loro esigenze particolari. Questo è il vantaggio chiave di un sistema operativo open source! Ma ciò rende le cose più difficili nell'ottimizzazione delle prestazioni del filesystem. Hai bisogno di atime o rimuoverlo interromperà qualcosa sul tuo sistema?

Come compromesso, gli sviluppatori del kernel Linux hanno implementato un nuovo metodo:relatime è una misura delle prestazioni leggermente diversa che ha lo scopo di bilanciare le prestazioni con la compatibilità. Il mount la pagina man dice questo su relatime :

L'ora di accesso viene aggiornata solo se l'ora di accesso precedente era precedente all'ora di modifica o modifica corrente. … A partire da Linux 2.6.30, il kernel assume per impostazione predefinita il comportamento fornito da questa opzione (a meno che non sia stato specificato noatime) … Inoltre, a partire da Linux 2.6.30, l'ora dell'ultimo accesso al file viene sempre aggiornata se è più vecchia di 1 giorno.

In breve:i moderni sistemi Linux (da Linux 2.6.30, rilasciato nel 2009) utilizzano già relatime , che dovrebbe darti un aumento delle prestazioni davvero veloce. Ciò significa che non è necessario modificare il tuo /etc/fstab file e può fare affidamento su relatime predefinito del kernel.

Modificare le prestazioni del sistema con noatime

Ma se stai cercando di modificare il tuo sistema per ottenere le massime prestazioni, disabilita atime è ancora un'opzione valida nel 2020.

Questa modifica delle prestazioni potrebbe non essere molto evidente su unità moderne molto veloci (come NVME o un veloce SSD), ma c'è ancora un piccolo aumento.

Se sai di non utilizzare software che richiede atime , puoi ottenere un leggero aumento delle prestazioni impostando noatime nel tuo /etc/fstab file. Questo dice al kernel di non tenere traccia dell'ora dell'ultimo accesso, evitando quel piccolo calo delle prestazioni per aggiornare continuamente atime nel filesystem. Aggiungi noatime come opzione per i tuoi filesystem Linux, di solito dopo la voce di default:

/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

Ciò avrà effetto al prossimo riavvio.


Linux
  1. Ordina il comando in Linux con esempi

  2. Comando di arresto di Linux (con esempi)

  3. Pianificazione delle attività di sistema con Cron su Linux

  4. Come monitorare le prestazioni del sistema Linux con Sysstat

  5. Permessi dei file in Linux con esempio

Introduzione al sistema operativo Linux

Comando Linux WC con esempi

Suggerimenti utili per migliorare le prestazioni del sistema Linux

Come migliorare le prestazioni della batteria del laptop in Linux

Risolvi i problemi e monitora le prestazioni del sistema Linux con nmon

Amministrazione di Network File System (NFS) su Linux