So prüfen Sie, ob ein Datenträgerscheduler in Linux konfiguriert ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir untersuchen, wie man den konfigurierten Datenträger-Scheduler (Disk Scheduler) in einer Linux-Umgebung ermittelt. Das Verständnis des aktiven E/A-Schedulers (I/O Scheduler) ist für die Leistungseinstellung und die Optimierung von Speicheroperationen von entscheidender Bedeutung.

Wir werden dies erreichen, indem wir das /sys-Dateisystem untersuchen, um direkt die Scheduler-Konfiguration für Blockgeräte abzufragen, die Scheduler-Informationen im Kernel-Ringpuffer (Kernel Ring Buffer) mit dem Befehl dmesg überprüfen und die udev-Regeln untersuchen, die die Gerätekonfiguration, einschließlich des Schedulers, beeinflussen können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/ls -.-> lab-558708{{"So prüfen Sie, ob ein Datenträgerscheduler in Linux konfiguriert ist"}} linux/cat -.-> lab-558708{{"So prüfen Sie, ob ein Datenträgerscheduler in Linux konfiguriert ist"}} linux/grep -.-> lab-558708{{"So prüfen Sie, ob ein Datenträgerscheduler in Linux konfiguriert ist"}} end

Prüfen des Schedulers mit cat /sys/block/*/queue/scheduler

In diesem Schritt werden wir untersuchen, wie man den von Ihren Blockgeräten in Linux verwendeten E/A-Scheduler (I/O Scheduler) prüft. Der E/A-Scheduler ist eine Kernel-Komponente, die die Reihenfolge festlegt, in der Block-E/A-Operationen (Block I/O Operations) an Speichergeräte übermittelt werden. Verschiedene Scheduler sind für verschiedene Workloads optimiert.

Wir können diese Informationen finden, indem wir Dateien im /sys-Dateisystem betrachten. Das /sys-Dateisystem ist ein virtuelles Dateisystem, das eine Schnittstelle zu Kernel-Datenstrukturen bietet.

Um den Scheduler für alle Blockgeräte zu prüfen, können wir den cat-Befehl zusammen mit einem Platzhalter verwenden. Der Platzhalter * passt auf beliebige Zeichen, sodass /sys/block/*/queue/scheduler die Scheduler-Datei für jedes unter /sys/block/ aufgeführte Blockgerät übereinstimmt.

Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist. Sie können dies tun, indem Sie auf das Symbol Xfce Terminal auf der linken Seite Ihres Desktops klicken.

Geben Sie jetzt den folgenden Befehl ein und drücken Sie die Eingabetaste:

cat /sys/block/*/queue/scheduler

Sie werden eine Ausgabe ähnlich der folgenden sehen:

noop [deadline] cfq
noop [deadline] cfq

Die Ausgabe zeigt die verfügbaren Scheduler an, und der derzeit verwendete ist in eckigen Klammern [] eingeschlossen. In diesem Beispiel ist der deadline-Scheduler derzeit für die Blockgeräte aktiv.

Das Verständnis, welcher Scheduler aktiv ist, kann für die Leistungseinstellung wichtig sein, insbesondere in Serverumgebungen oder Systemen mit spezifischen Speicheranforderungen.

Überprüfen des Schedulers in dmesg

Im vorherigen Schritt haben wir den derzeit aktiven E/A-Scheduler (I/O Scheduler) mithilfe des /sys-Dateisystems geprüft. Ein weiterer Ort, an dem man Informationen über die Kernel- und Geräteinitialisierung finden kann, ist der Kernel-Ringpuffer (Kernel Ring Buffer), der mit dem Befehl dmesg angezeigt werden kann.

Der Befehl dmesg gibt den Nachrichtenpuffer des Kernels aus. Dieser Puffer enthält Nachrichten, die vom Kernel während des Bootvorgangs und der Laufzeit erzeugt werden, einschließlich Informationen über erkannte Hardware und Gerätetreiber.

Wir können dmesg verwenden, um Nachrichten in Bezug auf die Blockgeräte und ihre konfigurierten Scheduler während des Systemstartvorgangs anzuzeigen. Da die Ausgabe von dmesg recht lang sein kann, werden wir den Befehl grep verwenden, um die Ausgabe zu filtern und Zeilen zu finden, die das Wort "scheduler" enthalten.

Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

dmesg | grep scheduler

Das Symbol | wird als Pipe bezeichnet. Es nimmt die Ausgabe des Befehls auf der linken Seite (dmesg) und sendet sie als Eingabe an den Befehl auf der rechten Seite (grep). grep scheduler sucht dann in der empfangenen Eingabe nach Zeilen, die das Wort "scheduler" enthalten.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

[    X.XXXXXX] io scheduler noop registered
[    X.XXXXXX] io scheduler deadline registered
[    X.XXXXXX] io scheduler cfq registered
[    X.XXXXXX] sdX: [sd-mod] Asking for cache data failed
[    X.XXXXXX] sdX: [sd-mod] Assuming drive cache: write through
[    X.XXXXXX] sdX: [sd-mod] Enabled discard support
[    X.XXXXXX] sdX: [sd-mod] **Using deadline scheduler**

Suchen Sie nach Zeilen, die "Using [Scheduler-Name] scheduler" erwähnen. Dies bestätigt, welcher Scheduler für Ihre Blockgeräte während des Starts ausgewählt wurde. Die Ausgabe kann je nach spezifischer Systemkonfiguration etwas variieren, aber Sie sollten Erwähnungen von registrierten Schedulern und dem verwendeten Scheduler sehen.

Diese Methode liefert historische Informationen aus dem Bootvorgang, während die Prüfung des /sys-Dateisystems Ihnen den aktuellen Zustand zeigt. Beide sind nützliche Methoden, um die E/A-Konfiguration (I/O-Konfiguration) Ihres Systems zu verstehen.

Prüfen der udev-Regeln in /etc/udev/rules.d

In den vorherigen Schritten haben wir gelernt, wie man den aktiven E/A-Scheduler (I/O Scheduler) mithilfe von /sys und dmesg prüft. Jetzt schauen wir uns an, wie das System möglicherweise so konfiguriert ist, dass der Scheduler automatisch festgelegt wird, wenn Geräte erkannt werden. Dies wird oft von udev übernommen.

udev ist ein Gerätemanager für den Linux-Kernel. Es verwaltet Gerätenodes in /dev und behandelt alle Benutzerraumereignisse (User Space Events), wenn Hardwaregeräte dem System hinzugefügt oder daraus entfernt werden. udev verwendet Regeln, um Geräte zu identifizieren und Aktionen auszuführen, wie z. B. die Festlegung von Berechtigungen oder die Konfiguration von Geräteparametern wie dem E/A-Scheduler.

udev-Regeln werden normalerweise im Verzeichnis /etc/udev/rules.d/ gespeichert. Diese Dateien haben die Dateierweiterung .rules. Wir können diese Dateien prüfen, um festzustellen, ob es Regeln gibt, die speziell den E/A-Scheduler für bestimmte Geräte festlegen.

Zuerst listen wir die Dateien im Verzeichnis /etc/udev/rules.d/ mit dem Befehl ls auf:

ls /etc/udev/rules.d/

Sie werden eine Liste von Dateien sehen, die möglicherweise einige in Bezug auf Blockgeräte oder Speicher enthalten. Die Ausgabe könnte etwa so aussehen:

10-snapd.rules  50-cloudimg-settings.rules  70-snap.core.rules  70-snap.lxd.rules  70-snap.microk8s.rules  70-snap.snapd.rules  70-snap.snapd-desktop-integration.rules  99-vmware-scsi-udev.rules

Jetzt schauen wir uns eine dieser Dateien an, um zu sehen, ob wir Regeln in Bezug auf Scheduler finden können. Wir verwenden den Befehl cat, um den Inhalt einer Datei anzuzeigen. Beispielsweise schauen wir uns die Datei 99-vmware-scsi-udev.rules an (der genaue Dateiname kann je nach Umgebung etwas variieren, aber suchen Sie nach einer, die mit Speicher oder Geräten in Verbindung steht):

cat /etc/udev/rules.d/99-vmware-scsi-udev.rules

Sie könnten Regeln sehen, die bestimmte Geräteattribute abgleichen und dann Eigenschaften festlegen. Suchen Sie nach Zeilen, die das Schlüsselwort ATTR verwenden, um Geräteattribute abzugleichen, und die Eigenschaft ATTR{queue/scheduler}, um den Scheduler festzulegen.

Beispielsweise könnte eine Regel zur Festlegung des deadline-Schedulers so aussehen:

## Set scheduler for VMware SCSI devices
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{idVendor}=="VMware", ATTRS{idModel}=="VMware Virtual S", ATTR{queue/scheduler}="deadline"

Diese Regel passt auf Blockgeräte (SUBSYSTEM=="block") mit bestimmten Hersteller- und Modellattributen und legt ihren Scheduler auf deadline fest, wenn sie hinzugefügt oder geändert werden.

Durch die Prüfung dieser Regeln können Sie verstehen, wie der Standard-E/A-Scheduler auf Ihrem System konfiguriert sein könnte.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man den konfigurierten Datenträgerscheduler (Disk Scheduler) in Linux mit zwei Hauptmethoden prüft. Zunächst haben wir das /sys-Dateisystem genutzt, indem wir den Inhalt von /sys/block/*/queue/scheduler mit dem Befehl cat untersucht haben. Dies hat es uns ermöglicht, die verfügbaren Scheduler zu sehen und den derzeit verwendeten zu identifizieren, der durch eckige Klammern gekennzeichnet ist.

Zweitens haben wir den Kernel-Ringpuffer (Kernel Ring Buffer) mit dem Befehl dmesg untersucht, um die Scheduler-Informationen während der Geräteinitialisierung zu überprüfen. Dies bietet eine alternative Möglichkeit, den aktiven Scheduler zu bestätigen und Einblicke in die Kernel-Nachrichten in Bezug auf Speichergeräte zu erhalten. Schließlich haben wir kurz die Prüfung der udev-Regeln in /etc/udev/rules.d als möglichen Ort für die Scheduler-Konfiguration angesprochen, obwohl die detaillierten Schritte hierfür im bereitgestellten Inhalt nicht vollständig angegeben wurden.