Opdatering af atime påvirker systemets ydeevne. Hvad sker der, og hvad skal der gøres — læs i artiklen.

Hver gang jeg opdaterer Linux på min hjemmecomputer, står jeg overfor visse opgaver. Med årene er det blevet en vane: jeg laver sikkerhedskopier af mine filer, sletter systemet, installerer alt fra bunden, gendanner mine filer, og derefter geninstallerer jeg mine yndlingsapps. Jeg tilpasser også systemindstillingerne. Nogle gange tager det for lang tid. For nylig overvejede jeg, om jeg virkelig havde brug for denne hovedpine.
atime — en af de tre tidsstempler for filer i Linux (mere om dette senere). Især har jeg undret mig over, om atime stadig skal deaktiveres i de nyere Linux-systemer. Da atime opdateres hver gang en fil tilgås, indså jeg, at det har en betydelig indvirkning på systemets ydeevne.
For nylig opdaterede jeg til Fedora 32 og begyndte af vane at deaktivere atime. Jeg overvejede: har jeg overhovedet brug for det? Jeg besluttede mig for at undersøge spørgsmålet nærmere, og her er, hvad jeg fandt ud af.
Lidt om filers tidsstempler
For at forstå det, er det nødvendigt at tage et skridt tilbage og huske nogle ting om Linux-filsystemer og hvordan kernen tildeler tidsstempler til filer og mapper. Du kan se datoen for seneste ændring af filer og mapper ved at køre kommandoen ls -l (long) eller blot ved at se informationen i filhåndtereren. Men bag kulisserne holder Linux-kernen styr på flere tidsstempler for filer og mapper:
- Senest ændret fil (mtime)
- Senest ændret filens egenskaber og metadata (ctime)
- Senest tilgået fil (atime)
- Du kan bruge kommandoen stat, for at se data om en fil eller mappe. Her er en fil /etc/fstab fra en af mine testservere:
$ 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 -0500Her kan man se, at denne fil blev oprettet den 25. april 2019, da jeg installerede systemet. Min fil /etc/fstab blev sidst ændret den 16. maj 2019, og alle andre attributter blev ændret omtrent samtidigt.
Hvis jeg kopierer /etc/fstab til en ny fil, ændres datoerne, hvilket angiver, at dette er en ny fil:
$ sudo cp fstab fstab.bak
$ stat fstab.bak
Fil: fstab.bak
Størrelse: 261 Blokke: 8 IO Block: 4096 almindelig fil
Enhed: b303h/45827d Inode: 2105664 Links: 1
Adgang: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Adgang: 2020-05-12 17:53:58.442659986 -0500
Ændre: 2020-05-12 17:53:58.443659981 -0500
Skift: 2020-05-12 17:53:58.443659981 -0500
Fødslen: 2020-05-12 17:53:58.442659986 -0500Men hvis jeg bare omdøber filen uden at ændre indholdet, vil Linux kun opdatere tidspunkterne for ændring af filen:
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
Fil: fstab.tmp
Størrelse: 261 Blokke: 8 IO Block: 4096 almindelig fil
Enhed: b303h/45827d Inode: 2105664 Links: 1
Adgang: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Adgang: 2020-05-12 17:53:58.442659986 -0500
Ændre: 2020-05-12 17:53:58.443659981 -0500
Skift: 2020-05-12 17:54:24.576508232 -0500
Fødslen: 2020-05-12 17:53:58.442659986 -0500Disse tidsstempler er meget nyttige for bestemte Unix-programmer. For eksempel er biff et program, der underretter dig om en ny e-mail. Nu bruger få mennesker , men på de dage, hvor postkasser var lokale for systemet, var biff ret udbredt.
Hvordan finder programmet ud af, om du har ny mail i indbakken? biff sammenligner tidspunktet for den seneste ændring (da indbakke-filen blev opdateret med en ny e-mail) og tidspunktet for den seneste adgang (sidste gang du læste din e-mail). Hvis ændringen skete senere end adgangen, vil biff forstå, at der er kommet et nyt brev, og informere dig herom. E-mailklienten Mutt fungerer på omtrent samme måde.
Tidspunktet for den seneste adgang er også nyttigt, hvis du har brug for at indsamle statistikker om filsystemets brug og optimere ydeevnen. Systemadministratorer skal vide, hvilke objekter der tilgås, for passende at kunne konfigurere filsystemet.
Men de fleste moderne programmer har ikke længere brug for dette tidsstempel, så der blev fremsat forslag om ikke at bruge det. I 2007 diskuterede Linus Torvalds og flere andre kernudviklere atime i forbindelse med et ydeevneproblem. Linux-kerneudvikleren Ingo Molnar bemærkede følgende om atime og filsystemet ext3:
Det er ret underligt, at hver Linux-arbejdsstation og server lider under en mærkbar nedgang i input-output-ydeevnen på grund af konstante opdateringer af atime, selvom der kun er to faktiske brugere: tmpwatch [som kan konfigureres til at bruge ctime, så dette ikke er et stort problem] og nogle backupværktøjer.
Men folk bruger stadig nogle programmer, der har brug for denne mærkning. Så at fjerne atime vil forstyrre deres funktion. Linux-kerneudviklere bør ikke indskrænke brugerens frihed.
Salomonisk løsning
Linux-distributioner inkluderer mange applikationer, og derudover kan brugerne downloade og installere andre programmer i henhold til deres behov. Dette er en vigtig fordel ved open source-operativsystemet. Men det komplicerer optimeringen af ydeevnen i dit filsystem. At fjerne ressourcekrævende komponenter kan forstyrre systemets funktion.
Som et kompromis har Linux-kerneudviklerne indført en ny mulighed kaldet relaytime, der har til formål at skabe balance mellem ydeevne og kompatibilitet:
atime opdateres kun, hvis det tidligere adgangstidspunkt er mindre end det nuværende ændringstidspunkt eller statusændring... Fra Linux 2.6.30 bruger kernen som standard denne mulighed (medmindre noatime er angivet)... Derudover opdateres filens seneste adgangstidspunkt altid, hvis det er mere end 1 dag gammelt, fra Linux 2.6.30.
Moderne Linux-systemer (fra Linux 2.6.30, der blev frigivet i 2009) bruger allerede relaytime, hvilket burde give en virkelig stor forbedring af ydeevnen. Det betyder, at du ikke behøver at konfigurere filen /etc/fstab, og med relaytime kan du stole på standardværdien.
Forbedring af systemets ydeevne med noatime
Men hvis du ønsker at konfigurere dit system for at opnå maksimal ydeevne, er det stadig muligt at deaktivere atime.
Ændring af ydeevnen vil muligvis ikke være særlig mærkbar på meget hurtige moderne diske (såsom NVME eller hurtige SSD), men der vil være en lille forbedring.
Hvis du ved, at du ikke bruger software, der kræver atime, kan du let øge ydeevnen ved at aktivere noatime-optionen i filen /etc /fstab. Efter dette vil kernen ikke konstant opdatere atime. Brug noatime-indstillingen ved montering af 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Ændringerne træder i kraft ved næste genstart.
Annoncering
Har du brug for en server til at hoste din hjemmeside? Vores virksomhed tilbyder med daglig eller engangsbetaling, hver server er tilsluttet en internetkanal på 500 Megabit og beskyttet mod DDoS-angreb gratis!
Kilde: habr.com
