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ć
nice
wartoś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ę
chrt
zobaczyć atrybuty procesu w czasie rzeczywistym.
W przypadku procesu czasu rzeczywistego chrt
daje 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, chrt
daje 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
- Czy mogę wykonać jakikolwiek proces w czasie rzeczywistym?
- Czy mogę ustawić inny algorytm szeregowania inny niż
SCHED_OTHER
proces w czasie rzeczywistym? Od tutaj , widzę też, że mogę zmodyfikować atrybut dla procesu uruchomionego jako,
chrt -p prio pid
Widzę też, że
chrt -m
daje 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 22383
który algorytm będzie używany?
źródło