Kuidas ja miks option noatime parandab Linuxi süsteemide jõudlust

Atime'i uuendamine mõjutab süsteemi jõudlust. Mis seal toimub ja mida sellega teha — loe artiklist.

Kuidas ja miks option noatime parandab Linuxi süsteemide jõudlust
Iga kord, kui ma uuendan Linuxi oma koduarvutis, pean tegelema teatud ülesannetega. Aastatega on sellest saanud harjumus: teen varukoopiaid oma failidest, kustutan süsteemi, paigaldan kõik nullist, taastan oma failid ja seejärel installin uuesti kõik oma lemmikrakendused. Muudan ka süsteemi seadeid enda soovide järgi. Mõnikord võtab see liiga palju aega. Ja hiljuti mõtlesin, kas see vaev on üldse vajalik.

atime — üks kolmest ajatemplist failide jaoks Linuxis (sellest kirjutame hiljem). Erakordselt küsisin endalt, kas peaksin atime'i ikka veel uuemates Linuxi süsteemides keelama. Kuna atime uuendatakse iga kord, kui failile ligi pääsetakse, mõistsin, et see avaldab märkimisväärset mõju süsteemi jõudlusele.
Hiljuti uuendasin Fedora 32-le ja harjumusest hakkasin atime'i keelama. Mõtlesin: kas mul on seda üldse vaja? Otsustasin uurida ja siin on minu leid.

Veidi failide ajatemplist

Kuna arusaamine nõuab mõningast tagasitee astumist ja meelde tuletamist mitmest asjast Linuxi failisüsteemide ning sellest, kuidas kernel saadab failidele ja kaustadele ajatempleid. Viimase muudetud kuupäeva nägemiseks failidel ja kaustadel võite kasutada käsku ls -l (pikendatud) või lihtsalt vaadates failihalduri teavet. Kuid lava taga jälgib Linuxi kerneli mitmeid ajatempleid failide ja kaustade jaoks:

  1. Millal faili viimati muudetud (mtime)
  2. Millal faili omadusi ja metaandmeid viimati muudetud (ctime)
  3. Millal faili viimati kutsuti (atime)
  4. Saate kasutada käsku stat, et vaadata faili või kausta andmeid. Siin on faili /etc/fstab ühelt minu testserverilt:

$ 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

Siit on näha, et see fail loodi 25. aprillil 2019, mil ma süsteemi installisin. Minu fail /etc/fstab viimati muudeti 16. maitel 2019. aastal, ja kõik muud atribuudid muudeti umbes samal ajal.

Kui ma kopeerin /etc/fstab uude faili, kuupäevad muutuvad, näidates, et see on uus fail:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Fail: fstab.bak
  Suurus: 261             Plokid: 8          IO blok: 4096   tavaline fail
Seade: b303h/45827d    Inode: 2105664     Lingid: 1
Juurdepääs: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontekst: unconfined_u:object_r:etc_t:s0
Juurdepääs: 2020-05-12 17:53:58.442659986 -0500
Muuda: 2020-05-12 17:53:58.443659981 -0500
Muuda: 2020-05-12 17:53:58.443659981 -0500
 Loomine: 2020-05-12 17:53:58.442659986 -0500

Aga kui ma lihtsalt ümber nimetan faili, ilma selle sisu muutmata, uuendab Linux ainult faili muutmise aega:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Fail: fstab.tmp
  Suurus: 261             Plokid: 8          IO blok: 4096   tavaline fail
Seade: b303h/45827d    Inode: 2105664     Lingid: 1
Juurdepääs: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontekst: unconfined_u:object_r:etc_t:s0
Juurdepääs: 2020-05-12 17:53:58.442659986 -0500
Muuda: 2020-05-12 17:53:58.443659981 -0500
Muuda: 2020-05-12 17:54:24.576508232 -0500
 Loomine: 2020-05-12 17:53:58.442659986 -0500

Need ajatempli on väga kasulikud teatud Unix-programmide jaoks. Näiteks, biff — see on programm, mis teavitab teid uue e-posti sõnumi saabumisest. Praegu kasutavad seda vähesed biff, aga nendel päevadel, mil postkastid olid süsteemi jaoks kohalikud, oli biff üsna laialdaselt levinud.

Kuidas programm teab, kas teie postkastis on uus post? Biff võrdleb viimase muudatuse aega (kui sisendfaili muudeti uue e-kirjaga) ja viimase juurde pääsu aega (viimane kord, kui te oma e-kirju lugesite). Kui muudatus on toimunud hiljem, kui ligi pääsemine, siis biff mõistab, et uus kiri on saabunud, ja teavitab teid sellest. Postikliendil Mutt on sarnane tööpõhimõte.

Viimase juurde pääsu ajatempli teave on kasulik, kui peate koguma failisüsteemi kasutamise statistikat ja kohandama jõudlust. Süsteemihaldurid peavad teadma, millistele objektidele ligipääsu on saadud, et saaksid failisüsteemi vastavalt seadistada.

Kuid enamik kaasaegseid programme ei vaja seda märget enam, seetõttu tehti ettepanek seda mitte kasutada. 2007. aastal arutasid Linus Torvalds ja mõned teised tuuma arendajad atime'i seoses jõudlusprobleemiga. Linuxi tuuma arendaja Ingo Molnar tegi atime'i ja failisüsteemi ext3 kohta järgmise märgiku:

„On üsna kummaline, et iga Linuxi töölaua ja serveri süsteem kannatab märgatava sisendi-väljundi jõudluse languse all pideva atime'i uuendamise tõttu, kuigi tegelikke kasutajaid on ainult kaks: tmpwatch [mida saab seadistada ctime'i kasutama, nii et see ei ole suur probleem] ja mõned varundustooted.”

Kuid inimesed kasutavad endiselt teatud programme, mis vajavad seda märget. Seega rikutakse atime'i eemaldamisega nende tööd. Linuxi tuuma arendajad ei tohi kasutaja vabadust piirata.

Solomoni lahendus

Linuxi distributsioonid sisaldavad mitmeid rakendusi ning kasutajad saavad vastavalt oma vajadustele laadida ja installida ka teisi programme. See on avatud lähtekoodiga operatsioonisüsteemi peamine eelis. Kuid see muudab teie failisüsteemi jõudluse optimeerimise keerulisemaks. Ressursimahukate komponentide eemaldamine võib häirida süsteemi tööd.

Kompromissina on Linuxi tuumaarendajad lisanud uue relaytime'i valiku, mis püüab tasakaalu saavutada jõudluse ja ühilduvuse vahel:

atime uuendatakse ainult siis, kui eelmine juurdepääsuaeg on väiksem kui praegune modifitseerimise või oleku muutmise aeg … Alates Linux 2.6.30-st kasutab tuum vaikimisi seda valikut (kui ei ole määratud noatime) … Samuti, alates Linux 2.6.30-st uuendatakse faili viimase juurdepääsu aega alati, kui see on üle 1 päeva.

Kaasaegsed Linuxi süsteemid (alates Linux 2.6.30-st, mis ilmus 2009. aastal) kasutavad juba relaytime'i, mis peaks tooma tõeliselt suure jõudlusparanduse. See tähendab, et teil ei ole vaja faili seadistada, /etc/fstab, ja relaytime'i abil saate toetuda vaikimisi väärtusele.

Süsteemi jõudluse tõstmine noatime abil

Kuid kui soovite oma süsteemi seadistada maksimaalse jõudluse saavutamiseks, on atime väljalülitamine endiselt võimalik.

Jõudluse muudatus ei pruugi olla väga märgatav väga kiiretel kaasaegsetel kettadel (näiteks NVME või Fast SSD), kuid seal on väike tõus.

Kui teate, et te ei kasuta tarkvara, mis nõuab atime'i, saate jõudlust veidi parandada, lisades noatime valiku faili /etc /fstab. Pärast seda ei uuendata atime'i pidevalt. Kasutage failisüsteemi monteerimisel noatime valikut:

/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

Muutused jõustuvad järgmisel taaskäivitamisel.

Reklaami õigustes

Kas vajate veebisaidi hostimiseks serverit? Meie ettevõte pakub usaldusväärseid servereid päevase või ühekordse maksmisega, iga server on ühendatud 500 Megabiti internetiühendusega ja tasuta kaitstud DDoS-rünnakute eest!

Kuidas ja miks option noatime parandab Linuxi süsteemide jõudlust

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster