Planowanie procesów w czasie rzeczywistym w systemie Linux

24

Nauczyłem się kilku pojęć dotyczących planowania. Obecnie moje rozumienie jest jak poniżej.

  • Istnieją procesy w czasie rzeczywistym i procesy w czasie rzeczywistym.
  • Procesy poza czasem rzeczywistym mogą mieć nicewartości dla swojego priorytetu w zakresie od -20 do +20 . Wyższa wartość dodatnia wskazuje, że proces ma niższy priorytet.
  • Procesy działające w czasie rzeczywistym będą miały wartość wartości wymienionej -zgodnie z wyjaśnieniem w tej odpowiedzi tutaj . Wynika to głównie z tego, że procesy w czasie rzeczywistym mają wyższe priorytety niż procesy w czasie rzeczywistym, a wartość ich nie dotyczy.
  • Teraz mogę chrtzobaczyć atrybuty procesu w czasie rzeczywistym.

W przypadku procesu czasu rzeczywistego chrtdaje wynik w postaci,

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

Jak widać dla procesu 5 , priorytet ma 99, co jest najwyższym. Ponadto obowiązuje harmonogram planowaniaSCHED_FIFO

Teraz, dla procesu nie czasu rzeczywistego, chrtdaje wynik w postaci,

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

Jak widzimy dla procesu 22383 , priorytetem jest 0, a polityka planowania jest SCHED_OTHER.

pytania

  1. Czy mogę wykonać jakikolwiek proces w czasie rzeczywistym?
  2. Czy mogę ustawić inny algorytm szeregowania inny niż SCHED_OTHERproces w czasie rzeczywistym?
  3. Od tutaj , widzę też, że mogę zmodyfikować atrybut dla procesu uruchomionego jako,

    chrt -p prio pid
    

    Widzę też, że chrt -mdaje mi listę algorytmów planowania. Polecenie daje mi wynik jako:

    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
    

    Teraz, jak sugerowano powyżej, jeśli ustawię, chrt -p 55 22383który algorytm będzie używany?

Ramesh
źródło

Odpowiedzi:

19

Pytanie 1

Możliwe jest, aby użytkownik również używał priorytetu w czasie rzeczywistym dla procesu. Tę konfigurację można ustawić z /etc/security/limits.confpliku. Widzę poniżej zawartość tego pliku.

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

Jeśli sprawdzimy sekcję pozycji, zobaczymy poniższy wpis, który umożliwia ustawienie priorytetu czasu rzeczywistego dla użytkowników.

#        - rtprio - max realtime priority

Pytanie 2 i pytanie 3

Aby ustawić zasady planowania SCHED_FIFO, wprowadź:

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

Aby ustawić zasady planowania SCHED_RR, wprowadź:

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

Aby odpowiedzieć na pytanie 3, powinniśmy sprawdzić dostępne algorytmy planowania i priorytety za pomocą chrt -mpolecenia, a następnie użyć dowolnego algorytmu planowania, który odpowiada naszym potrzebom. Aby ustawić różne priorytety, możemy użyć poleceń jak wyżej.

Ramesh
źródło