6

我有一个RHEL盒子,我需要将它置于中等且可变的 CPU 负载 (50%-75%) 之下。

解决此问题的最佳方法是什么?有没有我不知道的可以做到这一点的程序?我很高兴编写一些 C 代码来实现这一点,我只是不知道什么系统调用会有所帮助。

4

10 回答 10

15

这正是您所需要的(互联网档案链接): https ://web.archive.org/web/20120512025754/http://weather.ou.edu/~apw/projects/stress/stress-1.0.4.tar .gz

来自主页:“stress 是用于 POSIX 系统的简单工作负载生成器。它对系统施加可配置数量的 CPU、内存、I/O 和磁盘压力。它是用 C 编写的,是根据 GPL 许可的免费软件。”

于 2008-09-27T16:38:42.597 回答
2

找一个有源代码的简单素数搜索程序。修改源代码以在主循环中添加一个 nanosleep 调用,无论延迟为您提供所需的 CPU 负载。

于 2008-09-26T20:29:22.897 回答
1

在系统上获得一些负载的一种常见方法是一遍又一遍地编译一个大型软件包。类似于 Linux 内核的东西。

获取源代码的副本,解压 tar.bz2,进入顶级源目录,将内核配置从 /boot 复制到 .config 或 zcat /proc/config.gz > .config,然后执行 make oldconfig,然后虽然是真的;做干净 && 做 bzImage; 完毕

如果你有一个 SMP 系统,那么 make -j bzImage 很有趣,它会产生并行的 make 任务。

一个问题是调整 CPU 负载。除了在磁盘 I/O 上等待时,这将是最大的 CPU 负载。

于 2008-09-26T20:26:32.060 回答
1

这实际上取决于您要测试的内容。如果您只是在测试 CPU 负载,那么吃空 CPU 周期的简单脚本就可以正常工作。我个人最近不得不测试 RAID 阵列的性能,我依靠 Bonnie++ 和 IOZone。IOZone 会给盒子带来相当大的负载,特别是如果您将文件大小设置为高于 RAM。

你可能也对这篇文章感兴趣。

于 2008-09-26T20:30:20.333 回答
1

您可以使用 Bash 脚本来执行此操作。使用“ps -o pcpu | grep -v CPU”获取所有进程的 CPU 使用率。将所有这些值加在一起以获得当前使用情况。然后有一个繁忙的 while 循环,它基本上会继续检查这些值,找出当前的 CPU 使用率,并等待计算出的时间量以使处理器保持在某个阈值。需要更多细节,但希望这会给你一个好的起点。

看看我找到的这个CPU Monitor脚本,并尝试获得一些关于如何完成此任务的其他想法。

于 2008-09-26T20:33:18.470 回答
1

Lookbusy 启用 CPU 负载的设定值。 项目现场

lookbusy -c util[-high_util], --cpu-util util[-high_util]

i.e. 60% load
lookbusy -c 60
于 2013-10-07T14:34:25.630 回答
0

您可能可以使用一些负载生成工具来完成此操作,或者运行一个脚本来获取所有 CPU 周期,然后使用nicereniceon the process 来改变进程获得的周期百分比。

这是一个将占用所有空闲 CPU 周期的示例 bash 脚本:

#!/bin/bash
while true ; do
true
done
于 2008-09-26T20:25:01.253 回答
0

使用“nice”命令。

a) 最高优先级: $ nice -n -20 my_command

或者

b) 最低优先级: $ nice -n 20 my_command

于 2008-09-27T16:48:57.253 回答
0

一个使用 awk 加载和锤击 CPU 的简单脚本。该脚本会进行数学计算,因此 CPU 负载会在 passwd 到 loadserver.sh 的较高值上达到峰值。

签出脚本@http://unixfoo.blogspot.com/2008/11/linux-cpu-hammer-script.html

于 2008-12-14T16:01:40.433 回答
-1

不确定您的目标是什么。我相信 glxgears 将使用 100% CPU。

因此,找到您知道的任何进程会将 CPU 最大化到 100%。

如果您有四个 CPU 内核(0 1 2 3),您可以使用“taskset”将此进程绑定到 CPU 0 和 1。这应该会加载您的机器 50%。要加载它 75% 将进程绑定到 0 1 2 个 CPU。

免责声明:尚未对此进行测试。请让我们知道您的结果。即使这行得通,我不确定您会从中获得什么?

于 2008-09-26T21:17:37.193 回答