Kako i zašto opcija noatime poboljšava performanse Linux sistema

Atime ažuriranje utiče na performanse sistema. Šta se tamo događa i što učiniti u vezi s tim - pročitajte članak.

Kako i zašto opcija noatime poboljšava performanse Linux sistema
Kad god ažuriram Linux na svom kućnom računaru, moram riješiti određene probleme. Tokom godina, ovo je postalo navika: pravim rezervnu kopiju svojih fajlova, brišem sistem, instaliram sve ispočetka, vraćam svoje fajlove, a zatim ponovo instaliram svoje omiljene aplikacije. Također mijenjam sistemske postavke kako mi odgovara. Ponekad je potrebno previše vremena. Nedavno sam se zapitao da li mi treba ova glavobolja.

vrijeme je jedna od tri vremenske oznake za datoteke u Linuxu (više o tome kasnije). Konkretno, pitao sam se da li bi i dalje bilo dobro onemogućiti atime na novijim Linux sistemima. Pošto se atime ažurira svaki put kada se pristupi datoteci, shvatio sam da ima značajan uticaj na performanse sistema.
Nedavno sam nadogradio na Fedoru 32 i, iz navike, počeo sam onemogućavanjem vremena. Pomislio sam: da li mi to zaista treba? Odlučio sam da proučim ovu temu i evo šta sam iskopao.

Malo o vremenskim oznakama fajlova

Da biste to shvatili, morate napraviti korak unazad i zapamtiti nekoliko stvari o Linux sistemima datoteka i kako kernel označava vremenske oznake datoteka i direktorija. Možete vidjeti posljednji izmijenjeni datum datoteka i direktorija pokretanjem naredbe ls -l (dugo) ili jednostavno gledanjem informacija o tome u upravitelju datoteka. Ali iza scene, Linux kernel prati nekoliko vremenskih oznaka za datoteke i direktorije:

  1. Kada je fajl zadnji put izmijenjen (mtime)
  2. Kada su posljednji put promijenjena svojstva datoteke i metapodaci (ctime)
  3. Kada je datoteci posljednji put pristupano (vrijeme)
  4. Možete koristiti naredbu stanjeza pregled informacija o datoteci ili direktoriju. Evo fajla / etc / fstab sa jednog od mojih test servera:

$ 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

Ovdje možete vidjeti da je ovaj fajl kreiran 25. aprila 2019. godine kada sam instalirao sistem. Moj fajl / etc / fstab posljednji put je izmijenjen 16. maja 2019., a svi ostali atributi su promijenjeni otprilike u isto vrijeme.

Ako kopiram / etc / fstab na novu datoteku, datumi se mijenjaju kako bi ukazali da se radi o novom fajlu:

$ 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

Ali ako samo preimenujem datoteku bez promjene njenog sadržaja, Linux će ažurirati samo vrijeme kada je datoteka modificirana:

$ 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

Ove vremenske oznake su vrlo korisne za određene Unix programe. Na primjer, biff je program koji vas obavještava kada postoji nova poruka u vašoj e-pošti. Danas malo ljudi koristi biff, ali u danima kada su poštanski sandučići bili lokalni za sistem, biff je bio prilično uobičajen.

Kako program zna da li imate novu poštu u inboxu? biff upoređuje vrijeme posljednje izmjene (kada je inbox datoteka ažurirana novom porukom e-pošte) i vrijeme posljednjeg pristupa (posljednji put kada ste pročitali svoju e-poštu). Ako se promjena dogodila kasnije od pristupa, tada će biff shvatiti da je stiglo novo pismo i obavijestit će vas o tome. Mutt klijent e-pošte radi na skoro isti način.

Posljednja vremenska oznaka pristupa je također korisna ako trebate prikupiti statistiku korištenja sistema datoteka i podesiti performanse. Administratori sistema moraju znati kojim objektima se pristupa kako bi mogli u skladu s tim konfigurirati sistem datoteka.

Ali većini modernih programa ova oznaka više nije potrebna, pa je postojao prijedlog da se ona ne koristi. Godine 2007, Linus Torvalds i nekoliko drugih programera kernela su povremeno raspravljali u kontekstu problema performansi. Programer Linux kernela Ingo Molnar rekao je sljedeće o atimeu i ext3 sistemu datoteka:

„Prilično je čudno da svaki Linux desktop i server trpi primjetnu degradaciju I/O performansi zbog stalnih ažuriranja vremena, iako postoje samo dva prava korisnika: tmpwatch [koji se može konfigurirati da koristi ctime, tako da to nije veliki problem] i neke rezervne alate."

Ali ljudi i dalje koriste neke programe kojima je potrebna ova oznaka. Dakle, uklanjanje vremena će narušiti njihovu funkcionalnost. Programeri Linux kernela ne bi trebali kršiti slobodu korisnika.

Solomonovo rešenje

Postoje mnoge aplikacije uključene u Linux distribucije, a osim toga, korisnici mogu preuzeti i instalirati druge programe prema svojim potrebama. Ovo je ključna prednost otvorenog koda OS. Ali to otežava optimizaciju performansi vašeg sistema datoteka. Uklanjanje resursno intenzivnih komponenti može poremetiti sistem.

Kao kompromis, programeri jezgre Linuxa uveli su novu opciju relaytimea koja ima za cilj da uspostavi ravnotežu između performansi i kompatibilnosti:

atime se ažurira samo ako je prethodno vrijeme pristupa manje od trenutnog vremena modifikacije ili promjene statusa... Od Linuxa 2.6.30, kernel koristi ovu opciju po defaultu (osim ako nije specificirano noatime)... Također, od Linuxa 2.6.30 . 1, vrijeme posljednjeg pristupa datoteci se uvijek ažurira ako je starija od XNUMX dana.

Moderni Linux sistemi (od Linuxa 2.6.30, objavljenog 2009.) već koriste vrijeme releja, što bi trebalo dati zaista veliko povećanje performansi. To znači da ne morate konfigurirati datoteku / etc / fstab, a sa relaytimeom možete se osloniti na zadano.

Poboljšanje performansi sistema uz noatime

Ali ako želite da podesite svoj sistem kako biste postigli maksimalne performanse, onemogućavanje vremena je i dalje moguće.

Promjena performansi možda neće biti primjetna na vrlo brzim modernim diskovima (kao što su NVME ili Fast SSD), ali postoji mali porast.

Ako znate da ne koristite softver koji zahtijeva atime, možete malo poboljšati performanse tako što ćete omogućiti opciju noatime u datoteci /etc/fstab. Nakon ovoga, kernel se neće stalno ažurirati. Koristite opciju noatime kada montirate sistem datoteka:

/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

Promjene će stupiti na snagu sljedeći put kada ponovo pokrenete sistem.

O pravima reklame

Da li vam je potreban server za hostovanje vaše web stranice? Naša kompanija nudi pouzdani serveri uz dnevnu ili jednokratnu uplatu, svaki server je povezan na internet kanal od 500 megabita i zaštićen je od DDoS napada besplatno!

Kako i zašto opcija noatime poboljšava performanse Linux sistema

izvor: www.habr.com

Dodajte komentar