On Mon, 23 Sep 2002, Jean-Claude Schopfer wrote:

> Comment puis-je limiter la consommation CPU d'un processus ? 

J'ai r�pondu � cette question car je me souvenais vaguement d'avoir vu
quelque chose (un job scheduler, avec des classes). Mais je n'ai plus
retrouv�. Alors je r�ponds plus g�n�ralement.

C'est le scheduler du kernel Linux qui choisit les candidats � �tre
ex�cut�s sur un processeur donn�. Le scheduler standard de UNIX est un
time-sharing scheduler, qui s'arrange pour qu'il n'y ait jamais de famine
(un processus sera toujours finalement ex�cut�, ce qui a des avantages
pratiques, notamment �viter le danger de la `priority inversion' [1] qui
peut mener des syst�mes embarqu�s � l'interblocage complet (deadlock) [2])
et pour qu'il y a une r�partition juste du temps CPU. La valeur de
`niceness' influence ce choix de processus � ex�cuter.

A ma connaissance, il n'est pas possible d'impl�menter une politique,
genre limiter un processus � 25% du CPU dans tous les cas. On peut lui
donner une valeur de `niceness' plus �lev�e afin d'approximer ce
comportement. Sauf erreur la valeur de niceness 19 est sp�ciale sous
Linux, elle n'est ex�cut�e que si aucune autre processus ne doit
s'ex�cuter (pas s�r de �a, ni si cela existe encore avec les diff�rentes
classes de scheduling actuelles). 

A cela s'ajoute les diff�rentes classes de priorit� de Linux, notamment
REALTIME, mais cela sort de ce que l'on veut faire [3].

Il existe un moyen de modifier le comportement du scheduler pour le rendre
moins UNIX, via des modules chargeables. Notamment apparemment HP a �crit
un tel module [4].

Il devrait �tre relativement facile d'impl�menter une nouvelle classe de
processus limit�s � un pourcentage du total. Cela pourrait �tre un projet
de laboratoire en syst�mes d'exploitation p.ex.

Peut-�tre qu'un tel patch existe d�j�. En attendant, sauf si cela vous
int�resse, `nice' sera probablement la solution la plus efficace, voire
l'excellente proposition kill -STOP/CONT pr�c�dente.

[1] http://research.microsoft.com/~mbj/Mars_Pathfinder/Priority_Inversion.html
[2] http://catless.ncl.ac.uk/Risks/19.49.html#subj1
    http://www.time-rover.com/Priority.html (un peu de la pub)
[3] sched_setscheduler(2)
[4] http://resourcemanagement.unixsolutions.hp.com/WaRM/docs/loadable_sched.html

(c'est le premier document int�ressant que je trouve chez Microsoft
 de ma vie, donc je le signale). 


--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.

Répondre à