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?

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.