gpt4 book ai didi

linux - nanosleep CPU 使用率高?

转载 作者:IT王子 更新时间:2023-10-29 01:02:30 28 4
gpt4 key购买 nike

我注意到一个调用 nanosleep 的小测试程序在内核高于 2.6.22 的 Linux 机器上运行时显示 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;
}

(是的,我知道这个程序什么都不做)

如果我编译它并在 openSUSE 10.3 机器(2.6.22.19-0.2-default)上运行它,该程序甚至不会出现在“top”生成的进程列表中,这表明它正在使用非常很少的 CPU 时间。如果我在 openSUSE 11.1 机器(2.6.27.23-0.1-default)上运行它,top 显示程序占用了 40% 的 CPU 时间。在 Fedora 9 (2.6.25-14.fc9.i686) 和 Fedora 10 上运行,在“top”中也显示出同样高的 CPU 使用率。

内核中是否有影响此的更改?

最佳答案

这是由于在主线调度器中引入了 NO_HZ。

以前,您的 1,000 ns sleep 通常是整整一个滴答声 - 1,000,000 ns。现在,当机器空闲时,它实际上只是在为您要求的内容休眠。所以它运行 while() 循环和系统调用的频率提高了大约 1,000 倍——因此 CPU 使用率更高。如果增加 tv_nsec,您应该会看到 CPU 使用率降低。

关于linux - nanosleep CPU 使用率高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125297/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com