GNU/Linux >> Znalost Linux >  >> Linux

Zlepšete výkon systému Linux pomocí noatime

Kdykoli upgraduji Linux na svém domácím počítači, mám seznam úkolů, které obvykle dělám. V průběhu let se z nich staly zvyky:zálohuji své soubory, vymažu systém, znovu nainstaluji od začátku, obnovím své soubory a poté znovu nainstaluji své oblíbené doplňkové aplikace. Dělám také pár systémových úprav. Některé z těchto úprav jsem dělal tak dlouho, že jsem si nedávno říkal, jestli je ještě musím udělat.

Jedním vylepšením je atime , což je jedno ze tří časových razítek na každém souboru v Linuxu (o tom později). Konkrétně mě napadlo, jestli má ještě cenu zakázat atime v novějších systémech Linux. Od atime je aktualizován při každém přístupu k souboru, pochopil jsem, že to mělo významný dopad na výkon systému.

Nedávno jsem upgradoval svůj počítač na Fedoru 32 a vypnul jsem atime na mém upgradovaném systému ze zvyku. Ale potřeboval jsem to ještě? Rozhodl jsem se to prozkoumat dále. Zde je to, co jsem našel.

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

Pro pochopení noatime , musíte udělat krok zpět a pochopit pár věcí o linuxových souborových systémech a o tom, jak jádro aplikuje časová razítka na soubory a adresáře. Pravděpodobně již znáte datum poslední úpravy souborů a adresářů; můžete to vidět v ls -l (dlouhý) výpis adresářů nebo pokud se podíváte na detaily souboru ve správci souborů. Ale v zákulisí linuxové jádro sleduje několik časových razítek v souborech a adresářích:

  1. Když byl soubor naposledy upraven (mtime )
  2. Kdy byl soubor naposledy změněn (ctime )
  3. Kdy byl soubor naposledy otevřen (atime )

Můžete použít stat k zobrazení těchto podrobností pro soubor nebo adresář. Zde je příklad /etc/fstab soubor na jednom 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

Z výstupu můžete vidět, že tento soubor byl vytvořen 25. dubna 2019, kdy jsem systém nainstaloval. Můj /etc/fstab soubor 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í, což znamená, ž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

Ale pokud soubor pouze přejmenuji, aniž bych změnil jeho obsah, Linux aktualizuje pouze čas změny souboru:

$ 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ž máte novou e-mailovou zprávu. V dnešní době nevidíte mnoho lidí, kteří používají biff, ale v dobách, kdy byly poštovní schránky lokální ve vašem systému, byl biff docela běžný.

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Jak program pozná, že máte ve schránce novou poštu? Biff porovnává čas poslední úpravy (kdy byl soubor doručené pošty aktualizován o novou e-mailovou zprávu) a čas posledního přístupu (kdy jste si naposledy přečetli svůj e-mail). Pokud je Změněno novější než Přistupováno, pak biff ví, že od posledního přečtení e-mailu přišla e-mailová zpráva, a dá vám vědět. E-mailový klient Mutt dělá něco podobného, ​​aby vás upozornil na nové zprávy.

Čas posledního přístupu je také užitečný, pokud potřebujete provést statistiky souborového systému a vyladit výkon. Na velkých linuxových systémech mohou správci potřebovat vědět, k čemu se přistupuje, aby mohli vhodně vyladit souborový systém.

Ale většina moderních programů již nepotřebuje čas posledního přístupu, takže se objevily argumenty, proč jej nepoužívat. V roce 2007 Linus Torvalds a několik dalších vývojářů jádra diskutovali o atime a problémy s jeho výkonem. Vývojář linuxového jádra Ingo Molnár učinil tento postřeh o atime a souborový systém ext3:

Je trochu zvláštní, že každý linuxový počítač a server poškozuje znatelné zpomalení výkonu IO kvůli neustálým aktualizacím atime, zatímco jeho skuteční uživatelé jsou jen dva: tmpwatch [který lze nakonfigurovat tak, aby používal ctime, takže to není velký problém] a některé zálohovací nástroje. (Dobrá, a myslím, že také e-mailem.) Z desítek tisíc žádostí.

Ale lidé stále používají některé programy, které to potřebují, a odstraňují atime by rozbil tyto uživatelské programy. A pravidlem při vývoji linuxového jádra je nenarušovat uživatelský prostor.

Relatime kompromis

Distribuce Linuxu obsahují mnoho softwarových aplikací a uživatelé si mohou stáhnout a nainstalovat další programy podle svých konkrétních potřeb. To je klíčová výhoda operačního systému s otevřeným zdrojovým kódem! To ale ztěžuje ladění výkonu vašeho souborového systému. Potřebujete atime , nebo jeho odstranění naruší něco ve vašem systému?

Jako kompromis implementovali vývojáři linuxového jádra novou metodu:relatime je mírně odlišné měřítko výkonu, které má vyvážit výkon a kompatibilitu. mount manuálová stránka říká toto o relatime :

Čas přístupu se aktualizuje pouze v případě, že předchozí čas přístupu byl dřívější než aktuální čas úpravy nebo změny. … Od Linuxu 2.6.30 se jádro implicitně nastaví na chování poskytované touto volbou (pokud nebylo specifikováno noatime) … Navíc od Linuxu 2.6.30 je čas posledního přístupu souboru vždy aktualizován, pokud je starší než 1 den.

Stručně řečeno:moderní systémy Linux (od Linuxu 2.6.30, vydaného v roce 2009) již používají relatime , což by vám mělo poskytnout opravdu rychlé zvýšení výkonu. To znamená, že nemusíte upravovat /etc/fstab a může se spolehnout na relatime výchozí jádro.

Vyladění výkonu systému pomocí noatime

Pokud ale chcete svůj systém vyladit, abyste získali maximální výkon, deaktivujte atime je stále platnou možností v roce 2020.

Toto vylepšení výkonu nemusí být na velmi rychlých moderních discích (jako je NVME nebo rychlý SSD) příliš patrné, ale stále je zde mírné zvýšení.

Pokud víte, že nepoužíváte software, který vyžaduje atime , pak můžete dosáhnout mírného zvýšení výkonu nastavením noatime ve vašem /etc/fstab soubor. Tím jádru sdělíte, aby nesledovalo čas posledního přístupu, čímž se vyhnete malému výpadku výkonu kvůli neustálé aktualizaci atime v souborovém systému. Přidejte noatime jako možnost k vašim linuxovým souborovým systémům, obvykle po položce defaults:

/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

To se projeví při příštím restartu.


Linux
  1. Třídit příkaz v Linuxu s příklady

  2. Linux Shutdown Command (s příklady)

  3. Jaké jsou možnosti připojení pro zlepšení výkonu souborového systému ext4 v Linuxu

  1. Pochopení systémových volání na Linuxu pomocí strace

  2. Plánování systémových úloh pomocí Cronu na Linuxu

  3. Jak mohu použít rsync se systémem souborů FAT?

  1. Odstraňování problémů se systémem Linux 101:Výkon systému

  2. Jak monitorovat výkon systému Linux pomocí Sysstat

  3. Oprávnění souborů v Linuxu s příkladem