【发布时间】:2012-03-01 08:38:55
【问题描述】:
我正在编写一个 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 顶部
与上面类似,我将查看顶部的行,它显示了我的二进制文件的利用率。
任何帮助将不胜感激。另外,如果您需要更多详细信息,请告诉我。
谢谢!
编辑: 以下代码行让我可以很好地控制 CPU 利用率 - 在以下情况下,我有 2 个选项 - 将其保持在 50% 以上并保持在 50% 以下 - 经过一些试验和错误后,我确定了给定的睡眠值.
endwait = clock() + ( seconds * CLOCKS_PER_SEC );
while( clock() < endwait ) {}
if (cpu_utilization > 50)
usleep(250000);
else
usleep(700000);
希望这会有所帮助!
【问题讨论】:
-
结合使用 sleep 和忙循环、sleep、busy loop、sleep、busy loop 等,以实现您想要的任何 CPU 利用率。
-
虽然繁忙的循环显然会将报告的 CPU 利用率保持在最低水平,但您可能希望在其中抛出一些未对齐的内存访问以保持 CPU 繁忙。
标签: c linux cpu utilization