Jak a proč možnost noatime zlepšuje výkon systémů Linux

Aktualizace Atime ovlivňuje výkon systému. Co se tam děje a co s tím dělat - přečtěte si článek.

Jak a proč možnost noatime zlepšuje výkon systémů Linux
Kdykoli aktualizuji Linux na svém domácím počítači, musím vyřešit určité problémy. V průběhu let se z toho stal zvyk: zálohuji své soubory, vymažu systém, nainstaluji vše od začátku, obnovím své soubory a poté znovu nainstaluji své oblíbené aplikace. Také si měním nastavení systému podle sebe. Někdy to zabere příliš mnoho času. A nedávno mě napadlo, jestli potřebuji tu bolest hlavy.

Doba je jedním ze tří časových razítek pro soubory v Linuxu (více o tom později). Zejména jsem přemýšlel, zda by bylo stále dobré zakázat atime na novějších systémech Linux. Protože atime se aktualizuje při každém přístupu k souboru, uvědomil jsem si, že to má významný dopad na výkon systému.
Nedávno jsem upgradoval na Fedoru 32 a ze zvyku jsem začal deaktivací atime. Říkal jsem si: Opravdu to potřebuji? Rozhodl jsem se tuto problematiku nastudovat a toto jsem vyhrabal.

Něco málo o časových razítkách souborů

Abyste na to přišli, musíte udělat krok zpět a zapamatovat si pár věcí o souborových systémech Linuxu a o tom, jak jádro označuje soubory a adresáře časovými značkami. Spuštěním příkazu můžete zobrazit datum poslední změny souborů a adresářů ls -l (dlouhý) nebo jednoduše pohledem na informace o něm ve správci souborů. Ale v zákulisí linuxové jádro sleduje několik časových razítek pro soubory a adresáře:

  1. Kdy byl soubor naposledy upraven (mtime)
  2. Kdy byly naposledy změněny vlastnosti souboru a metadata (ctime)
  3. Kdy byl soubor naposledy otevřen (atime)
  4. Můžete použít příkaz statpro zobrazení informací o souboru nebo adresáři. Zde je soubor / etc / fstab z jednoho z mých testovacích serverů:

$ 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

Zde vidíte, že tento soubor byl vytvořen 25. dubna 2019, když jsem systém nainstaloval. Můj soubor / etc / fstab byl naposledy upraven 16. května 2019 a všechny ostatní atributy byly změněny přibližně ve stejnou dobu.

Pokud zkopíruji / etc / fstab do nového souboru se data změní, aby indikovala, že se jedná o nový soubor:

$ 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

Pokud však soubor přejmenuji, aniž bych změnil jeho obsah, Linux aktualizuje pouze čas, kdy byl soubor 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

Tato časová razítka jsou velmi užitečná pro určité unixové programy. Například biff je program, který vás upozorní, když je ve vašem e-mailu nová zpráva. V dnešní době málokdo používá steak, ale v dobách, kdy byly poštovní schránky lokální v systému, byl biff docela běžný.

Jak program pozná, že máte ve schránce novou poštu? biff porovnává čas poslední změny (kdy byl soubor doručené pošty aktualizován o novou e-mailovou zprávu) a čas posledního přístupu (kdy jste naposledy četli svůj e-mail). Pokud ke změně došlo později než při přístupu, pak biff pochopí, že přišel nový dopis, a upozorní vás na to. E-mailový klient Mutt funguje velmi podobně.

Časové razítko posledního přístupu je také užitečné, pokud potřebujete shromáždit statistiky využití souborového systému a vyladit výkon. Správci systému potřebují vědět, ke kterým objektům se přistupuje, aby mohli odpovídajícím způsobem nakonfigurovat systém souborů.

Většina moderních programů už ale toto označení nepotřebuje, proto padl návrh nepoužívat ho. V roce 2007 Linus Torvalds a několik dalších vývojářů jádra diskutovali o čase v kontextu problému s výkonem. Vývojář linuxového jádra Ingo Molnar se o atime a souborovém systému ext3 vyjádřil následovně:

„Je docela zvláštní, že každý linuxový desktop a server trpí znatelným snížením I/O výkonu kvůli neustálým aktualizacím atime, i když existují pouze dva skuteční uživatelé: tmpwatch [který lze nakonfigurovat tak, aby používal ctime, takže to není velký problém] a nějaké zálohovací nástroje."

Lidé ale stále používají některé programy, které toto označení potřebují. Takže odstranění atime naruší jejich funkčnost. Vývojáři linuxového jádra by neměli zasahovat do svobody uživatele.

Solomonův roztok

V distribucích Linuxu je obsaženo mnoho aplikací a uživatelé si navíc mohou stahovat a instalovat další programy podle svých potřeb. To je klíčová výhoda open source OS. To však ztěžuje optimalizaci výkonu systému souborů. Odstranění komponent náročných na zdroje může narušit systém.

Jako kompromis zavedli vývojáři linuxového jádra novou možnost relaytime, která je určena k dosažení rovnováhy mezi výkonem a kompatibilitou:

atime se aktualizuje pouze v případě, že je předchozí přístupový čas kratší než aktuální čas modifikace nebo změny stavu... Od Linuxu 2.6.30 jádro používá tuto možnost standardně (pokud není specifikováno noatime)... Také od Linuxu 2.6.30 . 1, je čas posledního přístupu k souboru vždy aktualizován, pokud je starší než XNUMX den.

Moderní linuxové systémy (od Linuxu 2.6.30, vydaného v roce 2009) již využívají relaytime, což by mělo poskytnout opravdu velký výkon. To znamená, že soubor nemusíte konfigurovat / etc / fstab, as reléovým časem se můžete spolehnout na výchozí.

Zlepšení výkonu systému pomocí noatime

Pokud však chcete vyladit svůj systém tak, abyste získali maximální výkon, deaktivace atime je stále možná.

Změna výkonu nemusí být na velmi rychlých moderních discích (jako je NVME nebo Fast SSD) příliš patrná, ale malý nárůst tam je.

Pokud víte, že nepoužíváte software, který vyžaduje atime, můžete výkon mírně zlepšit povolením možnosti noatime v souboru /etc/fstab. Poté se jádro nebude neustále aktualizovat atime. Při připojování souborového systému použijte volbu 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

Změny se projeví při příštím restartu.

Jako reklama

Potřebujete server pro hostování vašeho webu? Naše společnost nabízí spolehlivé servery s denní nebo jednorázovou platbou je každý server připojen k internetovému kanálu 500 megabitů a je zdarma chráněn proti DDoS útokům!

Jak a proč možnost noatime zlepšuje výkon systémů Linux

Zdroj: www.habr.com

Přidat komentář