b1c7b844ed86b8f3d57428afca2b449972da0935
[old-projects.git] / muxdaemon.conf
1 #Fichier de conf du muxdaemon
2 #
3 #Ce démon permet de gérer plusieurs programmes clients (comme des parseurs de
4 #mail, de log), en les lançant au moment opportun. Il permet de plus de
5 #s'affranchir de certains problèmes de sécu, pour les mails notamment, car le
6 #programme client peut tourner en n'importe quel utilisateur, les mails lui
7 #étant pipés par ce démon (qui par conséquent doit tourner en mode privilégié
8 #Le lancement des différents clients se fait selon plusieurs critères :
9 #               - charge de la machine
10 #               - "réentrance" du client (peut-on en avoir plusieurs instances en cours d'éxécution ?)
11 #               - priorité de 1 à 100, le démon essai de lancer le client de
12 #                 priorité 100 cent fois plus souvent que celui de priorité 1
13 #               - temps minium entre deux éxécutions d'un client
14 #
15
16 #Le fonctionnement du démon est le suivant :
17 #toutes les active_poll secondes, le démon filtre la liste des clients de
18 #manière à ne conserver que les runnables.  Si la charge est trop élevé pour
19 #tous les clients, le démon attand sleep_poll secondes avant de repasser en
20 #active_poll.
21 #
22
23 #Scheduler :
24 #Il est ultra basique.Il essaie de respecter les priorités, mais si un programme
25 #X de haute priorité est lancé, qu'il dure plus longtemps qu'un client Y de
26 #faible priorité, et que la charge et le nombre total de clients autorisés sont
27 #tels que Y peut être lancé, alors il l'est. Si le processus se répète, Y
28 #peut-être lancé beaucoup plus souvent que X. Mais dès que X est runnable, il
29 #est lancé. Les schedule consiste donc à maximiser le nombre de clients en cours
30 #d'éxécution, tout en respectant les priorités.
31 #
32
33 #Pour les boites maildir :
34 #actuellement, les fichier sont lus dans le répertoire new/ pipés vers le
35 #client, puis déplacés dans cur/
36
37
38 #Cette commande doit renvoyer la charge
39 ldcmd = "cat /proc/loadavg | sed 's/^\([^ ]* \).*$/\1/'"
40
41 #Fichier de log
42 error_log = "/home/julien/toto"
43
44 #Active poll : Temps d'attente entre deux lancements en mode actif
45 active_poll = 0
46
47 #Time to wait when load is too high for any client in sec
48 sleep_poll = 10
49
50 #Nombre total de clients à ne pas dépasser simultanément
51 max_client = 15
52
53 <client erreurs>
54         #Charge au dessus de laquelle ce programme ne doit plus être lancé
55         max_load=0.4
56         #Mbox
57         #Si mbox existe, des lots de nb_mails y sont lus et pipés dans command
58         #si mbox termine par un "/", c'est une boite maildir
59         #Implémenté pour les boites maildir uniquement
60         mbox=/var/mail/xorg-errors/
61         #nombre de mails à traité ((1 commande executée par mail)
62         nb_mails=5
63         #Command to launch (datas are piped in it if maildir mbox defined)
64         command="cat >/dev/null"
65         #Peut-on lancer plusieurs instances de ce prog simultanément ? yes or no
66         allow_many=no
67         #Priority relative aux autres de 1 à 100
68         #Le client de priorité 100 est lancé 100 fois plus souvent que celui de
69         #priorité 1 (si possible)
70         priority=100
71         #Lancer le prog en tant que :
72         run_as_user=julien
73         run_as_group=julien
74         #Temps minimum entre deux lancements de ce client en sec
75         min_schedule=0
76 </client>
77
78
79 <client toto>
80         max_load=0.5
81         command="/bin/sleep 1"
82         allow_many=yes
83         priority=99
84 </client>
85
86 <client titi>
87         max_load=0.5
88         command="/bin/sleep 3"
89         allow_many=yes
90         priority=57
91         run_as_user=jb
92         run_as_group=jb
93 </client>
94
95 <client tutu>
96         max_load=0.5
97         command="/bin/sleep 2"
98         allow_many=yes
99         priority=69
100 </client>
101