Wie und warum die Option noatime die Leistung von Linux-Systemen verbessert

Das Atime-Update wirkt sich auf die Systemleistung aus. Was dort passiert und was man dagegen tun kann – lesen Sie den Artikel.

Wie und warum die Option noatime die Leistung von Linux-Systemen verbessert
Immer wenn ich Linux auf meinem Heimcomputer aktualisiere, muss ich bestimmte Probleme lösen. Im Laufe der Jahre ist das zur Gewohnheit geworden: Ich sichere meine Dateien, lösche das System, installiere alles von Grund auf, stelle meine Dateien wieder her und installiere dann meine Lieblingsanwendungen neu. Ich ändere auch die Systemeinstellungen für mich. Manchmal dauert es zu lange. Und vor kurzem habe ich mich gefragt, ob ich diese Kopfschmerzen brauche.

eine Zeit ist einer von drei Zeitstempeln für Dateien in Linux (mehr dazu später). Insbesondere habe ich mich gefragt, ob es immer noch eine gute Idee wäre, atime auf neueren Linux-Systemen zu deaktivieren. Da atime bei jedem Zugriff auf die Datei aktualisiert wird, wurde mir klar, dass dies erhebliche Auswirkungen auf die Systemleistung hat.
Ich habe kürzlich ein Upgrade auf Fedora 32 durchgeführt und aus Gewohnheit damit begonnen, atime zu deaktivieren. Ich dachte: Brauche ich das wirklich? Ich beschloss, mich mit diesem Thema zu befassen, und habe Folgendes ausgegraben.

Ein wenig über Dateizeitstempel

Um es herauszufinden, müssen Sie einen Schritt zurücktreten und sich ein paar Dinge über Linux-Dateisysteme merken und wie der Kernel Dateien und Verzeichnisse mit Zeitstempeln versieht. Sie können das Datum der letzten Änderung von Dateien und Verzeichnissen anzeigen, indem Sie den Befehl ausführen ls -l (lang) oder indem Sie sich einfach im Dateimanager Informationen dazu ansehen. Aber hinter den Kulissen verfolgt der Linux-Kernel mehrere Zeitstempel für Dateien und Verzeichnisse:

  1. Wann wurde die Datei zuletzt geändert (mtime)
  2. Wann wurden die Dateieigenschaften und Metadaten das letzte Mal geändert (ctime)
  3. Wann wurde zuletzt auf die Datei zugegriffen (atime)
  4. Sie können den Befehl verwenden Zustandum Informationen zu einer Datei oder einem Verzeichnis anzuzeigen. Hier ist die Datei / etc / fstab von einem meiner Testserver:

$ 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 sehen Sie, dass diese Datei am 25. April 2019 erstellt wurde, als ich das System installierte. Meine Datei / etc / fstab wurde zuletzt am 16. Mai 2019 geändert und alle anderen Attribute wurden etwa zur gleichen Zeit geändert.

Wenn ich kopiere / etc / fstab In eine neue Datei ändern sich die Daten, um anzuzeigen, dass es sich um eine neue Datei handelt:

$ 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

Wenn ich die Datei jedoch einfach umbenenne, ohne ihren Inhalt zu ändern, aktualisiert Linux nur den Zeitpunkt, zu dem die Datei geändert wurde:

$ 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

Diese Zeitstempel sind für bestimmte Unix-Programme sehr nützlich. Biff ist beispielsweise ein Programm, das Sie benachrichtigt, wenn Ihre E-Mail eine neue Nachricht enthält. Heutzutage nutzen nur wenige Menschen es Steak, aber in den Tagen, als Postfächer noch lokal im System vorhanden waren, war Biff weit verbreitet.

Woher weiß das Programm, ob sich neue E-Mails in Ihrem Posteingang befinden? biff vergleicht den Zeitpunkt der letzten Änderung (als die Posteingangsdatei mit einer neuen E-Mail-Nachricht aktualisiert wurde) und den Zeitpunkt des letzten Zugriffs (das letzte Mal, als Sie Ihre E-Mail gelesen haben). Erfolgt die Änderung später als beim Zugriff, erkennt biff, dass ein neuer Brief eingetroffen ist und benachrichtigt Sie darüber. Der Mutt-E-Mail-Client funktioniert ähnlich.

Der Zeitstempel des letzten Zugriffs ist auch nützlich, wenn Sie Statistiken zur Dateisystemnutzung erfassen und die Leistung optimieren müssen. Systemadministratoren müssen wissen, auf welche Objekte zugegriffen wird, damit sie das Dateisystem entsprechend konfigurieren können.

Da die meisten modernen Programme diese Bezeichnung jedoch nicht mehr benötigen, wurde vorgeschlagen, sie nicht zu verwenden. Im Jahr 2007 diskutierten Linus Torvalds und mehrere andere Kernel-Entwickler atime im Zusammenhang mit einem Leistungsproblem. Der Linux-Kernel-Entwickler Ingo Molnar machte Folgendes zu atime und dem ext3-Dateisystem:

„Es ist ziemlich seltsam, dass jeder Linux-Desktop und -Server aufgrund ständiger Aktualisierungen von atime unter einer merklichen Verschlechterung der I/O-Leistung leidet, obwohl es nur zwei echte Benutzer gibt: tmpwatch [das für die Verwendung von ctime konfiguriert werden kann, also kein großes Problem darstellt] und einige Backup-Tools.

Aber es gibt immer noch Leute, die diese Bezeichnung benötigen. Wenn Sie also atime entfernen, wird ihre Funktionalität beeinträchtigt. Linux-Kernel-Entwickler sollten die Benutzerfreiheit nicht einschränken.

Solomons Lösung

In Linux-Distributionen sind viele Anwendungen enthalten, und darüber hinaus können Benutzer je nach Bedarf andere Programme herunterladen und installieren. Dies ist ein wesentlicher Vorteil eines Open-Source-Betriebssystems. Dies macht es jedoch schwierig, die Leistung Ihres Dateisystems zu optimieren. Das Entfernen ressourcenintensiver Komponenten kann zu Systemstörungen führen.

Als Kompromiss haben die Linux-Kernel-Entwickler eine neue Relaytime-Option eingeführt, die einen Ausgleich zwischen Leistung und Kompatibilität schaffen soll:

atime wird nur aktualisiert, wenn die vorherige Zugriffszeit kürzer ist als die aktuelle Änderungs- oder Statusänderungszeit... Seit Linux 2.6.30 verwendet der Kernel diese Option standardmäßig (sofern noatime nicht angegeben ist)... Auch seit Linux 2.6.30. 1 wird der letzte Zugriffszeitpunkt einer Datei immer aktualisiert, wenn diese älter als XNUMX Tag ist.

Moderne Linux-Systeme (seit Linux 2.6.30, veröffentlicht im Jahr 2009) verwenden bereits Relaytime, was für einen wirklich großen Leistungsschub sorgen dürfte. Das bedeutet, dass Sie die Datei nicht konfigurieren müssen / etc / fstab, und mit Relaytime können Sie sich auf die Standardeinstellung verlassen.

Verbesserung der Systemleistung mit noatime

Wenn Sie Ihr System jedoch auf maximale Leistung optimieren möchten, ist die Deaktivierung von atime immer noch möglich.

Bei sehr schnellen modernen Laufwerken (wie NVME oder Fast SSD) ist die Leistungsänderung möglicherweise nicht sehr spürbar, es gibt jedoch einen kleinen Anstieg.

Wenn Sie wissen, dass Sie keine Software verwenden, die atime erfordert, können Sie die Leistung leicht verbessern, indem Sie die Option noatime in der Datei aktivieren /etc/fstab. Danach wird der Kernel nicht mehr ständig aktualisiert. Verwenden Sie beim Mounten des Dateisystems die Option noatime:

/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

Die Änderungen werden beim nächsten Neustart wirksam.

Über die Rechte der Werbung

Benötigen Sie einen Server zum Hosten Ihrer Website? Unser Unternehmen bietet zuverlässige Server Mit einer täglichen oder einmaligen Zahlung ist jeder Server an einen Internetkanal mit 500 Megabit angeschlossen und kostenlos vor DDoS-Angriffen geschützt!

Wie und warum die Option noatime die Leistung von Linux-Systemen verbessert

Source: habr.com

Kommentar hinzufügen