J'ai testé avec le protocole suivant :
charge :
void main(int argc, char **argv)
{
double f;
while (1)
f++;
}
go.sh :
#!/bin/sh
exec 1>result
nb=0
while [ 1 -eq 1 ] ; do
echo "---- $(date) ----"
echo "$nb processus de charge"
top -n 1 |head -n 4
echo
./charge &
./charge &
./charge &
sleep 1
done
(j'ai oublié d'incrémenter la variable contenant le nombre de process)
Voici les résultats :
---- mardi 9 octobre 2007, 10:03:53 (UTC+0200) ----
0 processus de charge
top - 10:03:54 up 1:12, 3 users, load average: 1023.14, 911.63, 532.59
Tasks: 1284 total, 1228 running, 56 sleeping, 0 stopped, 0 zombie
Cpu(s): 43.1%us, 1.7%sy, 0.0%ni, 53.4%id, 1.5%wa, 0.3%hi, 0.1%si, 0.0%st
Mem: 449508k total, 319700k used, 129808k free, 23052k buffers
---- mardi 9 octobre 2007, 10:03:56 (UTC+0200) ----
0 processus de charge
top - 10:03:57 up 1:12, 3 users, load average: 1023.14, 911.63, 532.59
Tasks: 1287 total, 1231 running, 56 sleeping, 0 stopped, 0 zombie
Cpu(s): 43.1%us, 1.7%sy, 0.0%ni, 53.3%id, 1.5%wa, 0.3%hi, 0.1%si, 0.0%st
Mem: 449508k total, 319984k used, 129524k free, 23052k buffers
---- mardi 9 octobre 2007, 10:03:58 (UTC+0200) ----
0 processus de charge
top - 10:03:59 up 1:12, 3 users, load average: 16.10, 917.00, 536.36
Tasks: 1290 total, 1234 running, 56 sleeping, 0 stopped, 0 zombie
Cpu(s): 43.1%us, 1.7%sy, 0.0%ni, 53.3%id, 1.5%wa, 0.3%hi, 0.1%si, 0.0%st
Mem: 449508k total, 320244k used, 129264k free, 23068k buffers
Pour le "load average", je ne sais pas si c'est l'affichage de top qui boucle à une certaine valeur (1024? ou est-ce une coincidence?), ou si c'est le système qui boucle.
Le killall charge dans une console voisine a permis de retrouver instantannément la main fluide.
La charge maximale que je cherche à déterminer n'est pas celle d'exploitation du cpu, mais la charge même de l'os.
Il va falloir que je trouve mieux que top pour me donner l'indication que je cherche, puis je le ferai tourner sur une machine (ma sun biproc, qui pourra tourner quelques heures/jours si nécessaire).
Selon moi, je pense qu'on atteindra la limite soit avec le nombre de processus max, soit avec la limitation mémoire. C'est juste ce que je cherche à vérifier.
Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"