Atime-opdatering påvirker systemets ydeevne. Hvad sker der der, og hvad du skal gøre ved det - læs artiklen.
Når jeg opdaterer Linux på min hjemmecomputer, skal jeg løse visse problemer. I årenes løb er dette blevet en vane: Jeg sikkerhedskopierer mine filer, sletter systemet, installerer alt fra bunden, gendanner mine filer og geninstallerer derefter mine yndlingsprogrammer. Jeg ændrer også systemindstillingerne, så de passer til mig selv. Nogle gange tager det for meget tid. Og for nylig spekulerede jeg på, om jeg havde brug for denne hovedpine.
en tid er et af tre tidsstempler for filer i Linux (mere om dette senere). Især tænkte jeg på, om det stadig ville være en god idé at deaktivere atime på nyere Linux-systemer. Da atime opdateres hver gang filen åbnes, indså jeg, at det har en betydelig indvirkning på systemets ydeevne.
Jeg opgraderede for nylig til Fedora 32 og startede af vane med at deaktivere Atime. Jeg tænkte: har jeg virkelig brug for det? Jeg besluttede at studere dette spørgsmål, og det er det, jeg gravede frem.
Lidt om filtidsstempler
For at finde ud af det, skal du tage et skridt tilbage og huske et par ting om Linux-filsystemer og hvordan kernen tidsstempler filer og mapper. Du kan se den sidste ændrede dato for filer og mapper ved at køre kommandoen ls -l (lang) eller blot ved at se oplysninger om det i filhåndteringen. Men bag kulisserne holder Linux-kernen styr på flere tidsstempler for filer og mapper:
- Hvornår blev filen sidst ændret (mtime)
- Hvornår var sidste gang filegenskaberne og metadata blev ændret (ctime)
- Hvornår blev filen sidst tilgået (atime)
- Du kan bruge kommandoen statfor at se oplysninger om en fil eller et bibliotek. Her er filen / 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 -0500
Her kan du 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 omkring samme tid.
Hvis jeg kopierer / Etc / fstab til en ny fil ændres datoerne for at angive, at det er en ny fil:
$ 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
Men hvis jeg bare omdøber filen uden at ændre dens indhold, vil Linux kun opdatere det tidspunkt, hvor filen blev ændret:
$ 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
Disse tidsstempler er meget nyttige for visse Unix-programmer. For eksempel er biff et program, der giver dig besked, når der er en ny besked i din e-mail. I dag er det få, der bruger
Hvordan ved programmet, om du har ny mail i din indbakke? biff sammenligner det sidste ændrede tidspunkt (hvor indbakkefilen blev opdateret med en ny e-mail-besked) og det sidste adgangstidspunkt (sidste gang du læste din e-mail). Hvis ændringen skete senere end adgang, vil biff forstå, at der er kommet et nyt brev, og vil give dig besked om det. Mutt-e-mail-klienten fungerer stort set på samme måde.
Det sidste tidsstempel for adgang er også nyttigt, hvis du har brug for at indsamle statistik over filsystembrug og justere ydeevnen. Systemadministratorer skal vide, hvilke objekter der tilgås, så de kan konfigurere filsystemet i overensstemmelse hermed.
Men de fleste moderne programmer har ikke længere brug for denne etiket, så der var et forslag om ikke at bruge den. I 2007 diskuterede Linus Torvalds og flere andre kerneudviklere en tid i forbindelse med et ydeevneproblem. Linux-kerneudvikler Ingo Molnar gjorde følgende om atime og ext3-filsystemet:
"Det er ret mærkeligt, at alle Linux-skriveborde og -servere lider af mærkbar I/O-ydeevneforringelse på grund af konstante tidsopdateringer, selvom der kun er to rigtige brugere: tmpwatch [som kan konfigureres til at bruge ctime, så det er ikke et stort problem] og nogle sikkerhedskopieringsværktøjer."
Men folk bruger stadig nogle programmer, der har brug for denne etiket. Så fjernelse af atime vil ødelægge deres funktionalitet. Linux-kerneudviklere bør ikke krænke brugernes frihed.
Salomons løsning
Der er mange applikationer inkluderet i Linux-distributioner, og derudover kan brugere downloade og installere andre programmer efter deres behov. Dette er en vigtig fordel ved et open source OS. Men dette gør det svært at optimere dit filsystems ydeevne. Fjernelse af ressourcekrævende komponenter kan forstyrre systemet.
Som et kompromis har Linux-kerneudviklerne introduceret en ny relaytime-indstilling, der er beregnet til at skabe en balance mellem ydeevne og kompatibilitet:
atime opdateres kun, hvis den tidligere adgangstid er mindre end den aktuelle ændring eller statusændringstid... Siden Linux 2.6.30, er kernen standard til denne indstilling (medmindre noatime er angivet)... Også, da Linux 2.6.30 .1 , den sidste adgangstid for en fil opdateres altid, hvis den er mere end XNUMX dag gammel.
Moderne Linux-systemer (siden Linux 2.6.30, udgivet i 2009) bruger allerede relaytime, hvilket burde give et rigtig stort ydelsesboost. Det betyder, at du ikke behøver at konfigurere filen / Etc / fstab, og med relætid kan du stole på standarden.
Forbedring af systemets ydeevne med noatime
Men hvis du vil tune dit system for at få maksimal ydeevne, er det stadig muligt at deaktivere et tidspunkt.
Ydeevneændringen er måske ikke særlig mærkbar på meget hurtige moderne drev (såsom NVME eller Fast SSD), men der er en lille stigning der.
Hvis du ved, at du ikke bruger software, der kræver atime, kan du forbedre ydeevnen lidt ved at aktivere noatime-indstillingen i filen /etc/fstab. Efter dette vil kernen ikke konstant opdatere på et tidspunkt. Brug noatime-indstillingen, når du monterer 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 næste gang du genstarter.
Om reklamernes rettigheder
Har du brug for en server til at hoste din hjemmeside? Vores firma tilbyder
Kilde: www.habr.com