Prozesse bilden den Kern eines laufenden Linux-Systems. Wenn ein Programm in einen Prozess umgewandelt wird (also wenn es ausgeführt wird), werden viele Attribute gesetzt. Manchmal möchten Sie diese Attribute möglicherweise zur Laufzeit ändern. Es gibt ein Befehlszeilentool chrt damit können Sie dies tun.
In diesem Tutorial werden wir dieses Dienstprogramm mit einigen leicht verständlichen Beispielen besprechen. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele in diesem Artikel auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.
Linux-chrt-Befehl
Wie bereits im Einführungsabschnitt oben erwähnt, können Sie mit dem Befehl chrt die Echtzeitattribute eines Prozesses manipulieren. Es folgt die Syntax:
chrt [options] -p [prio] pid
Und so erklärt es die Manpage des Tools:
chrt sets or retrieves the real-time scheduling attributes of an exist?
ing pid, or runs command with the given attributes. Both policy (one
of SCHED_OTHER, SCHED_FIFO, SCHED_RR, SCHED_BATCH, or SCHED_IDLE) and
priority can be set and retrieved.
The SCHED_BATCH policy is supported since Linux 2.6.16. The SCHED_IDLE
policy is supported since Linux 2.6.23.
The SCHED_RESET_ON_FORK flag for policies SCHED_RR and SCHED_FIFO is
supported since Linux 2.6.31.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Befehl chrt funktioniert.
Q1. Wie verwende ich den chrt-Befehl?
Angenommen, Sie sind daran interessiert, die Planungsrichtlinie oder Priorität des Gedit-Prozesses zu manipulieren. Das erste, was Sie also tun müssen, ist, die Prozess-ID für diesen Prozess abzurufen, was Sie mit dem Pidof-Befehl tun können.
pidof gedit
Auf meinem System hat der obige Befehl beispielsweise die PID '6063' als Ausgabe ausgegeben. Um nun die aktuelle Planungsrichtlinie und Priorität für den Gedit-Prozess abzurufen, verwenden Sie chrt auf folgende Weise:
chrt -p 6063
Und hier ist die Ausgabe dieses Befehls auf meinem System:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Q2. Wie bringt man chrt dazu, minimale/maximale gültige Prioritäten anzuzeigen?
Dies kann mit der Befehlszeilenoption -m erfolgen.
chrt -m
Beispielsweise erzeugte der obige Befehl auf unserem System die folgende Ausgabe:
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0
Sie müssen sich auf diese Werte für die Prioritätseinstellung beziehen, während Sie Planungsrichtlinien festlegen.
Q3. Wie lege ich eine Planungsrichtlinie auf SCHED_BATCH fest?
Dies kann mit der Befehlszeilenoption -b erfolgen.
Zum Beispiel:
chrt -b -p 0 6063
Wenn Sie nun die Planungsrichtlinie für gedit erneut mit dem folgenden Befehl überprüfen:
chrt -p 6063
Sie sollten eine Ausgabe ähnlich der folgenden erhalten, die anzeigt, dass die von Ihnen vorgenommene Änderung angewendet wurde:
pid 6063's current scheduling policy: SCHED_BATCH
pid 6063's current scheduling priority: 0
Q4. Wie setze ich eine Planungsrichtlinie auf SCHED_FIFO?
Dies kann mit der Befehlszeilenoption -f erfolgen.
chrt -f -p 20 6063
Wie in den vorherigen Fragen und Antworten können Sie die Änderungen mit chrt -p überprüfen Befehl. Bitte beachten Sie, dass Sie möglicherweise Root-Rechte benötigen, um die Befehlszeilenoption -f zu verwenden.
F5. Wie lege ich eine Planungsrichtlinie auf SCHED_OTHER fest?
Dies kann mit der Befehlszeilenoption -o erfolgen.
chrt -o -p 0 6063
Verwenden Sie zur Überprüfung den Befehl chrt -p.
chrt -p 6063
Das Folgende ist die Ausgabe in meinem Fall:
pid 6063's current scheduling policy: SCHED_OTHER
pid 6063's current scheduling priority: 0
Schlussfolgerung
Zugegeben, der Befehl chrt ist nicht die Art von Werkzeug, das Sie jeden Tag verwenden können. Verdammt, Sie brauchen es vielleicht nicht einmal, bis Sie sich mit der Systemverwaltung beschäftigen oder an Kernel-Scheduling-bezogenen Arbeiten arbeiten. Es lohnt sich jedoch zumindest zu wissen, dass ein solches Tool existiert. Weitere Informationen zu chrt finden Sie auf der Manpage.