web-dev-qa-db-fra.com

Linux SCHED_OTHER, SCHED_FIFO et SCHED_RR - différences

Quelqu'un peut-il expliquer les différences entre SCHED_OTHER, SCHED_FIFO et SCHED_RR?

Merci

27
eve

SCHED_FIFO et SCHED_RR sont des politiques dites "en temps réel". Ils implémentent la planification en temps réel à priorité fixe spécifiée par la norme POSIX. Les tâches avec ces politiques préemptent toutes les autres tâches, qui peuvent ainsi facilement tomber en famine (si elles ne libèrent pas le CPU).

La différence entre SCHED_FIFO et SCHED_RR est que parmi les tâches ayant la même priorité, SCHED_RR effectue un round robin avec une certaine tranche de temps; SCHED_FIFO, à la place, a besoin de la tâche pour céder explicitement le processeur.

SCHED_OTHER est la stratégie de planification de partage de temps à tour de rôle courante qui planifie une tâche pour une certaine tranche de temps en fonction des autres tâches exécutées dans le système.

Mise à jour : depuis Linux 3.14, il existe une politique supplémentaire appelée SCHED_DEADLINE . Cette stratégie implémente l'algorithme CBS (Constant Bandwidth Server) au-dessus des files d'attente Earliest Deadline First . Chaque tâche dans le cadre de cette stratégie se voit attribuer un délai et la tâche la plus proche est exécutée. La meilleure ressource décrivant cet algorithme est Planification des délais dans le noyau Linux .

Mise à jour 2 : depuis Linux 4.13, SCHED_DEADLINE a remplacé CBS par l'algorithme Greedy Reclamation of Unused Bandwidth (GRUB) .

47
Claudio