私は、2.6.22より新しいカーネルを持つLinuxマシンで実行すると、nanosleepを呼び出す小さなテストプログラムがCPU使用量に大きな違いを見出していることに気付きました。ナノスリープ高CPU使用率?
#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;
}
私はこれをコンパイルして(2.6.22.19-0.2-デフォルト)のopenSUSE 10.3のマシン上でそれを実行した場合
(はい、私はこのプログラムは何もしません実現)、プログラムにも表示されません。 "top"によって生成されたプロセスリスト上で、CPU時間がごくわずかであることを示しています。 openSUSE 11.1マシン(2.6.27.23-0.1-default)で実行すると、topにはCPU時間の40%を占めるプログラムが表示されます。 Fedora 9(2.6.25-14.fc9.i686)とFedora 10で実行すると、 "top"と同じ高いCPU使用率が示されました。
これに影響するカーネルに変更がありましたか?