Existe-t-il des inconvénients à exécuter des processus avec une priorité en temps réel ( chrt -f 99
)?
Mon hypothèse est que cela combiné à une affinité garantira que toute préemption de mon processus est minimale et donc toute gigue (en particulier la latence du réseau) sera minimisée - cela n'aidera pas la latence globale, mais en ce moment, je suis plus préoccupé par la gigue.
(Noyau: 2.6.16 / 3.0)
Réponses:
L'inconvénient le plus immédiat de l'exécution d'un processus en temps réel est qu'il peut facilement éliminer tous les autres processus du système. Le résultat de votre point de vue sera que l'ordinateur ne répond pas du tout au clavier, à la souris et probablement au réseau, tant que le processus en temps réel utilise le CPU. Cela peut se produire si quelque chose se passe mal et que le processus entre dans une boucle infinie, ou même temporairement si le processus démarre un calcul à long terme sans attendre périodiquement une entrée. (Ainsi, par exemple, n'exécutez pas SETI @ home avec une priorité en temps réel.)
Un processus monothread unique sur un processeur multicœur est moins susceptible de provoquer ce problème car il existe d'autres cœurs que le processus de priorité inférieure peut utiliser. Mais si ce processus crée des processus enfants, ils hériteront de la même priorité en temps réel, de sorte que les choses peuvent devenir incontrôlables si vous ne faites pas attention.
La
sched_setscheduler(2)
page de manuel contient de bons conseils:Cela devrait être un shell sur la console - pas sous un Xterm, à moins que vous ne souhaitiez également donner la priorité à X en temps réel.
la source