So überprüfen Sie, ob ein Kernel-Scheduler 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 lernen Sie, wie Sie die Konfiguration des Kernel-Schedulers (Prozessplaners) in Linux überprüfen können. Der Scheduler ist eine grundlegende Komponente, die steuert, wie Prozesse die CPU-Zeit teilen. Das Verständnis seiner Einstellungen ist für die Leistungsanalyse und die Fehlerbehebung von entscheidender Bedeutung.

Durch praktische Schritte werden Sie drei Methoden zur Untersuchung der Scheduler-Einstellungen kennenlernen: die Verwendung des sysctl-Befehls zum Anzeigen von Kernel-Parametern, die Prüfung des /proc/sys/kernel-Dateisystems auf Scheduler-bezogene Dateien und die Untersuchung der Kernel-Logs über dmesg auf Scheduler-spezifische Nachrichten. Diese Techniken bieten verschiedene Perspektiven auf den aktuellen Zustand und das Verhalten des Schedulers.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/help -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} linux/man -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} linux/ls -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} linux/cat -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} linux/cd -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} linux/grep -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} linux/env -.-> lab-558724{{"So überprüfen Sie, ob ein Kernel-Scheduler in Linux konfiguriert ist"}} end

Überprüfen der Scheduler-Einstellungen mit sysctl kernel.sched

In diesem Schritt werden wir untersuchen, wie man die Einstellungen des Kernel-Schedulers (Prozessplaners) mithilfe des sysctl-Befehls überprüft. Der Scheduler ist ein entscheidender Bestandteil des Linux-Kernels, der bestimmt, welcher Prozess auf der CPU läuft und wie lange. Das Verständnis seiner Einstellungen kann für die Leistungsoptimierung und die Fehlerbehebung hilfreich sein.

Der sysctl-Befehl wird verwendet, um Kernel-Parameter zur Laufzeit zu ändern. Wir können ihn auch nutzen, um die aktuellen Werte dieser Parameter anzuzeigen. Kernel-Parameter sind in einer hierarchischen Struktur organisiert, ähnlich einem Dateisystem.

Um Parameter im Zusammenhang mit dem Kernel-Scheduler anzuzeigen, können wir sysctl mit dem Präfix kernel.sched verwenden.

Öffnen Sie Ihr Terminal, falls es noch nicht geöffnet ist. Sie finden das Xfce Terminal-Symbol auf der linken Seite Ihres Desktops.

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

sysctl kernel.sched

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die verschiedene Scheduler-bezogene Parameter und ihre aktuellen Werte anzeigt:

kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 8000000
kernel.sched_wakeup_granularity_ns = 9000000
kernel.sched_latency_ns = 24000000
kernel.sched_migration_cost_ns = 50000
kernel.sched_nr_migrate = 32
kernel.sched_tunable_scaling = 1
kernel.sched_domain.cpu0.domain0 = ...
kernel.sched_domain.cpu0.domain1 = ...
...

Die genaue Ausgabe kann je nach spezifischer Kernel-Version und Systemkonfiguration geringfügig variieren. Dieser Befehl gibt Ihnen einen Überblick darüber, wie der Scheduler derzeit konfiguriert ist.

Das Verständnis jeder dieser Parameter geht über den Rahmen dieses Einführungslabs hinaus, aber der wichtigste Punkt ist, dass sysctl kernel.sched der Befehl ist, den Sie verwenden sollten, wenn Sie diese Einstellungen untersuchen möchten.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Überprüfen des Schedulers in /proc/sys/kernel

Im vorherigen Schritt haben wir sysctl verwendet, um Kernel-Parameter anzuzeigen. Eine andere Möglichkeit, diese Parameter zuzugreifen und manchmal zu ändern, ist über das /proc-Dateisystem. Das /proc-Dateisystem ist ein virtuelles Dateisystem, das Informationen über Prozesse und andere Systeminformationen bereitstellt.

Kernel-Parameter, auf die über sysctl zugegriffen werden kann, werden oft im Verzeichnis /proc/sys widergespiegelt. Insbesondere können Scheduler-bezogene Parameter unter /proc/sys/kernel/ gefunden werden.

Navigieren wir nun zu diesem Verzeichnis und listen dessen Inhalt auf. Wir verwenden den cd-Befehl, um das Verzeichnis zu ändern, und ls, um Dateien und Verzeichnisse aufzulisten.

Geben Sie den folgenden Befehl ein, um Ihr aktuelles Verzeichnis auf /proc/sys/kernel/ zu ändern:

cd /proc/sys/kernel/

Listen Sie nun die Dateien in diesem Verzeichnis auf:

ls

Sie werden eine lange Liste von Dateien sehen, wobei jede Datei einen Kernel-Parameter darstellt. Suchen Sie nach Dateien, die mit sched_ beginnen. Diese Dateien entsprechen den kernel.sched-Parametern, die wir mit sysctl gesehen haben.

...
sched_child_runs_first
sched_latency_ns
sched_migration_cost_ns
sched_min_granularity_ns
sched_nr_migrate
sched_rr_timeslice_ms
sched_rt_period_us
sched_rt_runtime_us
sched_shares_window_ns
sched_tunable_scaling
sched_wakeup_granularity_ns
...

Sie können den Inhalt dieser Dateien mit Befehlen wie cat anzeigen. Beispielsweise geben Sie den folgenden Befehl ein, um den Wert von sched_latency_ns anzuzeigen:

cat sched_latency_ns

Sie sollten eine Zahl sehen, die dem gleichen Wert entspricht, den Sie für kernel.sched_latency_ns bei der Verwendung von sysctl gesehen haben.

24000000

Dies zeigt, dass die Informationen, die von sysctl kernel.sched bereitgestellt werden, aus Dateien im Verzeichnis /proc/sys/kernel/ stammen. Während sysctl oft bequemer zum Anzeigen und Ändern von Parametern ist, gibt das Verständnis des /proc-Dateisystems Ihnen einen tieferen Einblick in die Art und Weise, wie der Kernel seinen internen Zustand zugänglich macht.

Klicken Sie auf Weiter, um fortzufahren.

Prüfen der Scheduler-Logs mit dmesg

In diesem letzten Schritt werden wir Kernel-Nachrichten im Zusammenhang mit dem Scheduler (Prozessplaner) mithilfe des dmesg-Befehls betrachten. dmesg ist ein Befehl, der die Kernel-Ringpuffer-Nachrichten anzeigt. Diese Nachrichten werden vom Kernel während des Bootvorgangs und der Laufzeit generiert und können wertvolle Informationen über Hardware, Treiber und Systemereignisse, einschließlich Scheduler-Aktivitäten, enthalten.

Während sysctl und /proc/sys die aktuelle Konfiguration anzeigen, können dmesg manchmal Nachrichten im Zusammenhang mit der Scheduler-Initialisierung oder wichtigen Ereignissen anzeigen.

Um die Kernel-Nachrichten anzuzeigen, geben Sie den folgenden Befehl ein:

dmesg

Dies wird wahrscheinlich eine sehr lange Ausgabe erzeugen, da alle Kernel-Nachrichten seit dem Systemstart angezeigt werden. Um spezifisch Nachrichten im Zusammenhang mit dem Scheduler zu finden, können wir den grep-Befehl verwenden, um die Ausgabe zu filtern. Wir suchen nach Zeilen, die das Wort "sched" enthalten.

Geben Sie den folgenden Befehl ein:

dmesg | grep sched

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

Sie könnten eine Ausgabe ähnlich der folgenden sehen, die Nachrichten im Zusammenhang mit dem Scheduler während des Systemstarts anzeigt:

[    0.000000] Linux version ... (gcc version ...) #... SMP ...
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[    0.000000] PID scheduler: ...
[    0.000000] Mount-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[    0.000000] Mountpoint-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[    0.000000] CPU: Testing write buffer coherency: ...
[    0.000000] smpboot: CPU0: ...
[    0.000000] setup_percpu: System has ... CPUs.
[    0.000000] percpu: Embedded ... pages/cpu s...
[    0.000000] pcpu: PCPU: ...
[    0.000000] Built 1-level schedule group tree
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is ...
[    0.000000] rcu: Adjusting scheduler-enlistment delay with ...
[    0.000000] rcu: RCU restricting CPUs from NR_CPUS=... to nr_cpu_ids=...
[    0.000000] rcu: rcu_sched detected stalls on CPUs/tasks:
...

Wiederum wird die genaue Ausgabe variieren. Dieser Befehl ist nützlich, um Probleme zu diagnostizieren oder zu verstehen, wie der Scheduler vom Kernel initialisiert wurde.

Sie haben nun drei verschiedene Methoden gelernt, um Informationen über den Linux-Kernel-Scheduler zu erhalten: die Verwendung von sysctl für aktuelle Parameter, die Prüfung von Dateien in /proc/sys/kernel/ und die Überprüfung von Kernel-Nachrichten mit dmesg.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man die Kernel-Scheduler-Konfiguration in Linux mit zwei Hauptmethoden überprüft. Zunächst haben wir den Befehl sysctl kernel.sched verwendet, um verschiedene Scheduler-bezogene Parameter und deren aktuelle Werte anzuzeigen. Dies gibt uns einen Überblick über die Laufzeiteinstellungen des Schedulers.

Zweitens haben wir das /proc-Dateisystem als alternative Möglichkeit zur Zugriffs auf Kernel-Parameter untersucht. Insbesondere haben wir uns auf den Pfad /proc/sys/kernel konzentriert, der die über sysctl zugänglichen Parameter widerspiegelt. Diese Schritte haben gezeigt, wie man die Konfiguration des Kernel-Schedulers sowohl über Befehlszeilen-Utilities als auch über das virtuelle Dateisystem prüfen kann.