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.
