4

我正在编写一个 C 代码(在 Linux 上),它在运行时需要消耗一定数量的 CPU。我正在进行一项实验,在达到某个 CPU 阈值时触发某些操作。因此,一旦利用率达到某个阈值,我需要将其保持在该状态 30 秒,直到我完成我的实验。我正在使用 top 命令监控 CPU 利用率。

所以我的问题是 - 1. 如何将 CPU 利用率提高到给定值(如果可能,以确定的方式)?2. 一旦我达到阈值,有没有办法在预定义的时间内将其保持在该水平?

top 命令的示例输出(第 9 列是“top”进程使用的 CPU) - 19304 abcde 16 0 5448 1212 808 R 0.2 0.0 0:00.06 top

与上面类似,我将查看顶部的行,它显示了我的二进制文件的利用率。

任何帮助,将不胜感激。另外,如果您需要更多详细信息,请告诉我。

谢谢!

编辑:以下代码行让我可以很好地控制 CPU 利用率 - 在以下情况下,我有 2 个选项 - 将其保持在 50% 以上并保持在 50% 以下 - 经过一些试验和错误后,我在给定的情况下安定下来睡眠值。

endwait = clock() + ( seconds * CLOCKS_PER_SEC );
while( clock() < endwait ) {}
if (cpu_utilization > 50)
    usleep(250000); 
else
    usleep(700000);

希望这可以帮助!

4

2 回答 2

2

众所周知, cpuburn会使 CPU 利用率如此之高,以至于将其温度提高到最高水平。好像没有更多的官方网站,但是您仍然可以使用Debian 包googlecode访问源代码。它是在 asm 中实现的,因此您必须制作一些胶水才能在 C 中与之交互。

于 2012-02-08T22:00:25.063 回答
2

在我看来,这种类型的东西应该有一个恒定的 CPU 利用率:md5sum < /dev/urandom

于 2012-02-10T07:23:32.667 回答