J'ai remarqué qu'un petit programme de test qui appelle nanosleep montre une énorme différence dans l'utilisation du processeur lorsqu'il est exécuté sur des machines Linux avec un noyau plus récent que 2.6.22.nanosleep haute utilisation du processeur?
#include <time.h>
int main (void)
{
struct timespec sleepTime;
struct timespec returnTime;
sleepTime.tv_sec = 0;
sleepTime.tv_nsec = 1000;
while (1)
{
nanosleep(&sleepTime, &returnTime);
}
return 0;
}
(Oui, je sais que ce programme ne fait rien)
Si je compile ce et l'exécuter sur une machine openSUSE 10.3 (2.6.22.19-0.2 par défaut), le programme ne montre même pas sur la liste de processus générée par "top", m'indiquant qu'il utilise très peu de temps CPU. Si je l'exécute sur une machine openSUSE 11.1 (2.6.27.23-0.1-default), le haut montre que le programme prend 40% du temps CPU. En cours d'exécution sur Fedora 9 (2.6.25-14.fc9.i686) et Fedora 10 ont également montré la même utilisation élevée du processeur dans "top".
Y at-il eu un changement dans le noyau qui affecte cela?