Wie und warum die Option noatime die Leistung von Linux-Systemen erhöht

Das Aktualisieren von atime beeinflusst die Systemleistung. Was genau passiert da und was kann ich dagegen tun? Lesen Sie den Artikel.

Wie und warum die Option noatime die Leistung von Linux-Systemen erhöht
Jedes Mal, wenn ich Linux auf meinem Heimcomputer aktualisiere, muss ich bestimmte Aufgaben erledigen. Im Laufe der Jahre ist das zur Gewohnheit geworden: Ich erstelle Sicherungskopien meiner Dateien, lösche das System, installiere alles von Grund auf neu, stelle meine Dateien wieder her und installiere dann meine Lieblingsanwendungen erneut. Ich passe auch die Systemeinstellungen an meine BedĂŒrfnisse an. Manchmal nimmt das zu viel Zeit in Anspruch. KĂŒrzlich fragte ich mich, ob ich diesen Kopfzerbruch wirklich brauche.

atime - eine der drei Zeitstempel fĂŒr Dateien in Linux (dazu spĂ€ter mehr). Besonders habe ich mich gefragt, ob ich atime in neueren Linux-Systemen immer noch deaktivieren sollte. Da atime jedes Mal aktualisiert wird, wenn auf eine Datei zugegriffen wird, wurde mir klar, dass es einen erheblichen Einfluss auf die Systemleistung hat.
KĂŒrzlich habe ich auf Fedora 32 aktualisiert und aus Gewohnheit begonnen, atime zu deaktivieren. Ich fragte mich: Brauche ich das ĂŒberhaupt? Ich beschloss, diesem Thema auf den Grund zu gehen, und das habe ich herausgefunden.

Einige Informationen zu Dateistempeln

Um dies zu verstehen, mĂŒssen Sie einen Schritt zurĂŒckgehen und einige Dinge ĂŒber Linux-Dateisysteme und wie der Kernel Zeitstempel fĂŒr Dateien und Verzeichnisse zuweist, in Erinnerung rufen. Sie können das Datum der letzten Änderung von Dateien und Verzeichnissen sehen, indem Sie den Befehl ls -l (long) ausfĂŒhren oder einfach die Informationen dazu im Dateimanager ansehen. Aber hinter den Kulissen verfolgt der Linux-Kernel mehrere Zeitstempel fĂŒr Dateien und Verzeichnisse:

  1. Wann die Datei zuletzt geÀndert wurde (mtime)
  2. Wann die Eigenschaften und Metadaten der Datei zuletzt geÀndert wurden (ctime)
  3. Wann zuletzt auf die Datei zugegriffen wurde (atime)
  4. Sie können den Befehl stat, verwenden, um die Daten zu einer Datei oder einem Verzeichnis anzuzeigen. Hier ist eine 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 sieht man, 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 ungefÀhr zur gleichen Zeit geÀndert.

Wenn ich kopiere /etc/fstab in eine neue Datei, Àndern sich die Daten, was darauf hinweist, dass es sich um eine neue Datei handelt:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Datei: fstab.bak
  GrĂ¶ĂŸe: 261             Blöcke: 8          IO Block: 4096   regulĂ€re Datei
GerÀt: b303h/45827d    Inode: 2105664     Links: 1
Zugriff: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontext: unconfined_u:object_r:etc_t:s0
Zugriff: 2020-05-12 17:53:58.442659986 -0500
Ändern: 2020-05-12 17:53:58.443659981 -0500
Ändern: 2020-05-12 17:53:58.443659981 -0500
 Erstellung: 2020-05-12 17:53:58.442659986 -0500

Aber wenn ich die Datei einfach umbenenne, ohne ihren Inhalt zu Àndern, wird Linux nur die Zeit der DateiÀnderung aktualisieren:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Datei: fstab.tmp
  GrĂ¶ĂŸe: 261             Blöcke: 8          IO Block: 4096   regulĂ€re Datei
GerÀt: b303h/45827d    Inode: 2105664     Links: 1
Zugriff: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontext: unconfined_u:object_r:etc_t:s0
Zugriff: 2020-05-12 17:53:58.442659986 -0500
Ändern: 2020-05-12 17:53:58.443659981 -0500
Ändern: 2020-05-12 17:54:24.576508232 -0500
 Erstellung: 2020-05-12 17:53:58.442659986 -0500

Diese Zeitstempel sind sehr nĂŒtzlich fĂŒr bestimmte Unix-Programme. Zum Beispiel ist biff ein Programm, das Sie benachrichtigt, wenn eine neue Nachricht in Ihrem E-Mail-Postfach eingeht. Heutzutage nutzt kaum jemand biff, aber in den Tagen, als PostfĂ€cher lokal fĂŒr das System waren, war biff ziemlich weit verbreitet.

Wie erkennt das Programm, ob Sie neue E-Mails im Posteingang haben? biff vergleicht die Zeit der letzten Änderung (wann die Datei des Posteingangs mit einer neuen E-Mail aktualisiert wurde) und die Zeit des letzten Zugriffs (das letzte Mal, dass Sie Ihre E-Mails gelesen haben). Wenn die Änderung spĂ€ter erfolgte als der Zugriff, versteht biff, dass eine neue Nachricht angekommen ist, und informiert Sie darĂŒber. Der E-Mail-Client Mutt funktioniert Ă€hnlich.

Der Zeitstempel des letzten Zugriffs ist auch nĂŒtzlich, wenn Sie Statistiken ĂŒber die Dateisystemnutzung sammeln und die Leistung optimieren mĂŒssen. Systemadministratoren mĂŒssen wissen, auf welche Objekte zugegriffen wird, um das Dateisystem entsprechend zu konfigurieren.

Aber die meisten modernen Programme benötigen diesen Zeitstempel nicht mehr, weshalb der Vorschlag gemacht wurde, ihn nicht mehr zu verwenden. Im Jahr 2007 diskutierten Linus Torvalds und einige andere Kernel-Entwickler atime im Kontext eines Leistungsproblems. Der Linux-Kernel-Entwickler Ingo Molnar machte folgende Bemerkung zu atime und dem ext3-Dateisystem:

Es ist ziemlich seltsam, dass jeder Linux-Arbeitsplatz und Server unter einem erheblichen RĂŒckgang der E/A-Leistung leidet, aufgrund stĂ€ndiger atime-Updates, obwohl es nur zwei tatsĂ€chliche Benutzer gibt: tmpwatch [das so konfiguriert werden kann, dass es ctime verwendet, sodass dies kein großes Problem darstellt] und einige Backup-Tools.

Aber die Leute verwenden immer noch einige Programme, die dieses Tag benötigen. Das Entfernen von atime wĂŒrde ihre FunktionalitĂ€t beeintrĂ€chtigen. Die Entwickler des Linux-Kernels sollten die Freiheit des Benutzers nicht einschrĂ€nken.

Salomonische Lösung

In Linux-Distributionen sind viele Anwendungen enthalten und darĂŒber hinaus können Benutzer weitere Programme gemĂ€ĂŸ ihren BedĂŒrfnissen herunterladen und installieren. Dies ist ein entscheidender Vorteil eines Open-Source-Betriebssystems. Doch dies erschwert die Optimierung der Leistung Ihres Dateisystems. Das Entfernen von ressourcenintensiven Komponenten kann das System destabilisieren.

Als Kompromiss haben die Entwickler des Linux-Kernels eine neue Option namens relaytime implementiert, die darauf abzielt, ein Gleichgewicht zwischen Leistung und KompatibilitÀt zu gewÀhrleisten:

atime wird nur aktualisiert, wenn die vorherige Zugriffszeit kleiner ist als die aktuelle Änderungs- oder StatusĂ€nderungszeit ... Ab Linux 2.6.30 verwendet der Kernel standardmĂ€ĂŸig diese Option (es sei denn, noatime ist angegeben) ... Außerdem wird ab Linux 2.6.30 die letzte Zugriffszeit einer Datei immer aktualisiert, wenn sie mehr als einen Tag alt ist.

Moderne Linux-Systeme (beginnend mit Linux 2.6.30, das 2009 veröffentlicht wurde) nutzen bereits relaytime, was zu einem erheblichen Leistungszuwachs fĂŒhren sollte. Das bedeutet, dass Sie die Datei nicht einstellen mĂŒssen /etc/fstab, und mit relaytime können Sie sich auf den Standardwert verlassen.

Leistungssteigerung des Systems durch noatime

Wenn Sie jedoch Ihr System so konfigurieren möchten, dass Sie die maximale Leistung erzielen, ist das Deaktivieren von atime nach wie vor möglich.

Die LeistungsÀnderung ist auf sehr schnellen modernen Festplatten (wie NVME oder schnellen SSDs) möglicherweise nicht sofort bemerkbar, aber es gibt einen geringen Zuwachs.

Wenn Sie wissen, dass Sie keine Software verwenden, die atime benötigt, können Sie die Leistung leicht steigern, indem Sie die Option noatime in der Datei aktivieren. /etc /fstab. Nach diesem wird das atime nicht mehr stÀndig aktualisiert. Verwenden Sie die Option noatime beim EinhÀngen des Dateisystems:

/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 treten beim nĂ€chsten Neustart in Kraft.

Als Werbung

Benötigen Sie einen Server fĂŒr die Website? Unsere Firma bietet zuverlĂ€ssige Server mit tĂ€glicher oder einmaliger Bezahlung, jeder Server ist mit einem 500 Megabit Internetanschluss verbunden und kostenlos vor DDoS-Angriffen geschĂŒtzt!

Wie und warum die Option noatime die Leistung von Linux-Systemen erhöht

Quelle: habr.com

60GB SSD 8Gb DDR4