Cum și de ce opțiunea noatime îmbunătățește performanța sistemelor Linux

Actualizarea Atime afectează performanța sistemului. Ce se întâmplă acolo și ce să faci în privința asta - citește articolul.

Cum și de ce opțiunea noatime îmbunătățește performanța sistemelor Linux
Ori de câte ori actualizez Linux pe computerul meu de acasă, trebuie să rezolv anumite probleme. De-a lungul anilor, acest lucru a devenit un obicei: îmi fac copii de rezervă ale fișierelor, șterg sistemul, instalez totul de la zero, îmi restaurează fișierele, apoi reinstalez aplicațiile mele preferate. De asemenea, schimb setările sistemului pentru mine. Uneori este nevoie de prea mult timp. Și recent m-am întrebat dacă am nevoie de această durere de cap.

o vreme este unul dintre cele trei marcaje temporale pentru fișierele din Linux (mai multe despre asta mai târziu). În special, mă întrebam dacă ar fi totuși o idee bună să dezactivați atime pe sistemele Linux mai recente. Deoarece atime este actualizat de fiecare dată când este accesat fișierul, mi-am dat seama că are un impact semnificativ asupra performanței sistemului.
Am făcut recent upgrade la Fedora 32 și, din obișnuință, am început prin a dezactiva atime. M-am gândit: chiar am nevoie de el? Am decis să studiez această problemă și asta am dezgropat.

Câteva despre marcajele de timp ale fișierelor

Pentru a vă da seama, trebuie să faceți un pas înapoi și să vă amintiți câteva lucruri despre sistemele de fișiere Linux și despre modul în care kernel-ul marchează fișierele și directoarele. Puteți vedea ultima dată de modificare a fișierelor și directoarelor rulând comanda ls -l (lung) sau pur și simplu privind informațiile despre acesta în managerul de fișiere. Dar în culise, nucleul Linux ține evidența mai multor marcaje de timp pentru fișiere și directoare:

  1. Când a fost fișierul modificat ultima dată (mtime)
  2. Când a fost ultima dată când proprietățile fișierului și metadatele au fost modificate (ctime)
  3. Când a fost accesat ultima dată fișierul (la ora)
  4. Puteți folosi comanda Statpentru a vizualiza informații despre un fișier sau director. Aici este dosarul / Etc / fstab de pe unul dintre serverele mele de testare:

$ 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

Aici puteți vedea că acest fișier a fost creat pe 25 aprilie 2019 când am instalat sistemul. Dosarul meu / Etc / fstab a fost modificat ultima dată pe 16 mai 2019 și toate celelalte atribute au fost modificate aproximativ în același timp.

Daca copiez / Etc / fstab la un fișier nou, datele se schimbă pentru a indica faptul că este un fișier 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

Dar dacă doar redenumesc fișierul fără a-i schimba conținutul, Linux va actualiza doar la momentul în care fișierul a fost modificat:

$ 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

Aceste marcaje temporale sunt foarte utile pentru anumite programe Unix. De exemplu, biff este un program care vă anunță când există un mesaj nou în e-mailul dvs. În zilele noastre puțini oameni folosesc biff, dar pe vremea când cutiile poștale erau locale pentru sistem, biff era destul de comun.

Cum știe programul dacă aveți e-mailuri noi în căsuța de e-mail? biff compară ora ultimei modificări (când fișierul inbox a fost actualizat cu un nou mesaj de e-mail) și ora ultimului acces (ultima dată când ați citit e-mailul). Dacă modificarea a avut loc mai târziu de acces, atunci biff va înțelege că a sosit o nouă scrisoare și vă va anunța despre aceasta. Clientul de e-mail Mutt funcționează aproape în același mod.

Marca temporală a ultimului acces este, de asemenea, utilă dacă trebuie să colectați statistici de utilizare a sistemului de fișiere și să reglați performanța. Administratorii de sistem trebuie să știe ce obiecte sunt accesate pentru a putea configura sistemul de fișiere în consecință.

Dar majoritatea programelor moderne nu mai au nevoie de această etichetă, așa că a existat o propunere de a nu o folosi. În 2007, Linus Torvalds și câțiva alți dezvoltatori de kernel au discutat despre o dată în contextul unei probleme de performanță. Dezvoltatorul de kernel Linux Ingo Molnar a făcut următorul punct despre atime și sistemul de fișiere ext3:

„Este destul de ciudat că fiecare desktop și server Linux suferă o degradare vizibilă a performanței I/O din cauza actualizărilor constante atime, chiar dacă există doar doi utilizatori reali: tmpwatch [care poate fi configurat să folosească ctime, deci nu este o problemă mare] și unele instrumente de rezervă”.

Dar oamenii încă folosesc unele programe care au nevoie de această etichetă. Prin urmare, eliminarea atime va distruge funcționalitatea acestora. Dezvoltatorii de kernel Linux nu ar trebui să încalce libertatea utilizatorului.

decizia lui Solomon

Există multe aplicații incluse în distribuțiile Linux și, în plus, utilizatorii pot descărca și instala alte programe în funcție de nevoile lor. Acesta este un avantaj cheie al unui sistem de operare open source. Dar acest lucru face dificilă optimizarea performanței sistemului de fișiere. Eliminarea componentelor consumatoare de resurse poate perturba sistemul.

Ca un compromis, dezvoltatorii nucleului Linux au introdus o nouă opțiune de timp de retransmisie care este menită să atingă un echilibru între performanță și compatibilitate:

atime este actualizat numai dacă timpul de acces anterior este mai mic decât timpul curent de modificare sau de schimbare a stării... Începând cu Linux 2.6.30, nucleul folosește această opțiune în mod implicit (dacă nu este specificat noatime)... De asemenea, din Linux 2.6.30 . 1, ultima oră de acces a unui fișier este întotdeauna actualizată dacă are mai mult de XNUMX zi.

Sistemele moderne Linux (începând cu Linux 2.6.30, lansat în 2009) folosesc deja timpul de retransmisie, ceea ce ar trebui să ofere o creștere foarte mare a performanței. Aceasta înseamnă că nu trebuie să configurați fișierul / Etc / fstab, iar cu relaytime vă puteți baza pe implicit.

Îmbunătățirea performanței sistemului cu noatime

Dar dacă doriți să vă reglați sistemul pentru a obține performanță maximă, dezactivarea atimei este încă posibilă.

Modificarea performanței poate să nu fie foarte vizibilă pe unitățile moderne foarte rapide (cum ar fi NVME sau Fast SSD), dar există o mică creștere acolo.

Dacă știți că nu utilizați software care necesită atime, puteți îmbunătăți ușor performanța activând opțiunea noatime în fișier /etc/fstab. După aceasta, nucleul nu se va actualiza constant la timp. Utilizați opțiunea noatime când montați sistemul de fișiere:

/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

Modificările vor intra în vigoare data viitoare când reporniți.

Despre drepturile de publicitate

Aveți nevoie de un server pentru a vă găzdui site-ul? Firma noastra ofera servere de încredere cu o plată zilnică sau o singură dată, fiecare server este conectat la un canal de Internet de 500 Megabiți și este protejat gratuit împotriva atacurilor DDoS!

Cum și de ce opțiunea noatime îmbunătățește performanța sistemelor Linux

Sursa: www.habr.com

Adauga un comentariu