Je constate un comportement étrange sur l'un de mes serveurs (fonctionnant sous RHEL 6). Il semble qu'il y ait un problème avec l'ordonnanceur.
Voici le programme de test que j'utilise :
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void RunClient(int i) {
printf("Starting client %d\n", i);
while (true) {
}
}
int main(int argc, char** argv) {
for (int i = 0; i < 4; ++i) {
pid_t p_id = fork();
if (p_id == -1) {
perror("fork");
} else if (p_id == 0) {
RunClient(i);
exit(0);
}
}
return 0;
}
Cette machine possède bien plus de 4 cœurs et nous nous attendons donc à ce que tous les processus tournent à 100 %. Lorsque je vérifie en haut, l'utilisation du processeur varie. Parfois elle est divisée (100%, 33%, 33%, 33%), d'autres fois elle est divisée (100%, 100%, 50%, 50%).
Lorsque j'effectue ce test sur un autre de nos serveurs (fonctionnant sous RHEL 5), il n'y a aucun problème (c'est 100%, 100%, 100%, 100%) comme prévu. Quelle est la cause de ce problème et comment puis-je le résoudre ?
T