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