如何在Red Hat Linux机器上设置CPU负载?

时间:2020-03-06 14:48:22  来源:igfitidea点击:

我有一个RHEL盒,需要将其放置在中等数量和可变数量的CPU负载下(50%-75%)。

最好的方法是什么?有一个我不知道的程序可以执行此操作吗?我很高兴写一些C代码来实现这一目标,但我不知道什么系统调用会有所帮助。

解决方案

我们可能可以使用某种负载生成工具来完成此任务,或者运行脚本以获取所有CPU周期,然后对进程使用nice和renice来更改进程获得的周期百分比。

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

#!/bin/bash
while true ; do
true
done

一种增加系统负载的常见方法是一遍又一遍地编译大型软件包。类似于Linux内核。

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

如果我们有SMP系统,那么make -j bzImage很有趣,它将并行生成make任务。

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

查找具有源代码的简单素数搜索程序。修改源代码以在主循环中添加nanosleep调用,无论延迟如何,都会给我们带来所需的CPU负载。

这实际上取决于我们要测试的内容。如果我们只是在测试CPU负载,那么简单的脚本来耗尽CPU空循环就可以了。我最近不得不亲自测试RAID阵列的性能,我依靠Bonnie ++和IOZone。 IOZone会给盒子带来很大的负担,特别是如果我们将文件大小设置为大于RAM。

我们可能也对此文章感兴趣。

我们可以使用Bash脚本执行此操作。使用" ps -o pcpu | grep -v CPU"获取所有进程的CPU使用率。将所有这些值相加即可得出当前的用法。然后有一个繁忙的while循环,该循环基本上继续检查这些值,弄清楚当前的CPU使用率,并等待计算出的时间量,以将处理器保持在某个阈值。需要更多细节,但希望这将为我们提供一个良好的起点。

看一下我找到的这个CPU Monitor脚本,并尝试获得有关如何完成此操作的其他想法。

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

因此,找到任何我们知道将使CPU最多消耗100%的进程。

如果我们有四个CPU核心(0 1 2 3),则可以使用"任务集"将此进程绑定为CPU 0和1. 这将使设备装载50%。要加载它的75%,请将进程绑定到0 1 2个CPU。

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

这正是我们所需要的:
http://weather.ou.edu/~apw/projects/stress/

从首页:
" stress是用于POSIX系统的简单工作负载生成器。它对系统施加了可配置的CPU,内存,I / O和磁盘压力。它是用C编写的,并且是GPL许可的免费软件。"

使用" nice"命令。

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

或者

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

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

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