Kiel kaj kial la opcio noatime plibonigas la agadon de Linuksaj sistemoj

Atime-ĝisdatigo influas sisteman rendimenton. Kio okazas tie kaj kion fari pri tio - legu la artikolon.

Kiel kaj kial la opcio noatime plibonigas la agadon de Linuksaj sistemoj
Kiam ajn mi ĝisdatigas Linukson en mia hejma komputilo, mi devas solvi iujn problemojn. Tra la jaroj, ĉi tio fariĝis kutimo: mi rezervas miajn dosierojn, viŝas la sistemon, instalas ĉion de nulo, restarigas miajn dosierojn, poste reinstalas miajn plej ŝatatajn aplikaĵojn. Mi ankaŭ ŝanĝas la sistemajn agordojn laŭ mi mem. Kelkfoje necesas tro da tempo. Kaj lastatempe mi demandis min, ĉu mi bezonas ĉi tiun kapdoloron.

tempo estas unu el tri tempomarkoj por dosieroj en Linukso (pli pri tio poste). Precipe, mi scivolis ĉu ankoraŭ estus bona ideo malŝalti atime sur pli lastatempaj Linuksaj sistemoj. Ĉar atime estas ĝisdatigita ĉiufoje kiam la dosiero estas alirita, mi rimarkis, ke ĝi havas signifan efikon al sistema rendimento.
Mi lastatempe ĝisdatigis al Fedora 32 kaj, pro kutimo, komencis malŝaltante atime. Mi pensis: ĉu mi vere bezonas ĝin? Mi decidis studi ĉi tiun aferon kaj jen kion mi elfosis.

Iom pri dosieraj tempomarkoj

Por eltrovi ĝin, vi devas fari paŝon malantaŭen kaj memori kelkajn aferojn pri Linukso-dosiersistemoj kaj kiel la kerno tempostampas dosierojn kaj dosierujojn. Vi povas vidi la lastan modifitan daton de dosieroj kaj dosierujoj rulante la komandon ls -l (longa) aŭ simple rigardante informojn pri ĝi en la dosieradministranto. Sed malantaŭ la scenoj, la Linukso-kerno kontrolas plurajn tempomarkojn por dosieroj kaj dosierujoj:

  1. Kiam la dosiero estis laste modifita (mtime)
  2. Kiam estis la lastan fojon la dosierpropraĵoj kaj metadatenoj estis ŝanĝitaj (ctime)
  3. Kiam la dosiero estis laste alirita (atime)
  4. Vi povas uzi la komandon statpor vidi informojn pri dosiero aŭ dosierujo. Jen la dosiero / ktp / fstab de unu el miaj testserviloj:

$ 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

Ĉi tie vi povas vidi, ke ĉi tiu dosiero estis kreita la 25-an de aprilo 2019 kiam mi instalis la sistemon. Mia dosiero / ktp / fstab estis laste modifita la 16-an de majo 2019, kaj ĉiuj aliaj atributoj estis ŝanĝitaj ĉirkaŭ la sama tempo.

Se mi kopias / ktp / fstab al nova dosiero, la datoj ŝanĝiĝas por indiki ke ĝi estas nova dosiero:

$ 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

Sed se mi nur renomas la dosieron sen ŝanĝi ĝian enhavon, Linukso ĝisdatigos nur la tempon kiam la dosiero estis modifita:

$ 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

Ĉi tiuj tempomarkoj estas tre utilaj por certaj Uniksaj programoj. Ekzemple, biff estas programo, kiu sciigas vin kiam estas nova mesaĝo en via retpoŝto. Nuntempe malmultaj homoj uzas biff, sed en la tagoj kiam leterkestoj estis lokaj al la sistemo, biff estis sufiĉe ofta.

Kiel la programo scias ĉu vi havas novan poŝton en via enirkesto? biff komparas la lastan modifitan tempon (kiam la enirkesto dosiero estis ĝisdatigita kun nova retpoŝta mesaĝo) kaj la lastan alirtempon (la lastan fojon kiam vi legis vian retpoŝton). Se la ŝanĝo okazis poste ol aliro, tiam biff komprenos, ke nova letero alvenis kaj sciigos vin pri tio. La retpoŝta kliento Mutt funkcias tre same.

La lasta alira tempomarko ankaŭ estas utila se vi bezonas kolekti statistikojn pri uzado de dosiersistemaj kaj agordi rendimenton. Sistemadministrantoj devas scii kiajn objektojn estas alireblaj, por ke ili povu agordi la dosiersistemon laŭe.

Sed la plej multaj modernaj programoj ne plu bezonas ĉi tiun etikedon, do estis propono ne uzi ĝin. En 2007, Linus Torvalds kaj pluraj aliaj kernprogramistoj diskutis pri tempo en la kunteksto de agado-temo. Linukso-kerna programisto Ingo Molnar faris la sekvan punkton pri atime kaj la dosiersistemo ext3:

"Estas sufiĉe strange, ke ĉiu Linuksa labortablo kaj servilo suferas rimarkindan I/O-efikecmalboniĝon pro konstantaj atime-ĝisdatigoj, kvankam ekzistas nur du realaj uzantoj: tmpwatch [kiu povas esti agordita por uzi ctime, do ĝi ne estas granda problemo] kaj iuj rezerva iloj."

Sed homoj ankoraŭ uzas kelkajn programojn, kiuj bezonas ĉi tiun etikedon. Do forigi atime rompos ilian funkciecon. Linuksaj kernaj programistoj ne devas malobservi uzantliberecon.

La solvo de Salomono

Estas multaj aplikaĵoj inkluzivitaj en Linukso-distribuoj kaj krome, uzantoj povas elŝuti kaj instali aliajn programojn laŭ siaj bezonoj. Ĉi tio estas ŝlosila avantaĝo de malfermfonta OS. Sed ĉi tio malfacilas optimumigi la rendimenton de via dosiersistemo. Forigi rimedintensajn komponentojn povas interrompi la sistemon.

Kiel kompromiso, la programistoj de Linukso-kerno enkondukis novan relaŭdan opcion, kiu celas atingi ekvilibron inter rendimento kaj kongruo:

atime estas ĝisdatigita nur se la antaŭa alirtempo estas malpli granda ol la nuna modifa aŭ statusŝanĝa tempo... Ekde Linukso 2.6.30, la kerno uzas ĉi tiun opcion defaŭlte (krom se noatime estas specifita)... Ankaŭ ekde Linukso 2.6.30 . 1, la lasta alirtempo de dosiero ĉiam estas ĝisdatigita se ĝi estas pli ol XNUMX-taga.

Modernaj Linuksaj sistemoj (ekde Linukso 2.6.30, publikigita en 2009) jam uzas relajstempon, kiu devus doni vere grandan rendimentan akcelon. Ĉi tio signifas, ke vi ne bezonas agordi la dosieron / ktp / fstab, kaj kun relaytempo vi povas fidi je la defaŭlta.

Plibonigante sisteman rendimenton kun noatime

Sed se vi volas agordi vian sistemon por akiri maksimuman rendimenton, malŝalti tempon ankoraŭ eblas.

La rendimentoŝanĝo eble ne estas tre rimarkebla sur tre rapidaj modernaj diskoj (kiel NVME aŭ Fast SSD), sed estas malgranda pliiĝo tie.

Se vi scias, ke vi ne uzas programaron, kiu postulas tempon, vi povas iomete plibonigi rendimenton ebligante la opcion noatime en la dosiero. /etc/fstab. Post ĉi tio, la kerno ne konstante ĝisdatiĝos. Uzu la opcion noatime dum muntado de la dosiersistemo:

/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

La ŝanĝoj efektiviĝos la venontan fojon kiam vi rekomencos.

Pri la Rajtoj de Reklamado

Ĉu vi bezonas servilon por gastigi vian retejon? Nia kompanio proponas fidindaj serviloj kun ĉiutaga aŭ unufoja pago, ĉiu servilo estas konektita al interreta kanalo de 500 Megabitoj kaj estas protektita kontraŭ DDoS-atakoj senpage!

Kiel kaj kial la opcio noatime plibonigas la agadon de Linuksaj sistemoj

fonto: www.habr.com

Aldoni komenton