Hvordan og hvorfor noatime-indstillingen forbedrer ydeevnen af ​​Linux-systemer

Atime-opdatering påvirker systemets ydeevne. Hvad sker der der, og hvad du skal gøre ved det - læs artiklen.

Hvordan og hvorfor noatime-indstillingen forbedrer ydeevnen af ​​Linux-systemer
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:

  1. Hvornår blev filen sidst ændret (mtime)
  2. Hvornår var sidste gang filegenskaberne og metadata blev ændret (ctime)
  3. Hvornår blev filen sidst tilgået (atime)
  4. 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 bøf, men i de dage, hvor postkasser var lokale for systemet, var biff ret almindeligt.

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 pålidelige servere med en daglig eller engangsbetaling er hver server forbundet til en internetkanal på 500 megabit og er gratis beskyttet mod DDoS-angreb!

Hvordan og hvorfor noatime-indstillingen forbedrer ydeevnen af ​​Linux-systemer

Kilde: www.habr.com

Tilføj en kommentar