Sur Linux SCHED_FIFO et SCHED_RR
Je suis en train d'écrire un très petit démon qui doit rester réactif même lorsqu'un système est sous stress sévère. Je suis en train de regarder les différences entre les SCHED_FIFO et SCHED_RR, en ce qui concerne la planification, ainsi que d'essayer de déterminer un sensible priorité.
Qui planificateur serait approprié pour une petite critique démon de surveillance, que la priorité serait raisonnablement sûr? Je suis toujours en train de monter un peu floue lorsqu'on essaie de comprendre les différences entre les deux.
Mon programme est l'allocation en vertu de 3k (et utilise mlockall()), il écrit à propos de 600 octets à xenbus puis dort, mais il est impossible pour moi de dire combien de temps (en ms) qu'il nous faut pour écrire les données.. depuis ce qui est écrit dépend d'un fichier de configuration.
Merci d'avance pour toutes les suggestions /explications.
OriginalL'auteur Tim Post | 2009-01-01
Vous devez vous connecter pour publier un commentaire.
L'infâme
pchdtvr
programme, qui capte les signaux de TV numérique, utiliseSCHED_FIFO
à assurez-vous que le TÉLÉVISEUR paquets sont écrits sur le disque, peu importe quoi. Il peut capturer des 4 montre à la fois tout en jouant à Doom sur un vieil ordinateur.Le programme est infâme parce qu'il a été publié sous la licence GPL et l'auteur tenté de révoquer la licence GPL rétroactivement. Cette loi a provoqué un mineur de firestorm. De toute façon, vous pouvez trouver une version récente d'étude à http://frequal.com/pmn/pchdtvr.html.
La fureur sur slashdot a été incroyable. yro.slashdot.org/article.pl?no_d2=1&sid=08/01/26/0341210
OriginalL'auteur Norman Ramsey
SCHED_FIFO ne peut pas être préempté (contexte de tension à un autre processus), sauf si un autre processus de plus haute priorité s'affiche dans la file d'exécution.
SCHED_RR peut être préempté par un quantum de temps (délai donné à un processus à exécuter).
Ils sont à la fois "en temps réel" les priorités de linux basés sur des planificateurs.
OriginalL'auteur Alex
Je ne suis pas un expert pour la planification de projets, mais jetez un oeil à
il détaille ce que la différence entre les différents algorithmes d'ordonnancement sont, et de fournir des liens vers d'autres fonctions de programmation. SCHED_FIFO semble effectivement assez dangereuse, mais est décrit comme le plus agressif de la planification:
Attention à ne pas verrouiller votre système. Personnellement, je ne fais quelques tests empiriques de voir ce que la priorité va le mieux et comment ils se comportent exactement.
J'ai (peut) aussi appel sched_yield() une fois que le contenu de sysinfo() deviennent d'accord.. c'est à dire le système n'est plus sous tension. Peut-être que je vais rester avec FIFO, mais écrire logique de passer RT uniquement lorsque le système est (ou seront bientôt) a souligné, puis revenir en arrière lorsque son calme.
hm, oui, je pense que fifo semble raisonnable pour cette tâche.
OriginalL'auteur Johannes Schaub - litb
Si tous vos autres tâches d'utiliser le planificateur de tâches, il ne fait aucune différence; SCHED_FIFO et SCHED_RR, seuls affectent la planification de ces tâches avec les autres.
Donc sur un système normal, il ne fait aucune différence. FIFO est plus facile à comprendre, donc à utiliser que je pense.
Si vous avez plusieurs tâches de priorités différentes, seule la plus élevée sera exécuté si ils sont tous prêts à être exécuté (et il y a un seul cœur de PROCESSEUR)
OriginalL'auteur MarkR