użycie nanopoziomu procesora?

Zauważyłem, że mały program testowy, który wywołuje nanosleep, wykazuje ogromną różnicę w wykorzystaniu procesora, gdy jest uruchamiany na komputerach z Linuksem z jądrem nowszym niż 2.6.22.

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

(Tak, zdaję sobie sprawę, że ten program nic nie robi)

Jeśli skompiluję to i uruchomię na maszynie openSUSE 10.3 (domyślnie 2.6.22.19-0.2), program nawet nie pojawi się na liście procesów generowanej przez „top”, wskazując mi, że używa bardzo mało czasu procesora . Jeśli uruchomię go na komputerze z openSUSE 11.1 (2.6.27.23-0.1-default), na górze pokaże się, że program zajmuje 40% czasu procesora. Uruchamianie na Fedorze 9 (2.6.25-14.fc9.i686) i Fedorze 10 pokazało również to samo wysokie użycie procesora w „top”.

Czy nastąpiła zmiana jądra, która ma na to wpływ?

questionAnswers(2)

yourAnswerToTheQuestion