Com i per què l'opció noatime millora el rendiment dels sistemes Linux

L'actualització d'Atime afecta el rendiment del sistema. Què està passant allà i què fer al respecte: llegiu l'article.

Com i per què l'opció noatime millora el rendiment dels sistemes Linux
Sempre que actualitzo Linux al meu ordinador de casa, he de resoldre alguns problemes. Amb els anys, això s'ha convertit en un hàbit: faig una còpia de seguretat dels meus fitxers, esborro el sistema, instal·lo tot des de zero, restaurem els meus fitxers i torno a instal·lar les meves aplicacions preferides. També canvio la configuració del sistema per mi mateix. De vegades es necessita massa temps. I fa poc em vaig preguntar si necessitava aquest mal de cap.

un temps de és una de les tres marques de temps per als fitxers a Linux (més informació sobre això més endavant). En particular, em preguntava si encara seria una bona idea desactivar atime en sistemes Linux més recents. Com que atime s'actualitza cada vegada que s'accedeix al fitxer, em vaig adonar que té un impacte significatiu en el rendiment del sistema.
Recentment vaig actualitzar a Fedora 32 i, per costum, vaig començar desactivant atime. Vaig pensar: realment ho necessito? Vaig decidir estudiar aquest tema i això és el que vaig desenterrar.

Una mica sobre les marques de temps dels fitxers

Per esbrinar-ho, heu de fer un pas enrere i recordar algunes coses sobre els sistemes de fitxers Linux i com el nucli marca els fitxers i directoris de temps. Podeu veure la darrera data de modificació dels fitxers i directoris executant l'ordre ls -l (llarg) o simplement mirant la informació al respecte al gestor de fitxers. Però darrere de les escenes, el nucli de Linux fa un seguiment de diverses marques de temps per a fitxers i directoris:

  1. Quan es va modificar per última vegada el fitxer (mtime)
  2. Quan va ser l'última vegada que es van canviar les propietats del fitxer i les metadades (ctime)
  3. Quan es va accedir per última vegada al fitxer (a l'hora)
  4. Podeu utilitzar l'ordre statper veure informació sobre un fitxer o directori. Aquí teniu l'arxiu / etc / fstab d'un dels meus servidors de 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

Aquí podeu veure que aquest fitxer es va crear el 25 d'abril de 2019 quan vaig instal·lar el sistema. El meu fitxer / etc / fstab es va modificar per última vegada el 16 de maig de 2019 i tots els altres atributs es van canviar al mateix temps.

Si copio / etc / fstab a un fitxer nou, les dates canvien per indicar que és un fitxer nou:

$ 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

Però si només canvio el nom del fitxer sense canviar-ne el contingut, Linux només actualitzarà el moment en què es va modificar el fitxer:

$ 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

Aquestes marques de temps són molt útils per a determinats programes Unix. Per exemple, biff és un programa que t'avisa quan hi ha un missatge nou al teu correu electrònic. Avui en dia poca gent utilitza biff, però en els dies en què les bústies de correu eren locals al sistema, el biff era bastant comú.

Com sap el programa si teniu correu nou a la vostra safata d'entrada? biff compara l'hora de l'última modificació (quan el fitxer de la safata d'entrada es va actualitzar amb un missatge de correu electrònic nou) i l'hora de l'últim accés (l'última vegada que llegiu el vostre correu electrònic). Si el canvi es va produir més tard de l'accés, biff entendrà que ha arribat una nova carta i us ho notificarà. El client de correu electrònic Mutt funciona de la mateixa manera.

La marca de temps de l'últim accés també és útil si necessiteu recopilar estadístiques d'ús del sistema de fitxers i ajustar el rendiment. Els administradors del sistema han de saber a quins objectes s'accedeix perquè puguin configurar el sistema de fitxers en conseqüència.

Però la majoria de programes moderns ja no necessiten aquesta etiqueta, per la qual cosa es va proposar no utilitzar-la. El 2007, Linus Torvalds i diversos desenvolupadors del nucli van discutir atime en el context d'un problema de rendiment. El desenvolupador del nucli de Linux Ingo Molnar va fer el següent punt sobre atime i el sistema de fitxers ext3:

"És força estrany que tots els escriptoris i servidors de Linux pateixin una notable degradació del rendiment d'E/S a causa de les actualitzacions constants d'atime, tot i que només hi ha dos usuaris reals: tmpwatch [que es pot configurar per utilitzar ctime, de manera que no és un gran problema] i algunes eines de còpia de seguretat".

Però la gent encara utilitza alguns programes que necessiten aquesta etiqueta. Per tant, eliminar atime trencarà la seva funcionalitat. Els desenvolupadors del nucli de Linux no haurien d'infringir la llibertat dels usuaris.

La solució de Salomó

Hi ha moltes aplicacions incloses a les distribucions de Linux i a més, els usuaris poden descarregar i instal·lar altres programes segons les seves necessitats. Aquest és un avantatge clau d'un sistema operatiu de codi obert. Però això fa que sigui difícil optimitzar el rendiment del vostre sistema de fitxers. L'eliminació de components que consumeixen molts recursos pot interrompre el sistema.

Com a compromís, els desenvolupadors del nucli de Linux han introduït una nova opció de temps de retransmissió que pretén aconseguir un equilibri entre el rendiment i la compatibilitat:

atime només s'actualitza si el temps d'accés anterior és inferior al temps de modificació o canvi d'estat actual... Des de Linux 2.6.30, el nucli utilitza aquesta opció per defecte (tret que s'especifiqui noatime)... També, des de Linux 2.6.30 . 1, l'hora d'últim accés d'un fitxer sempre s'actualitza si té més d'XNUMX dia.

Els sistemes Linux moderns (des de Linux 2.6.30, llançat el 2009) ja utilitzen el temps de retransmissió, que hauria de donar un gran augment del rendiment. Això vol dir que no cal que configureu el fitxer / etc / fstab, i amb el temps de relleu podeu confiar en el valor predeterminat.

Millora del rendiment del sistema amb noatime

Però si voleu ajustar el vostre sistema per obtenir el màxim rendiment, encara és possible desactivar atime.

És possible que el canvi de rendiment no sigui molt notable en unitats modernes molt ràpides (com NVME o Fast SSD), però hi ha un lleuger augment.

Si sabeu que no utilitzeu programari que requereixi temps, podeu millorar lleugerament el rendiment activant l'opció noatime al fitxer /etc/fstab. Després d'això, el nucli no s'actualitzarà constantment. Utilitzeu l'opció noatime quan munteu el sistema de fitxers:

/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

Els canvis tindran efecte la propera vegada que reinicieu.

Sobre els drets de publicitat

Necessites un servidor per allotjar el teu lloc web? La nostra empresa ofereix servidors fiables amb un pagament diari o únic, cada servidor està connectat a un canal d'Internet de 500 Megabits i està protegit contra atacs DDoS de manera gratuïta!

Com i per què l'opció noatime millora el rendiment dels sistemes Linux

Font: www.habr.com

Afegeix comentari