Ordonnancement sous-prioritaire

Le
David Gauchard
Salut,

Je cherche à rendre un processus particulier complètement sous-prioritaire
par rapport à l'ensemble de tous les autres processus de ma machine. Je
voudrais que ce processus ne soit ordonnancé uniquement lorsque le
processeur n'a rien à faire d'autre. La solution 'nice -n 19 monexec' ne me
satisfait pas car le processus prend malgré tout du temps cpu même si un
autre processus "normal" de priorité 0 (ou même -19) demande lui aussi 100%
de cpu.

Il semble que la politique SCHED_FIFO (à opposer à SCHED_OTHER qui est la
politique d'ordonnancement par défaut) corresponde à ce que je faire. J'ai
constaté à mes dépends son bon fonctionnement via l'utilitaire chrt du
package schedutils (avec "chrt -f -p 1 n" avec n le pid du script "while
true; do true; done", ce qui a complètement bloqué ma machine sur
l'exécution de ce script).

Le soucis est qu'il semble qu'il ne soit pas possible de positionner une
priorité négative à la politique SCHED_FIFO (valeur possibles: 1 à 99), ce
qui fait que n'importe quelle processus ordonnancé avec SCHED_FIFO prend
systématiquement le pas sur les processus standards de type SCHED_OTHER de
priorité fixe 0 (moins prioritaire que 1).

Je m'interroge donc sur le moyen de rendre mon processus exclusivement sous
prioritaire - linux 2.4 ou 2.6 -i386:
$ chrt -m
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_OTHER min/max priority : 0/0

Merci,

--
david

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Francois Romieu
Le #7143681
Bonsoir,

In article [...]
Le soucis est qu'il semble qu'il ne soit pas possible de positionner une
priorité négative à la politique SCHED_FIFO (valeur possibles: 1 à 99), ce
qui fait que n'importe quelle processus ordonnancé avec SCHED_FIFO prend
systématiquement le pas sur les processus standards de type SCHED_OTHER de
priorité fixe 0 (moins prioritaire que 1).



kernel/sched.c (2.4.26 ou presque):
[...]
/*
* Valid priorities for SCHED_FIFO and SCHED_RR are 1..99, valid
* priority for SCHED_OTHER is 0.
*/
retval = -EINVAL;
if (lp.sched_priority goto out_unlock;

Vous pouvez modifier le test d'infériorité à 0 précédent.

--
Ueimor

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Publicité
Poster une réponse
Anonyme