Hohe CPU-Auslastung im Nanoschlaf?

Mir ist aufgefallen, dass ein kleines Testprogramm, das nanosleep aufruft, einen großen Unterschied in der CPU-Auslastung zeigt, wenn es auf Linux-Computern mit einem neueren Kernel als 2.6.22 ausgeführt wird.

#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;
}

(Ja, mir ist klar, dass dieses Programm nichts tut)

Wenn ich dies kompiliere und auf einem openSUSE 10.3-Computer (2.6.22.19-0.2-Standard) ausführe, wird das Programm nicht einmal in der von "top" generierten Prozessliste angezeigt, was mir anzeigt, dass es sehr wenig CPU-Zeit verbraucht . Wenn ich es auf einem openSUSE 11.1-Computer ausführe (2.6.27.23-0.1-Standard), zeigt oben, dass das Programm 40% der CPU-Zeit beansprucht. Unter Fedora 9 (2.6.25-14.fc9.i686) und Fedora 10 wurde die gleiche hohe CPU-Auslastung auch in "top" angezeigt.

Gab es eine Änderung im Kernel, die dies betrifft?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage