Welchen Prozessplaner verwendet mein Linux-System?

10

Ich bin mir nicht ganz sicher, ob Stackoverflow oder Serverfault das Forum für diese Frage ist, aber ich versuche es hier.

Gibt es einen Befehl, den ich verwenden kann, oder eine Datei, die ich überprüfen kann, um herauszufinden, welchen Prozessplaner ich auf meinem Linux-System verwende? Ich suche nicht nach dem E / A-Planer, sondern nach dem Prozessplaner. Bitte beziehen Sie sich nicht auf Anleitungen oder Anleitungen, was ein Planer ist. Ich frage lediglich, ob es einen Befehl oder eine Datei gibt, die ich ausführen kann. Überprüfen Sie dies. Ich könnte das Dokument auf meinen Kernel überprüfen, aber ich frage mich nur, ob es einen Befehl oder eine Datei gibt, die ich überprüfen kann.

Ich war oben vielleicht etwas überflüssig, aber das liegt daran, dass die Beiträge, die ich gesehen habe, den Prozessplaner mit dem E / A-Planer zu verwechseln scheinen und die eigentliche Frage nicht zu beantworten scheinen, sondern nur Links zu dem, was ein Planer ist Das ist nicht das, wonach ich hier suche, also entschuldige mich, wenn die obigen Kommentare unhöflich klangen.

überschreiten
quelle
2
Sie implizieren, dass Linux irgendwie verschiedene Scheduler-Algorithmen haben muss, unter denen man wählen kann. Was lässt Sie denken, dass dies der Fall ist?
Stéphane Chazelas
Ich nicht, und ich glaube nicht, dass Sie den Prozessplaner in Echtzeit ändern können. Ich frage, ob es einen Befehl zum Überprüfen oder eine Datei zum Lesen des Inhalts gibt, um zu sehen, welcher aktiv ist. Aber wenn Sie wollten, könnten Sie O (1) oder O (n) wählen, wenn Sie wirklich wollten.
Überschreiten Sie den
1
AFAIK In Linux Kernel 2.6.23 ändern wir den Prozessplaner von O (1) in CFS, und wir haben keinen anderen Planer für Prozesse, der dynamisch geändert werden kann, wie für den Block-E / A-Planer.
Artur Szymczak
2
@ZanLynx Schlagen Sie vor, die ältere Frage stattdessen als Duplikat dieser Frage zu schließen, da die Frage hier bereits besser behandelt wird.
Goldlöckchen

Antworten:

7

Gibt es einen Befehl, den ich verwenden kann, oder eine Datei, die ich überprüfen kann, um herauszufinden, welchen Prozessplaner ich auf meinem Linux-System verwende?

Nein, denn im Gegensatz zu WRT für den E / A-Scheduler gibt es nur eine Möglichkeit : den CFS ("Completely Fair Scheduler"), der Echtzeitfunktionen enthält. Das CFS wird teilweise benannt, um es vom "O (1)" - Scheduler zu unterscheiden , der, wie in diesem Artikel erwähnt, in Version 2.6.23 ersetzt wurde.

Wenn Sie also einen Kernel haben, bei dem Sie sich nicht sicher sind, überprüfen Sie einfach die Versionsnummer.

Goldlöckchen
quelle
Vielen Dank für Ihre Antwort. Dann gibt es wohl keine Datei, die ich überprüfen könnte, um dies herauszufinden, ohne die Dokumentation zu konsultieren. Es wäre praktisch, schnell den Scheduler herauszufinden, der verwendet wird, um einen besseren Überblick über die Details der Parameter zu erhalten wird im Kernel verwendet, den das System verwendet.
überschreiten
1
Ich glaube nicht, dass es so etwas gibt, weil es keine Konfigurationsoption oder "verwendeten Parameter" usw. widerspiegelt. Es gibt nur einen möglichen Scheduler, den Scheduler. Derzeit wird es als "vollständig fairer Planer" bezeichnet. Dies ist ein abstraktes Designproblem, eines von vielen, die zum Kernel beitragen. Im Allgemeinen sind sie in der Quelle usw. dokumentiert. Die Frage ist also überflüssig uname -r.
Goldlöckchen
0

Versuchen:

cat /proc/config.gz | gunzip > ~/running.config
nano -w ~/running.config
CTRL + W SCHEDULE

Siehe hier: Kapitel 14: Tuning

eyoung100
quelle
Ich habe die Kernel-Konfigurationsdatei nicht, dann könnte ich sie so überprüfen. Ich verwende ein Redhat-System mit einer binären Drehzahl, das den Kernel installiert.
Überschreiten Sie den
1
Beim Durchsuchen scheinen die einzigen Variablen, die sich auf Prozessplaner beziehen, CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y und CONFIG_NET_SCHED = y zu sein, was mir nicht wirklich viel sagt
überschreiten Sie den
1
CONFIG_SCHED_SMT = y Hyperthreading Scheduler ist eingeschaltet, CONFIG_SCHED_MC = y MultiCore-Unterstützung ist eingeschaltet, CONFIG_NET_SCHED = y QoS / FairQueing ist für das Netzwerk eingeschaltet. Wie Goldlöckchen angedeutet hat, ist seine Antwort richtig.
eyoung100
4
Warum nicht einfach zgrep SCHEDULE /proc/config.gz?
Terdon
1
Mir ist klar, mein Punkt war, dass Sie einen unnötig verschlungenen Ansatz gewählt haben.
Terdon
0

cat /proc/config.gz | gunzip | nano -(oder auch cat /proc/config.gz | gunzip | gedit -) ist eine bessere Alternative zur Antwort von eyoung100 , bei der kein "Gunzipping" in eine temporäre Datei erforderlich ist.
Edit: Noch einfacher - zcat /proc/config.gz | nano -oderzcat /proc/config.gz | gedit -

Oder verwenden Sie zgrep , wie @terdon in den Kommentaren unter dieser Antwort vorgeschlagen hat. Ich empfehle nur eine andere Suchzeichenfolge:

zgrep "CONFIG_SCHED_" /proc/config.gz

Wenn Sie beispielsweise CONFIG_SCHED_yFolgendes sehen: Der Kernel ist für die Verwendung des MuQSS-Schedulers konfiguriert. Allerdings , das ist keine Garantie , dass es ist . Das Arch Wiki schlägt vor :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
März 2377
quelle