【问题标题】:CentOS 6.5 spikeCentOS 6.5 秒杀
【发布时间】:2014-10-18 23:02:28
【问题描述】:

我已经用 C 语言开发了一个应用程序。我在“Red Hat Enterprise Linux Server release 5.8 (Tikanga)”上运行这个应用程序,一切看起来都不错,但是当我们在“CentOS release 6.5 (Final)”上部署这个应用程序时,它会启动做问题。它占用了更多的缓存,30-45 分钟后它突然飙升,所有 cpu 在 1-2 秒内显示 100% cpu 利用率。

我google了这个问题,发现CPU high usage of the usleep on Cent OS 6.3

由于我的应用程序中的一个进程正在使用 10 次睡眠。它在 RedHat 中占用的 CPU 不到 3%,但在 CentOS 中占用的 CPU 相当高,约为 90%。阅读链接后,当我将睡眠从 10 usleep 更改为 1000 usleep 或 1 us 时,它会占用 40% 的 CPU。

我需要知道 CentOS 6.5 的内核是否使用高速定时器或者我需要在编译内核时设置任何配置。

【问题讨论】:

    标签: c++ c centos6


    【解决方案1】:

    首先,您是在比较苹果和橙子:CentOS 6 对应于 RHEL 6。很可能您的代码在 RHEL 6.5 上的行为与在 CentOS 6.5 上的行为相同,在 CentOS 5.8 上的行为与在 RHEL 5.8 上的行为相同.将此问题描述为 RHEL 和 CentOS 之间的差异是一种误导。

    其次,如果您的 CPU 利用率受到一些 usleep() 调用(显然执行了很多次)的强烈影响,那么您的代码有缺陷,您应该修复它。构建一个自定义内核来掩盖这个问题将是相当落后的。不过,如果目标更多的是迁移到 CentOS 而不是迁移到(有些)更新的环境,那么切换到 CentOS 5 而不是 CentOS 6。

    【讨论】:

    • 我尝试了不同的时间延迟解决方案,但在centos 6.5上无法获得所需的结果,因此我将延迟时间从10微秒增加到10毫秒。感谢您的帮助。
    猜你喜欢
    • 2023-03-03
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2014-05-24
    • 2014-10-27
    • 2015-05-11
    相关资源
    最近更新 更多