Uppdateringen av atime pĂ„verkar systemets prestanda. Vad som hĂ€nder och vad man ska göra â lĂ€s i artikeln.

Varje gÄng jag uppdaterar Linux pÄ min hemmadator mÄste jag hantera vissa uppgifter. Med Ären har detta blivit en vana: jag gör sÀkerhetskopior av mina filer, raderar systemet, installerar allt frÄn grunden, ÄterstÀller mina filer och installerar sedan om mina favoritprogram. Jag anpassar ocksÄ systeminstÀllningarna. Ibland tar det för mycket tid. Och nyligen funderade jag pÄ om jag verkligen behöver detta besvÀr.
atime â en av de tre tidsstĂ€mplarna för filer i Linux (mer om detta senare). Jag har sĂ€rskilt funderat pĂ„ om det fortfarande Ă€r nödvĂ€ndigt att stĂ€nga av atime i nyare Linux-system. Eftersom atime uppdateras varje gĂ„ng en fil nĂ„s insĂ„g jag att det har en betydande inverkan pĂ„ systemets prestanda.
Nyligen uppdaterade jag till Fedora 32 och av gammal vana började jag med att stÀnga av atime. Jag tÀnkte: behöver jag det överhuvudtaget? Jag beslutade mig för att undersöka frÄgan och hÀr Àr vad jag hittade.
Lite om tidsstÀmplarna för filer
För att förstÄ detta behöver du ta ett steg tillbaka och komma ihÄg nÄgra saker om Linux-filsystem och hur kÀrnan tilldelar tidsstÀmplar till filer och kataloger. Du kan se datumet för senaste Àndring av filer och kataloger genom att köra kommandot ls -l (lÄng) eller helt enkelt titta pÄ informationen om detta i filhanteraren. Men bakom kulisserna spÄrar Linux-kÀrnan flera tidsstÀmplar för filer och kataloger:
- NĂ€r filen senast modifierades (mtime)
- NÀr filens egenskaper och metadata senast Àndrades (ctime)
- NÀr filen senast anvÀndes (atime)
- Du kan anvÀnda kommandot stat, för att se data om en fil eller katalog. HÀr Àr filen /etc/fstab frÄn en av mina testservrar:
$ 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 -0500HÀr framgÄr det att den hÀr filen skapades den 25 april 2019, nÀr jag installerade systemet. Min fil /etc/fstab Àndrades senast den 16 maj 2019, och alla andra attribut Àndrades ungefÀr samtidigt.
Om jag kopierar /etc/fstab till en ny fil, Àndras datumen och indikerar att detta Àr en ny fil:
$ sudo cp fstab fstab.bak
$ stat fstab.bak
Fil: fstab.bak
Storlek: 261 Block: 8 IO Block: 4096 vanlig fil
Enhet: b303h/45827d Inode: 2105664 LĂ€nkar: 1
Ă
tkomst: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Kontext: unconfined_u:object_r:etc_t:s0
Ă
tkomst: 2020-05-12 17:53:58.442659986 -0500
Ăndra: 2020-05-12 17:53:58.443659981 -0500
Ăndrad: 2020-05-12 17:53:58.443659981 -0500
Födelse: 2020-05-12 17:53:58.442659986 -0500Men om jag bara byter namn pÄ filen utan att Àndra dess innehÄll, kommer Linux endast att uppdatera tidpunkten för filens Àndring:
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
Fil: fstab.tmp
Storlek: 261 Block: 8 IO Block: 4096 vanlig fil
Enhet: b303h/45827d Inode: 2105664 LĂ€nkar: 1
Ă
tkomst: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Kontext: unconfined_u:object_r:etc_t:s0
Ă
tkomst: 2020-05-12 17:53:58.442659986 -0500
Ăndra: 2020-05-12 17:53:58.443659981 -0500
Ăndrad: 2020-05-12 17:54:24.576508232 -0500
Födelse: 2020-05-12 17:53:58.442659986 -0500Dessa tidsstÀmplar Àr mycket anvÀndbara för vissa Unix-program. Till exempel Àr biff ett program som meddelar dig nÀr ett nytt meddelande har kommit i din e-post. Numera Àr det fÄ som anvÀnder , men pÄ den tiden nÀr e-postlÄdor var lokala för systemet, var biff ganska allmÀnt förekommande.
Hur vet programmet att du har ett nytt meddelande i inkorgen? Biff jÀmför tiden för senaste Àndring (nÀr filen för inkommande e-post uppdaterades med ett nytt meddelande) och tiden för senaste Ätkomst (senast du lÀste din e-post). Om Àndringen skedde senare Àn Ätkomsten, kommer biff att förstÄ att ett nytt brev har kommit, och informera dig om det. E-postklienten Mutt fungerar ungefÀr pÄ samma sÀtt.
TidsstÀmpeln för senaste Ätkomst Àr ocksÄ anvÀndbar om du behöver samla statistik över anvÀndningen av filsystemet och optimera prestandan. Systemadministratörer behöver veta vilka objekt som Ätkomstas för att pÄ lÀmpligt sÀtt konfigurera filsystemet.
Men de flesta moderna program behöver inte denna tidsstÀmpel lÀngre, och det har föreslagits att inte anvÀnda den. à r 2007 diskuterade Linus Torvalds och flera andra kÀrnutvecklare atime i samband med prestandaproblem. Kernutvecklaren Ingo Molnar gjorde följande observation om atime och filsystemet ext3:
Det Àr ganska konstigt att varje skrivbord och server i Linux lider av mÀrkbar nedgÄng i I/O-prestanda pÄ grund av stÀndiga atime-uppdateringar, trots att det bara finns tvÄ verkliga anvÀndare: tmpwatch [som kan konfigureras att anvÀnda ctime, sÄ detta Àr inte ett stort problem] samt vissa sÀkerhetskopieringsverktyg.
Men folk fortsÀtter att anvÀnda vissa program som behöver denna markering. SÄ att ta bort atime kommer att störa deras funktionalitet. Linux-kÀrnans utvecklare bör inte inskrÀnka anvÀndarens frihet.
Salomons lösning
MÄnga applikationer ingÄr i Linux-distributioner, och dessutom kan anvÀndare ladda ner och installera andra program efter behov. Detta Àr en nyckelfördel med öppen kÀllkod. Men det komplicerar optimeringen av din filsystems prestanda. Att ta bort resurskrÀvande komponenter kan störa systemets funktion.
Som en kompromiss har Linux-kÀrnans utvecklare infört ett nytt alternativ, relaytime, som syftar till att skapa balans mellan prestanda och kompatibilitet:
atime uppdateras endast om den tidigare Ätkomsttiden Àr mindre Àn den aktuella Àndringstiden eller statusÀndring ⊠FrÄn och med Linux 2.6.30 anvÀnder kÀrnan som standard detta alternativ (om inte noatime anges) ⊠Dessutom, frÄn och med Linux 2.6.30, uppdateras den senaste Ätkomsttiden för en fil alltid om den Àr mer Àn 1 dag gammal.
Moderna Linux-system (frÄn och med Linux 2.6.30, som slÀpptes 2009) anvÀnder redan relaytime, vilket bör ge en verklig prestandaförbÀttring. Detta innebÀr att du inte behöver konfigurera filen /etc/fstab, och med relaytime kan du lita pÄ standardvÀrdet.
Ăka systemets prestanda med noatime
Men om du vill konfigurera ditt system för att fÄ maximal prestanda Àr det fortfarande möjligt att stÀnga av atime.
PrestandaförÀndringen kanske inte Àr sÄ mÀrkbar pÄ mycket snabba moderna diskar (sÄsom NVME eller snabba SSD), men det finns en liten förbÀttring.
Om du vet att du inte anvÀnder programvara som krÀver atime, kan du nÄgot öka prestandan genom att aktivera alternativet noatime i filen. /etc /fstab. Efter detta kommer kÀrnan inte att uppdatera atime kontinuerligt. AnvÀnd alternativet noatime vid montering av filsystemet:
/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Ăndringarna trĂ€der i kraft vid nĂ€sta omstart.
I reklamens namn
Behöver du en server för att hosta din webbplats? VÄrt företag erbjuder med daglig eller engÄngsbetalning, varje server Àr ansluten till en internetkanal pÄ 500 Megabit och skyddas gratis mot DDoS-attacker!
KĂ€lla: habr.com
