GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verbessern Sie die Linux-Systemleistung mit noatime

Immer wenn ich Linux auf meinem Heimcomputer aktualisiere, habe ich eine Liste mit Aufgaben, die ich normalerweise erledige. Sie sind im Laufe der Jahre zu Gewohnheiten geworden:Ich sichere meine Dateien, lösche das System, installiere von Grund auf neu, stelle meine Dateien wieder her und installiere dann meine bevorzugten zusätzlichen Anwendungen neu. Ich mache auch ein paar Systemanpassungen. Ich mache einige dieser Anpassungen schon so lange, dass ich mich kürzlich gefragt habe, ob ich sie noch machen muss.

Eine Anpassung ist atime , das ist einer der drei Zeitstempel für jede Datei unter Linux (dazu später mehr). Insbesondere habe ich mich gefragt, ob es sich noch lohnt, atime zu deaktivieren in neueren Linux-Systemen. Seit atime jedes Mal aktualisiert wird, wenn auf die Datei zugegriffen wird, hatte ich nach meinem Verständnis einen erheblichen Einfluss auf die Systemleistung.

Ich habe kürzlich meinen Computer auf Fedora 32 aktualisiert und atime deaktiviert auf meinem aufgerüsteten System aus Gewohnheit. Aber musste ich das noch? Ich beschloss, es weiter zu untersuchen. Hier ist, was ich gefunden habe.

Ein bisschen über Dateizeitstempel

Um noatime zu verstehen , müssen Sie einen Schritt zurücktreten und ein paar Dinge über Linux-Dateisysteme verstehen und wie der Kernel Zeitstempel auf Dateien und Verzeichnisse anwendet. Sie kennen wahrscheinlich bereits das Datum der letzten Änderung von Dateien und Verzeichnissen. Sie können das in einem ls -l sehen (lange) Verzeichnisliste oder wenn Sie sich Dateidetails in einem Dateimanager ansehen. Aber hinter den Kulissen verfolgt der Linux-Kernel mehrere Zeitstempel auf Dateien und Verzeichnissen:

  1. Wann die Datei zuletzt geändert wurde (mtime )
  2. Wann die Datei zuletzt geändert wurde (ctime )
  3. Der letzte Zugriff auf die Datei (atime )

Sie können die stat verwenden Befehl, um diese Details für eine Datei oder ein Verzeichnis anzuzeigen. Hier ist ein Beispiel für /etc/fstab Datei auf 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

Aus der Ausgabe können Sie ersehen, dass diese Datei am 25. April 2019 erstellt wurde, als ich das System installierte. Meine /etc/fstab Datei wurde zuletzt am 16. Mai 2019 geändert, und alle anderen Attribute wurden ungefähr zur gleichen Zeit geändert.

Wenn ich /etc/fstab kopiere zu einer neuen Datei, ändern sich die Daten, was darauf hinweist, dass dies eine neue Datei ist:

$ 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

Aber wenn ich die Datei einfach umbenenne, ohne ihren Inhalt zu ändern, aktualisiert Linux nur die Änderungszeit für die Datei:

$ 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 Sie eine neue E-Mail-Nachricht erhalten. Heutzutage sieht man nicht viele Leute, die Biff verwenden, aber in den Tagen, als Mailboxen lokal auf Ihrem System waren, war Biff ziemlich verbreitet.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Woher weiß ein Programm, ob Sie neue E-Mails in Ihrem Posteingang haben? Biff vergleicht die Zeit der letzten Änderung (als die Posteingangsdatei mit einer neuen E-Mail-Nachricht aktualisiert wurde) und die Zeit des letzten Zugriffs (das letzte Mal, als Sie Ihre E-Mail gelesen haben). Wenn „Geändert“ jünger als „Zugegriffen“ ist, weiß biff, dass eine E-Mail-Nachricht eingetroffen ist, seit Sie die E-Mail zuletzt gelesen haben, und teilt Ihnen dies mit. Der E-Mail-Client von Mutt tut etwas Ähnliches, um Sie zu benachrichtigen, wenn neue Nachrichten eintreffen.

Diese Zeit des letzten Zugriffs ist auch nützlich, wenn Sie Dateisystemstatistiken und Leistungsoptimierungen durchführen müssen. Auf großen Linux-Systemen müssen Administratoren möglicherweise wissen, worauf zugegriffen wird, damit sie das Dateisystem entsprechend optimieren können.

Aber die meisten modernen Programme benötigen die Zeit des letzten Zugriffs nicht mehr, daher gibt es einige Argumente, sie nicht zu verwenden. 2007 diskutierten Linus Torvalds und mehrere andere Kernel-Entwickler über atime und seine Leistungsprobleme. Der Linux-Kernel-Entwickler Ingo Molnár machte diese Beobachtung über atime und das ext3-Dateisystem:

Es ist irgendwie seltsam, dass jeder Linux-Desktop und -Server durch eine merkliche Verlangsamung der IO-Leistung aufgrund der ständigen atime-Updates beeinträchtigt wird, obwohl es nur zwei echte Benutzer davon gibt:tmpwatch [das so konfiguriert werden kann, dass es ctime verwendet, sodass es kein großes Problem darstellt] und einige Backup-Tools. (Okay, und E-Mail-Benachrichtigung wohl auch.) Von Zehntausenden von Bewerbungen.

Aber die Leute benutzen immer noch einige Programme, die es brauchen, und entfernen atime würde diese Benutzerprogramme beschädigen. Und die Regel in der Linux-Kernel-Entwicklung ist, den Userspace nicht zu brechen.

Der Relatime-Kompromiss

Linux-Distributionen enthalten viele Softwareanwendungen, und Benutzer können andere Programme herunterladen und installieren, die ihren speziellen Anforderungen entsprechen. Das ist der entscheidende Vorteil eines Open-Source-Betriebssystems! Aber das macht es schwieriger, die Leistung Ihres Dateisystems zu optimieren. Benötigen Sie atime , oder wird das Entfernen etwas auf Ihrem System beschädigen?

Als Kompromiss implementierten Linux-Kernel-Entwickler eine neue Methode:relatime ist ein etwas anderes Leistungsmaß, das die Leistung mit der Kompatibilität in Einklang bringen soll. Der mount Manpage sagt dies über relatime :

Die Zugriffszeit wird nur aktualisiert, wenn die vorherige Zugriffszeit vor der aktuellen Modifizierungs- oder Änderungszeit lag. … Seit Linux 2.6.30 verwendet der Kernel standardmäßig das Verhalten dieser Option (es sei denn, noatime wurde angegeben) … Außerdem wird seit Linux 2.6.30 die letzte Zugriffszeit der Datei immer aktualisiert, wenn sie älter als 1 Tag ist.

Kurz gesagt:Moderne Linux-Systeme (seit Linux 2.6.30, veröffentlicht 2009) verwenden bereits relatime , was Ihnen einen wirklich schnellen Leistungsschub geben sollte. Das bedeutet, dass Sie Ihre /etc/fstab nicht anpassen müssen Datei und kann sich auf die relatime verlassen Kernel-Standard.

Optimieren der Systemleistung mit noatime

Aber wenn Sie Ihr System optimieren möchten, um maximale Leistung zu erzielen, deaktivieren Sie atime ist auch 2020 noch eine gültige Option.

Diese Leistungsoptimierung ist auf sehr schnellen modernen Laufwerken (wie NVME oder einer schnellen SSD) möglicherweise nicht sehr auffällig, aber es gibt immer noch einen kleinen Schub.

Wenn Sie wissen, dass Sie keine Software verwenden, die atime erfordert , dann können Sie eine leichte Leistungssteigerung erzielen, indem Sie noatime festlegen in Ihrer /etc/fstab Datei. Dies weist den Kernel an, die Zeit des letzten Zugriffs nicht zu verfolgen, um diesen winzigen Leistungseinbruch zu vermeiden, um atime kontinuierlich zu aktualisieren im Dateisystem. Fügen Sie noatime hinzu als Option für Ihre Linux-Dateisysteme, normalerweise nach dem Standardeintrag:

/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

Dies wird beim nächsten Neustart wirksam.


Linux
  1. Systemaufrufe unter Linux mit strace verstehen

  2. Sortierbefehl in Linux mit Beispielen

  3. Linux-Fehlerbehebung 101:Systemleistung

  4. Dateiberechtigungen unter Linux mit Beispiel

  5. Wie kann ich rsync mit einem FAT-Dateisystem verwenden?

Erste Schritte mit dem Linux-Betriebssystem

Linux-WC-Befehl mit Beispielen

Hilfreiche Tipps zur Verbesserung der Linux-Systemleistung

So verbessern Sie die Leistung des Laptop-Akkus unter Linux

Beheben und überwachen Sie die Linux-Systemleistung mit nmon

Verwaltung des Netzwerkdateisystems (NFS) unter Linux