Ako a prečo možnosť noatime zlepšuje výkon systémov Linux

Aktualizácia Atime ovplyvňuje výkon systému. Čo sa tam deje a čo s tým robiť - prečítajte si článok.

Ako a prečo možnosť noatime zlepšuje výkon systémov Linux
Vždy, keď aktualizujem Linux na svojom domácom počítači, musím vyriešiť určité problémy. V priebehu rokov sa to stalo zvykom: zálohujem svoje súbory, vymažem systém, nainštalujem všetko od začiatku, obnovím svoje súbory a potom preinštalujem svoje obľúbené aplikácie. Tiež si mením nastavenia systému podľa seba. Niekedy to zaberie príliš veľa času. A nedávno som premýšľal, či potrebujem túto bolesť hlavy.

čas je jednou z troch časových pečiatok pre súbory v systéme Linux (viac o tom neskôr). Najmä ma zaujímalo, či by bolo stále dobré vypnúť atime na novších systémoch Linux. Keďže atime sa aktualizuje pri každom prístupe k súboru, uvedomil som si, že to má významný vplyv na výkon systému.
Nedávno som upgradoval na Fedoru 32 a zo zvyku som začal vypnutím atime. Pomyslel som si: naozaj to potrebujem? Rozhodol som sa naštudovať si túto problematiku a toto som vyhrabal.

Trochu o časových pečiatkach súborov

Aby ste na to prišli, musíte urobiť krok späť a zapamätať si niekoľko vecí o súborových systémoch Linuxu a o tom, ako jadro označuje súbory a adresáre časovými značkami. Spustením príkazu môžete vidieť dátum poslednej zmeny súborov a adresárov ls -l (dlhá) alebo jednoducho pohľadom na informácie o ňom v správcovi súborov. Ale v zákulisí linuxové jadro sleduje niekoľko časových pečiatok pre súbory a adresáre:

  1. Kedy bol súbor naposledy upravený (mtime)
  2. Kedy boli naposledy zmenené vlastnosti súboru a metadáta (ctime)
  3. Kedy bol súbor naposledy použitý (atime)
  4. Môžete použiť príkaz stavna zobrazenie informácií o súbore alebo adresári. Tu je súbor / Etc / fstab z jedného z mojich testovacích serverov:

$ 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

Tu môžete vidieť, že tento súbor bol vytvorený 25. apríla 2019, keď som nainštaloval systém. Môj súbor / Etc / fstab bol naposledy upravený 16. mája 2019 a všetky ostatné atribúty boli zmenené približne v rovnakom čase.

Ak skopírujem / Etc / fstab do nového súboru sa dátumy zmenia, aby indikovali, že ide o nový súbor:

$ 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

Ale ak len premenujem súbor bez zmeny jeho obsahu, Linux aktualizuje iba čas, kedy bol súbor upravený:

$ 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

Tieto časové pečiatky sú veľmi užitočné pre určité unixové programy. Napríklad biff je program, ktorý vás upozorní, keď je vo vašom e-maile nová správa. V súčasnosti ho používa málokto bifnúť, ale v časoch, keď boli poštové schránky lokálne v systéme, bol biff úplne bežný.

Ako program zistí, či máte v doručenej pošte novú poštu? biff porovnáva čas poslednej úpravy (keď bol súbor doručenej pošty aktualizovaný novou e-mailovou správou) a čas posledného prístupu (kedy ste naposledy čítali svoj e-mail). Ak zmena nastala neskôr ako prístup, potom biff pochopí, že prišiel nový list a upozorní vás na to. E-mailový klient Mutt funguje veľmi podobne.

Časová pečiatka posledného prístupu je tiež užitočná, ak potrebujete zhromaždiť štatistiky používania súborového systému a vyladiť výkon. Správcovia systému potrebujú vedieť, ku ktorým objektom sa pristupuje, aby mohli zodpovedajúcim spôsobom nakonfigurovať systém súborov.

Ale väčšina moderných programov už toto označenie nepotrebuje, preto padol návrh nepoužívať ho. V roku 2007 Linus Torvalds a niekoľko ďalších vývojárov jadra diskutovali o čase v kontexte problému s výkonom. Vývojár linuxového jadra Ingo Molnar sa o atime a súborovom systéme ext3 vyjadril nasledovne:

„Je celkom zvláštne, že každý linuxový desktop a server trpí znateľným znížením I/O výkonu v dôsledku neustálych aktualizácií atime, aj keď existujú iba dvaja skutoční používatelia: tmpwatch [ktorý sa dá nakonfigurovať na používanie ctime, takže to nie je veľký problém] a nejaké zálohovacie nástroje."

Ľudia však stále používajú niektoré programy, ktoré toto označenie potrebujú. Takže odstránenie atime naruší ich funkčnosť. Vývojári jadra Linuxu by nemali porušovať slobodu používateľov.

Šalamúnovo riešenie

V linuxových distribúciách je veľa aplikácií a okrem toho si používatelia môžu stiahnuť a nainštalovať ďalšie programy podľa svojich potrieb. Toto je kľúčová výhoda open source OS. To však sťažuje optimalizáciu výkonu vášho súborového systému. Odstránenie komponentov náročných na zdroje môže narušiť systém.

Ako kompromis vývojári jadra Linuxu zaviedli novú možnosť relaytime, ktorá je určená na dosiahnutie rovnováhy medzi výkonom a kompatibilitou:

atime sa aktualizuje iba vtedy, ak je predchádzajúci prístupový čas kratší ako aktuálny čas modifikácie alebo zmeny stavu... Od Linuxu 2.6.30 jadro používa túto možnosť štandardne (pokiaľ nie je špecifikované noatime)... Tiež od Linuxu 2.6.30 . 1, čas posledného prístupu k súboru sa vždy aktualizuje, ak je starší ako XNUMX deň.

Moderné linuxové systémy (od Linuxu 2.6.30, vydaného v roku 2009) už využívajú relaytime, čo by malo poskytnúť skutočne veľké zvýšenie výkonu. To znamená, že súbor nemusíte konfigurovať / Etc / fstaba s reléovým časom sa môžete spoľahnúť na predvolený.

Zlepšenie výkonu systému pomocou noatime

Ak však chcete vyladiť svoj systém na maximálny výkon, vypnutie funkcie atime je stále možné.

Na veľmi rýchlych moderných diskoch (napríklad NVME alebo Fast SSD) nemusí byť výkonová zmena príliš viditeľná, ale je tam malý nárast.

Ak viete, že nepoužívate softvér, ktorý vyžaduje atime, môžete mierne zlepšiť výkon povolením možnosti noatime v súbore /etc/fstab. Potom sa jadro nebude neustále aktualizovať. Pri pripájaní súborového systému použite možnosť noatime:

/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

Zmeny sa prejavia pri ďalšom reštarte.

O právach reklamy

Potrebujete server na hosťovanie vašich webových stránok? Naša spoločnosť ponúka spoľahlivé servery s dennou alebo jednorazovou platbou je každý server pripojený k internetovému kanálu 500 megabitov a je zadarmo chránený proti DDoS útokom!

Ako a prečo možnosť noatime zlepšuje výkon systémov Linux

Zdroj: hab.com

Pridať komentár