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.