我们将操作系统从Debian 6升级到Debian 8后,我们的软件系统遇到性能问题。
从顶部-H结果看,系统中使用usleep(200)的所有线程都有一些主要的CPU使用率增加,然后我们测试了列出的示例程序:
#include <unistd.h>
int main(int argc, char **argv) {
while (true)
usleep(200);
return 0;
}
在Intel i3系统上(没有启用操作系统的GUI,只有命令行),该程序将导致Debian 6的CPU使用率为1%,而Debian 8则为2.3%。
我们检查了一些可疑的内核配置,但没有找到有用的线索。此外,两个操作系统都启用了高分辨率计时器。
Debian 8.2(3.16.0-4):
CONFIG_RCU_FAST_NO_HZ=y
CONFIG_HZ=250
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
CONFIG_HPET_MMAP_DEFAULT=y
CONFIG_HIGH_RES_TIMERS=y
Debian 6(2.6.32-5):
CONFIG_NO_HZ=y
CONFIG_HZ=250
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
CONFIG_HIGH_RES_TIMERS=y
我们知道亚毫秒级睡眠会导致某种CPU使用,而我们并不期望不同操作系统版本上的CPU使用情况完全不同。
任何建议都将不胜感激。