Actualizarea atime afectează performanța sistemului. Ce se întâmplă acolo și ce ar trebui să facem — citiți în articol.

De fiecare dată când actualizez Linux pe computerul meu de acasă, trebuie să mă ocup de anumite sarcini. De-a lungul anilor, aceasta a devenit o obișnuință: fac copii de rezervă ale fișierelor mele, șterg sistemul, instalez totul de la zero, restabilesc fișierele, apoi instalez din nou aplicațiile mele preferate. De asemenea, îmi personalizez setările sistemului. Uneori, asta durează prea mult timp. Și recent m-am gândit dacă am nevoie de această durere de cap.
atime — una dintre cele trei mărci temporale pentru fișierele din Linux (mai multe despre asta mai târziu). În special, mă întrebam dacă ar trebui să dezactivez în continuare atime în sistemele Linux mai recente. Deoarece atime se actualizează de fiecare dată când se accesează un fișier, am realizat că aceasta are un impact semnificativ asupra performanței sistemului.
Recent m-am actualizat la Fedora 32 și din obișnuință am început prin a dezactiva atime. M-am întrebat: am nevoie de ea în principiu? Am decis să investighez această problemă și iată ce am descoperit.
Puțin despre mărci temporale pentru fișiere
Pentru a înțelege, trebuie să facem un pas înapoi și să ne amintim câteva lucruri despre sistemele de fișiere Linux și despre cum nucleul atribuie mărci temporale fișierelor și directorilor. Puteți vedea data ultimei modificări a fișierelor și directorilor rulând comanda ls -l (lung) sau pur și simplu uitându-vă la informațiile despre acestea în managerul de fișiere. Dar în spatele scenei, nucleul Linux urmărește mai multe mărci temporale pentru fișiere și directoare:
- Când a fost modificat ultima dată fișierul (mtime)
- Când au fost modificate ultimele date și metadatele fișierului (ctime)
- Când a fost accesat ultima dată fișierul (atime)
- Puteți folosi comanda stat, pentru a vizualiza datele despre fișier sau director. Iată fișierul /etc/fstab de pe unul dintre serverele mele de testare:
$ stat fstab
Fișier: fstab
Dimensiune: 261 Blocuri: 8 IO Block: 4096 fișier obișnuit
Dispozitiv: b303h/45827d Inod: 2097285 Linkuri: 1
Acces: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Acces: 2019-04-25 21:10:18.083325111 -0500
Modificat: 2019-05-16 10:46:47.427686706 -0500
Schimbat: 2019-05-16 10:46:47.434686674 -0500
Naștere: 2019-04-25 21:03:11.840496275 -0500Aici se poate vedea că acest fișier a fost creat pe 25 aprilie 2019, când am instalat sistemul. Fișierul meu /etc/fstab a fost modificat ultima dată pe 16 mai 2019, iar toate celelalte atribute au fost schimbate aproximativ în același timp.
Dacă copiez /etc/fstab într-un fișier nou, datele se schimbă, indicând că acesta este un fișier nou:
$ sudo cp fstab fstab.bak
$ stat fstab.bak
File: fstab.bak
Size: 261 Blocks: 8 IO Block: 4096 fișier obișnuit
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 -0500Dar dacă pur și simplu redenumesc fișierul, fără a-i schimba conținutul, Linux va actualiza doar timpul modificării fișierului:
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
File: fstab.tmp
Size: 261 Blocks: 8 IO Block: 4096 fișier obișnuit
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 -0500Aceste marcaje temporale sunt foarte utile pentru anumite programe Unix. De exemplu, biff este un program care vă notifică despre apariția unui nou mesaj în e-mail. Acum, puțini folosesc , dar în acele zile, când căsuțele de email erau locale pentru sistem, biff era destul de răspândit.
Cum știe programul dacă aveți un nou email în căsuța de primire? biff compară timpul ultimei modificări (când fișierul căsuței de email a fost actualizat cu un mesaj nou) și timpul ultimei accesări (ultima dată când ați citit emailul). Dacă modificarea a avut loc mai recent decât accesarea, atunci biff va înțelege că ați primit un nou mesaj și vă va informa despre acest lucru. Clientul de email Mutt funcționează cam la fel.
Marcajul timpului ultimei accesări este, de asemenea, util dacă trebuie să colectați statistici despre utilizarea sistemului de fișiere și să optimizați performanța. Administratorii de sistem trebuie să știe la ce obiecte se accesează pentru a configura adecvat sistemul de fișiere.
Dar majoritatea programelor moderne nu mai au nevoie de acest marcaj, astfel că a fost propus să nu fie folosit. În 2007, Linus Torvalds și câțiva alți dezvoltatori de kernel au discutat despre atime în contextul problemelor de performanță. Dezvoltatorul kernelului Linux Ingo Molnar a făcut următoarea observație despre atime și sistemul de fișiere ext3:
„Este destul de ciudat că fiecare desktop și server Linux suferă de o scădere semnificativă a performanței de intrare-ieșire din cauza actualizărilor constante ale atime, deși utilizatorii reali sunt doar doi: tmpwatch [care poate fi configurat pentru a folosi ctime, așa că nu este o mare problemă] și unele instrumente de backup.”
Dar oamenii continuă să folosească unele programe care au nevoie de această etichetă. Așadar, eliminarea atime va afecta funcționarea lor. Dezvoltatorii nucleului Linux nu ar trebui să îngrădească libertatea utilizatorilor.
Soluția lui Solomon
Distribuțiile Linux includ o mulțime de aplicații, iar pe lângă acestea, utilizatorii pot descărca și instala alte programe conform nevoilor lor. Acesta este un avantaj cheie al sistemelor de operare cu cod sursă deschis. Însă, acest lucru complică optimizarea performanței sistemului de fișiere. Eliminarea componentelor care consumă multe resurse poate afecta funcționarea sistemului.
Ca un compromis, dezvoltatorii nucleului Linux au implementat o nouă opțiune relaytime, care are rolul de a asigura un echilibru între performanță și compatibilitate:
atime se actualizează doar dacă timpul anterior de acces este mai mic decât timpul curent de modificare sau 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)... În plus, începând cu Linux 2.6.30, timpul ultimei accesări a unui fișier este întotdeauna actualizat dacă acesta are mai mult de 1 zi.
Sistemele moderne Linux (începând cu Linux 2.6.30, lansat în 2009) folosesc deja relaytime, ceea ce ar trebui să ofere un impuls semnificativ de performanță. Acest lucru înseamnă că nu trebuie să configurați fișierul /etc/fstab, iar cu relaytime puteți fi sigur de valoarea implicită.
Îmbunătățirea performanței sistemului cu ajutorul noatime
Dar dacă doriți să configurați sistemul pentru a obține maximum de performanță, dezactivarea atime este încă o opțiune.
Schimbarea performanței poate să nu fie foarte evidentă pe discurile moderne foarte rapide (precum NVME sau SSD-uri rapide), dar există o mică îmbunătățire.
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șierul /etc /fstab. După aceasta, nucleul nu va actualiza constant atime. Utilizați opțiunea noatime la montarea sistemului 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 0Modificările vor intra în vigoare la următoarea repornire.
În numele publicității
Aveți nevoie de un server pentru găzduirea site-ului? Compania noastră oferă cu plată zilnică sau unică, fiecare server fiind conectat la un canal de internet de 500 Megabiți și protejat gratuit împotriva atacurilor DDoS!
Sursa: habr.com
