Hoe en waarom de noatime-optie de prestaties van Linux-systemen verbetert

Een tijdige update heeft invloed op de systeemprestaties. Wat daar gebeurt en wat u eraan kunt doen - lees het artikel.

Hoe en waarom de noatime-optie de prestaties van Linux-systemen verbetert
Telkens wanneer ik Linux op mijn thuiscomputer update, moet ik bepaalde problemen oplossen. In de loop der jaren is dit een gewoonte geworden: ik maak een back-up van mijn bestanden, wis het systeem, installeer alles helemaal opnieuw, herstel mijn bestanden en installeer vervolgens mijn favoriete applicaties opnieuw. Ik wijzig ook de systeeminstellingen naar eigen inzicht. Soms kost het te veel tijd. En onlangs vroeg ik me af of ik deze hoofdpijn nodig had.

een tijd is een van de drie tijdstempels voor bestanden in Linux (hierover later meer). Ik vroeg me vooral af of het nog steeds een goed idee zou zijn om af en toe uit te schakelen op recentere Linux-systemen. Omdat atime elke keer dat het bestand wordt geopend, wordt bijgewerkt, realiseerde ik me dat dit een aanzienlijke impact heeft op de systeemprestaties.
Ik heb onlangs een upgrade naar Fedora 32 uitgevoerd en begon, uit gewoonte, af en toe uit te schakelen. Ik dacht: heb ik het echt nodig? Ik besloot dit probleem te bestuderen en dit is wat ik heb opgegraven.

Iets over de tijdstempels van bestanden

Om dit uit te zoeken, moet je een stapje terug doen en een paar dingen onthouden over Linux-bestandssystemen en hoe de kernel bestanden en mappen een tijdstempel geeft. U kunt de datum van de laatste wijziging van bestanden en mappen zien door de opdracht uit te voeren ls -l (lang) of gewoon door informatie erover te bekijken in Bestandsbeheer. Maar achter de schermen houdt de Linux-kernel verschillende tijdstempels bij voor bestanden en mappen:

  1. Wanneer is het bestand voor het laatst gewijzigd (mtime)
  2. Wanneer waren de bestandseigenschappen en metadata voor het laatst gewijzigd (ctime)
  3. Wanneer is het bestand voor het laatst geopend (eenmalig)
  4. U kunt het commando gebruiken: staatom informatie over een bestand of map te bekijken. Hier is het bestand / Etc / fstab van een van mijn testservers:

$ 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

Hier kunt u zien dat dit bestand op 25 april 2019 is aangemaakt toen ik het systeem installeerde. Mijn bestand / Etc / fstab is voor het laatst gewijzigd op 16 mei 2019 en alle andere kenmerken zijn rond dezelfde tijd gewijzigd.

Als ik kopieer / Etc / fstab naar een nieuw bestand, veranderen de datums om aan te geven dat het een nieuw bestand is:

$ 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

Maar als ik het bestand gewoon hernoem zonder de inhoud te wijzigen, zal Linux alleen het tijdstip bijwerken waarop het bestand is gewijzigd:

$ 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

Deze tijdstempels zijn erg handig voor bepaalde Unix-programma's. Biff is bijvoorbeeld een programma dat u waarschuwt wanneer er een nieuw bericht in uw e-mail staat. Tegenwoordig gebruiken maar weinig mensen bief, maar in de tijd dat mailboxen lokaal in het systeem aanwezig waren, was biff heel gebruikelijk.

Hoe weet het programma of er nieuwe e-mail in uw inbox zit? biff vergelijkt de tijd voor de laatste wijziging (toen het inboxbestand werd bijgewerkt met een nieuw e-mailbericht) en de laatste toegangstijd (de laatste keer dat u uw e-mail las). Als de wijziging later heeft plaatsgevonden dan de toegang, zal biff begrijpen dat er een nieuwe brief is ontvangen en u hiervan op de hoogte stellen. De e-mailclient van Mutt werkt op vrijwel dezelfde manier.

Het tijdstempel van de laatste toegang is ook handig als u gebruiksstatistieken van het bestandssysteem wilt verzamelen en de prestaties wilt afstemmen. Systeembeheerders moeten weten welke objecten worden benaderd, zodat ze het bestandssysteem dienovereenkomstig kunnen configureren.

Maar de meeste moderne programma's hebben dit label niet langer nodig, dus er was een voorstel om het niet te gebruiken. In 2007 bespraken Linus Torvalds en verschillende andere kernelontwikkelaars een keer in de context van een prestatieprobleem. Linux-kernelontwikkelaar Ingo Molnar maakte het volgende punt over atime en het ext3-bestandssysteem:

"Het is nogal vreemd dat elke Linux-desktop en -server merkbare verslechtering van de I/O-prestaties ondervindt als gevolg van constante atime-updates, ook al zijn er maar twee echte gebruikers: tmpwatch [die kan worden geconfigureerd om ctime te gebruiken, dus het is geen groot probleem] en een aantal back-uptools."

Maar mensen gebruiken nog steeds sommige programma's die dit label nodig hebben. Dus als u atime verwijdert, wordt hun functionaliteit verbroken. Linux-kernelontwikkelaars mogen geen inbreuk maken op de vrijheid van gebruikers.

Salomo's beslissing

Er zijn veel applicaties opgenomen in Linux-distributies en bovendien kunnen gebruikers andere programma's downloaden en installeren op basis van hun behoeften. Dit is een belangrijk voordeel van een open source besturingssysteem. Maar dit maakt het moeilijk om de prestaties van uw bestandssysteem te optimaliseren. Het verwijderen van resource-intensieve componenten kan het systeem verstoren.

Als compromis hebben de Linux-kernelontwikkelaars een nieuwe relaytime-optie geïntroduceerd die bedoeld is om een ​​evenwicht te vinden tussen prestaties en compatibiliteit:

atime wordt alleen bijgewerkt als de vorige toegangstijd korter is dan de huidige wijzigings- of statuswijzigingstijd... Sinds Linux 2.6.30 gebruikt de kernel deze optie standaard (tenzij noatime is opgegeven)... Ook sinds Linux 2.6.30 . 1 wordt de laatste toegangstijd van een bestand altijd bijgewerkt als het meer dan XNUMX dag oud is.

Moderne Linux-systemen (sinds Linux 2.6.30, uitgebracht in 2009) gebruiken al relaytime, wat een hele grote prestatieverbetering zou moeten opleveren. Dit betekent dat u het bestand niet hoeft te configureren / Etc / fstab, en met relaytime kunt u vertrouwen op de standaardwaarde.

Systeemprestaties verbeteren met noatime

Maar als u uw systeem wilt afstemmen op maximale prestaties, is het nog steeds mogelijk om dit op tijd uit te schakelen.

De prestatieverandering is misschien niet erg merkbaar op zeer snelle moderne schijven (zoals NVME of Fast SSD), maar daar is wel een kleine toename te zien.

Als u weet dat u geen software gebruikt die atime vereist, kunt u de prestaties enigszins verbeteren door de noatime-optie in het bestand in te schakelen /etc/fstab. Hierna zal de kernel niet voortdurend worden bijgewerkt. Gebruik de noatime optie bij het mounten van het bestandssysteem:

/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

De wijzigingen worden van kracht de volgende keer dat u opnieuw opstart.

Als advertentie

Heeft u een server nodig om uw website te hosten? Ons bedrijf biedt betrouwbare servers met een dagelijkse of eenmalige betaling is elke server verbonden met een internetkanaal van 500 Megabit en gratis beveiligd tegen DDoS-aanvallen!

Hoe en waarom de noatime-optie de prestaties van Linux-systemen verbetert

Bron: www.habr.com

Voeg een reactie