Nanosleep высокая загрузка процессора?

Я заметил, что небольшая тестовая программа, которая вызывает nanosleep, показывает огромную разницу в загрузке процессора при работе на машинах Linux с ядром, более новым, чем 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;
}

(Да, я понимаю, что эта программа ничего не делает)

Если я скомпилирую это и запущу его на машине openSUSE 10.3 (2.6.22.19-0.2-default), программа даже не отобразится в списке процессов, сгенерированном & quot; top & quot ;, указывая, что он использует очень мало ЦП время. Если я запускаю его на машине openSUSE 11.1 (2.6.27.23-0.1-default), top показывает, что программа занимает 40% процессорного времени. Работа на Fedora 9 (2.6.25-14.fc9.i686) и Fedora 10 также показала такое же высокое использование ЦП в «top».

Произошло ли изменение в ядре, которое влияет на это?

Ответы на вопрос(2)

Ваш ответ на вопрос