Echtzeit-Prozessplanung unter Linux

24

Ich habe einige Scheduling-Konzepte gelernt. Derzeit ist mein Verständnis soweit wie unten.

  • Es gibt Echtzeitprozesse und Nicht-Echtzeitprozesse.
  • Nicht-Echtzeit-Prozesse können niceWerte für ihre Priorität im Bereich von -20 bis +20 haben . Der höhere positive Wert zeigt an, dass der Prozess eine niedrigere Priorität hat.
  • Die Echtzeit - Prozesse wird eine Nettigkeit Wert aufgelistet haben , -wie in dieser Antwort erklärt hier . Dies liegt hauptsächlich daran, dass die Echtzeitprozesse höhere Prioritäten haben als die Nicht-Echtzeitprozesse, und dass der Wert der Freundlichkeit für sie nicht gilt.
  • Jetzt kann ich chrtdie Echtzeitattribute eines Prozesses anzeigen.

Für einen Echtzeitprozess chrtgibt die Ausgabe wie folgt aus:

chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99

Wie wir für Prozess 5 sehen können , ist die Priorität 99, was die höchste ist. Die Planungsrichtlinie lautet auchSCHED_FIFO

Für einen Prozess, der nicht in Echtzeit ausgeführt wird, chrtgibt das folgende Ergebnis aus:

chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0

Wie wir für Prozess 22383 sehen können , ist die Priorität 0 und die Planungsrichtlinie ist SCHED_OTHER.

Fragen

  1. Kann ich einen Prozess in Echtzeit ausführen?
  2. Kann ich einen anderen Scheduling-Algorithmus als SCHED_OTHERfür einen Nicht-Echtzeit-Prozess festlegen ?
  3. Von hier aus sehe ich auch, dass ich das Attribut für einen laufenden Prozess wie folgt ändern könnte:

    chrt -p prio pid
    

    Ich sehe auch, chrt -mgibt mir die Liste der Scheduling-Algorithmen. Der Befehl gibt mir die Ausgabe als,

    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
    

    Nun, wie oben vorgeschlagen, wenn ich festlegen, chrt -p 55 22383welcher Algorithmus verwendet wird?

Ramesh
quelle

Antworten:

19

Frage 1

Ein Benutzer kann die Echtzeitpriorität auch für einen Prozess verwenden. Diese Konfiguration kann aus einer /etc/security/limits.confDatei festgelegt werden. Ich sehe den folgenden Inhalt in dieser Datei.

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>

Wenn wir den Elementabschnitt überprüfen, sehen wir den folgenden Eintrag, der es ermöglicht, eine Echtzeitpriorität für die Benutzer festzulegen.

#        - rtprio - max realtime priority

Frage 2 und Frage 3

Geben Sie Folgendes ein SCHED_FIFO, um die Planungsrichtlinie auf festzulegen:

chrt -f -p [1..99] {pid}

Geben Sie Folgendes ein SCHED_RR, um die Planungsrichtlinie auf festzulegen:

chrt -r -p [1..99] {pid}

Um Frage 3 zu beantworten, sollten wir die verfügbaren Planungsalgorithmen und die Prioritäten mithilfe des chrt -mBefehls überprüfen und dann einen beliebigen Planungsalgorithmus verwenden, der unseren Anforderungen entspricht. Um verschiedene Prioritäten zu setzen, können wir die Befehle wie oben verwenden.

Ramesh
quelle