réponse courte: rt_priority
signifie la priorité en temps réel et pour SCHED_RR
et SCHED_FIFO
il décide combien de temps le processus obtenir.
Réponse longue
tout d'abord Linux implémente quelque chose appelé Realtime Process Scheduling
(SCHED_RR
et SCHED_FIFO
). Les processus opérant sous ces politiques ont toujours priorité sur les autres processus. Linux fournit 99 niveaux de priorité en temps réel, numérotés de 1 (le plus bas) à 99 (le plus haut).
Dans le noyau, si je me souviens bien "des nombres plus petits signifient une meilleure préférence" - plus petit p->prio
signifie une meilleure priorité.
Ici nous ce que sched_setscheduler
ressemble:
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
Et sched_param
struct sched_param {
int sched_priority; /* Scheduling priority */
};
L'entier sched_priority
, pour une politique de SCHED_RR
ou SCHED_FIFO
signifie "priorité en temps réel" que je suppose est rt_priority
. Ainsi, le noyau fait la bonne chose
- Prenez la priorité maximmum
- Soustraire la priorité en temps réel de cette valeur. Plus la priorité est grande (plus elle est soustraite), meilleur est le traitement par l'ordonnanceur.