Planification des processus en temps réel sous Linux

24

J'ai appris quelques concepts de planification. Actuellement, ma compréhension jusqu'à présent est la suivante.

  • Il existe des processus en temps réel et des processus non en temps réel.
  • Les processus non en temps réel peuvent avoir des nicevaleurs pour leur priorité dans la plage de -20 à +20 . La valeur positive plus élevée indique que le processus a une priorité inférieure.
  • Les processus en temps réel auront une valeur de gentillesse -comme expliqué dans cette réponse ici . Cela est principalement dû au fait que les processus en temps réel ont des priorités plus élevées que les processus non en temps réel et que la valeur de gentillesse ne s'applique pas à eux.
  • Maintenant, je peux utiliser chrtpour voir les attributs en temps réel d'un processus.

Pour un processus en temps réel, le chrtdonne la sortie comme,

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

Comme nous pouvons le voir pour le processus 5 , la priorité est 99, ce qui est le plus élevé. De plus, la politique de planification estSCHED_FIFO

Maintenant, pour un processus en temps non réel, le chrtdonne la sortie comme,

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

Comme nous pouvons le voir pour le processus 22383 , la priorité est 0 et la politique de planification est SCHED_OTHER.

Des questions

  1. Est-il possible pour moi de faire n'importe quel processus en tant que processus en temps réel?
  2. Est-il possible pour moi de définir un autre algorithme de planification autre que SCHED_OTHERpour un processus non en temps réel?
  3. À partir d' ici , je vois également que je pourrais modifier l'attribut d'un processus en cours d'exécution,

    chrt -p prio pid
    

    Aussi, je vois chrt -mme donne la liste des algorithmes de planification. La commande me donne la sortie comme,

    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
    

    Maintenant, comme suggéré ci-dessus, si je définis chrt -p 55 22383quel algorithme sera utilisé?

Ramesh
la source

Réponses:

19

question 1

Un utilisateur peut également utiliser la priorité en temps réel pour un processus. Cette configuration peut être définie à partir du /etc/security/limits.conffichier. Je vois le contenu ci-dessous dans ce fichier.

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

Si nous vérifions la section article, nous voyons l'entrée ci-dessous qui permet de définir une priorité en temps réel pour les utilisateurs.

#        - rtprio - max realtime priority

Question 2 et question 3

Pour définir la stratégie de planification sur SCHED_FIFO, entrez:

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

Pour définir la stratégie de planification sur SCHED_RR, entrez:

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

Donc, pour répondre à la question 3, nous devons vérifier les algorithmes de planification disponibles et les priorités à l'aide de la chrt -mcommande, puis utiliser tout algorithme de planification qui convient à nos besoins. Pour définir différentes priorités, nous pourrions utiliser les commandes comme ci-dessus.

Ramesh
la source