Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faut-il des processus méchants ?

9 réponses
Avatar
Thomas Baruchel
Par simple curiosité :

après des années d'utilisation, je me rends compte que si l'occasion
de donner une "gentillesse" positive aux processus est fréquente, voire
banale, je n'ai jamais réellement eu à rendre des processus méchants
(mon utilisation correspond à celle d'un ordinateur personnel) ;
les rares fois où je l'ai fait, j'admets sans réserve que c'était forcé
(plus pour le plaisir d'essayer), sale (obligé de passer en root), voire
même que s'il avait réellement fallu utiliser 'nice' cela aurait dû être
dans l'autre sens (exemple : gros calculs).

Du coup j'aimerais avoir des bons exemple de cas où le coefficient négatif
apporte réellement quelque chose. Pourriez-vous me donner ce genre
d'exemples ?

--
Thomas Baruchel

9 réponses

Avatar
Pascal Bourguignon
Thomas Baruchel writes:

Par simple curiosité :

après des années d'utilisation, je me rends compte que si l'occasion
de donner une "gentillesse" positive aux processus est fréquente, voire
banale, je n'ai jamais réellement eu à rendre des processus méchants
(mon utilisation correspond à celle d'un ordinateur personnel) ;
les rares fois où je l'ai fait, j'admets sans réserve que c'était forcé
(plus pour le plaisir d'essayer), sale (obligé de passer en root), voire
même que s'il avait réellement fallu utiliser 'nice' cela aurait dû être
dans l'autre sens (exemple : gros calculs).

Du coup j'aimerais avoir des bons exemple de cas où le coefficient négatif
apporte réellement quelque chose. Pourriez-vous me donner ce genre
d'exemples ?


Sur une machine chargée, je donne une plus grande priorité à mplayer
pour éviter les à-coups.

Mais je ne suis pas sur que ça soit vraiment efficace...

--
__Pascal Bourguignon__ http://www.informatimago.com/
"Specifications are for the weak and timid!"

Avatar
david
Patrick Lamaizière wrote:
Pascal Bourguignon écrivait :

Sur une machine chargée, je donne une plus grande priorité à mplayer
pour éviter les à-coups.

Mais je ne suis pas sur que ça soit vraiment efficace...


Sur le démon son de KDE artsd ça améliore un peu.


Pour artsd, sur ma machine (linux-x86) bonatoufer, le nice ne suffit
pas. Alors je fais un truc pas très catholique au lancement du système :

nohup sh -c "while true; do chrt -f 99 su nobody -c "/usr/bin/artsd -a alsa
-d -u -n -p 1025"; killall xmms mplayer; sleep 5; done" >& /tmp/aRts.log &

et je positionne
ARTS_SERVER=localhost:1025
dans le profile global.

Cependant, il me semble que chrt est spécifique linux.

Le "while true" sert à relancer artsd des fois qu'il s'écroule. Ça arrive et
je ne sais pas pourquoi.

Il faut faire gaffe avec chrt, si jamais il prenait au processus (artsd)
l'envie de prendre tout le cpu, la boite serait bonne pour le reset.

A ce sujet, j'ai une question, en rapport avec le contraire du sujet de ce
thread. J'aimerais avoir des processus (très gentils) de calcul en tâche de
fond, qui eux auraient bien envie de prendre en permanence 100% du cpu (je
sais que ce n'est pas très écologique...) mais qui ne doivent absolument pas
gêner les autres.

La solution immédiate est "nice -n +19 commande...". Mais elle n'est que
moyennement satisfaisante. On peut avec chrt mettre en priorité absolue un
processus devant les autres (comme chrt -f nn). Y a-t-il un moyen (en
particulier sous linux ou solaris) de rendre le gentil processus réellement
sous-prioritaire ?
J'entend par là : si rien n'est actif dans la file d'attente, alors on donne
la main à ce processus, mais si un ou plusieurs des autres processus normaux
se réveille alors le gentil processus n'a plus la main jusqu'à ce que les
autres se rendorment. (sous linux, chrt -f -1 n'est pas possible sans
toucher au noyo, ce que je n'ai pas encore essayé).

david


Avatar
R12y
On Tue, 06 Sep 2005 21:38:43 +0000, david wrote:

nohup sh -c "while true; do chrt -f 99 su nobody -c "/usr/bin/artsd -a alsa
-d -u -n -p 1025"; killall xmms mplayer; sleep 5; done" >& /tmp/aRts.log &


rien que ça? :-)

--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/

Avatar
Vincent Bernat
OoO La nuit ayant déjà recouvert d'encre ce jour du mardi 06 septembre
2005, vers 23:38, david disait:

J'entend par là : si rien n'est actif dans la file d'attente, alors on donne
la main à ce processus, mais si un ou plusieurs des autres processus normaux
se réveille alors le gentil processus n'a plus la main jusqu'à ce que les
autres se rendorment.


À ce que je sache, c'est exactement ce qu'il se passe. Si un processus
a une gentillesse plus élevée qu'un autre, ce dernier prend la main
aussi longtemps qu'il le veut sur le premier. Encore faut-il qu'il
réussisse à la garder...
--
Keep it right when you make it faster.
- The Elements of Programming Style (Kernighan & Plauger)

Avatar
Arnaud Giersch
Mardi le 06 septembre 2005, vers 23:38:43 (CEST), david a écrit:

J'aimerais avoir des processus (très gentils) de calcul en tâche de
fond, qui eux auraient bien envie de prendre en permanence 100% du
cpu (je sais que ce n'est pas très écologique...) mais qui ne
doivent absolument pas gêner les autres.


Bonjour,

Du temps où je jouais avec , j'utilisais loadwatch pour faire
ce genre de chose (http://freshmeat.net/projects/loadwatch/). En
gros, il stoppe le processus lorsque la charge du système dépasse un
certain seuil, et le réveille quand elle retombe sous un autre seuil.

Arnaud

Avatar
Laurent Wacrenier
Arnaud Giersch écrit:
Du temps où je jouais avec , j'utilisais loadwatch pour faire
ce genre de chose (http://freshmeat.net/projects/loadwatch/). En
gros, il stoppe le processus lorsque la charge du système dépasse un
certain seuil, et le réveille quand elle retombe sous un autre seuil.


Sur FreeBSD, il y a des commande "idprio" ou "rtprio" qui permettent
de n'attribuer des ressources CPU que lorsque personne d'autre ne les
utilise ou au contraire en priorité.

Avatar
david
Vincent Bernat wrote:
OoO La nuit ayant déjà recouvert d'encre ce jour du mardi 06 septembre
2005, vers 23:38, david disait:

J'entend par là : si rien n'est actif dans la file d'attente, alors on donne
la main à ce processus, mais si un ou plusieurs des autres processus normaux
se réveille alors le gentil processus n'a plus la main jusqu'à ce que les
autres se rendorment.


À ce que je sache, c'est exactement ce qu'il se passe. Si un processus
a une gentillesse plus élevée qu'un autre, ce dernier prend la main
aussi longtemps qu'il le veut sur le premier. Encore faut-il qu'il
réussisse à la garder...


Sous linux avec un noyau 2.6, ce n'est pas le cas, du moins avec les
priorités standard de nice. La priorité est relative, pas absolue. sinon
avec les commandes suivante, j'aurais bloqué ma machine :

:~>nice -n +19 sh -c "while true; do true; done" &
[1] 3573
:~>nice -n -19 sh -c "while true; do true; done" &
[2] 3577

top renvoie (il y a d'autres processus) :

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3577 root 6 -19 4812 1244 944 R 94.9 0.1 0:35.96 sh
3573 root 39 19 4808 1240 944 R 0.6 0.1 0:03.55 sh

david


Avatar
david
Laurent Wacrenier <lwa@ teaser . fr> wrote:
Arnaud Giersch écrit:
Du temps où je jouais avec , j'utilisais loadwatch pour faire
ce genre de chose (http://freshmeat.net/projects/loadwatch/). En
gros, il stoppe le processus lorsque la charge du système dépasse un
certain seuil, et le réveille quand elle retombe sous un autre seuil.


Sur FreeBSD, il y a des commande "idprio" ou "rtprio" qui permettent
de n'attribuer des ressources CPU que lorsque personne d'autre ne les
utilise ou au contraire en priorité.


Il semble que rtprio de freebsd est équivalent à chrt sous linux. Par contre
idprio est effectivement ce que je cherchais et ce qu'il manque à linux.
Merci pour l'info, et aussi pour loadwatch.

Un jour, je trouverai le temps de découvrir tous les bienfaits de freebsd :-]
Un autre jour, je trouverai le temps de regarder deplus près le code du
scheduler de linux [-;

david


Avatar
andrea ferraris
david ecrit:

Un jour, je trouverai le temps de découvrir tous les bienfaits de freebsd :-]
Un autre jour, je trouverai le temps de regarder deplus près le code du
scheduler de linux [-;


Jammais essaie', mais dans la configuration du 2.6 on peut choisir
parmis differents scheduler et il me semble qu'il y a aussi des options
pour le real time.

Andrea