Question

I have a RHEL box that I need to put under a moderate and variable amount of CPU load (50%-75%).

What is the best way to go about this? Is there a program that can do this that I am not aware of? I am happy to write some C code to make this happen, I just don't know what system calls will help.

Was it helpful?

Solution

This is exactly what you need: http://weather.ou.edu/~apw/projects/stress/

From the homepage: "stress is a simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system. It is written in C, and is free software licensed under the GPL."

OTHER TIPS

Find a simple prime number search program that has source code. Modify the source code to add a nanosleep call to the main loop with whichever delay gives you the desired CPU load.

One common way to get some load on a system is to compile a large software package over and over again. Something like the Linux kernel.

Get a copy of the source code, extract the tar.bz2, go into the top level source directory, copy your kernel config from /boot to .config or zcat /proc/config.gz > .config, the do make oldconfig, then while true; do make clean && make bzImage; done

If you have an SMP system, then make -j bzImage is fun, it will spawn make tasks in parallel.

One problem with this is adjusting the CPU load. It will be a maximum CPU load except for when waiting on disk I/O.

You could possibly do this using a Bash script. Use " ps -o pcpu | grep -v CPU" to get the CPU Usage of all the processes. Add all those values together to get the current usage. Then have a busy while loop that basically keeps on checking those values, figuring out the current CPU usage, and waiting a calculated amount of time to keep the processor at a certain threshhold. More detail is need, but hopefully this will give you a good starting point.

Take a look at this CPU Monitor script I found and try to get some other ideas on how you can accomplish this.

It really depends what you're trying to test. If you're just testing CPU load, simple scripts to eat empty CPU cycles will work fine. I personally had to test the performance of a RAID array recently and I relied on Bonnie++ and IOZone. IOZone will put a decent load on the box, particularly if you set the file size higher than the RAM.

You may also be interested in this Article.

Use the "nice" command.

a) Highest priority: $ nice -n -20 my_command

or

b) Lowest priority: $ nice -n 20 my_command

A Simple script to load & hammer the CPU using awk. The script does mathematical calculations and thus CPU load peaks up on higher values passwd to loadserver.sh .

checkout the script @ http://unixfoo.blogspot.com/2008/11/linux-cpu-hammer-script.html

You can probably use some load-generating tool to accomplish this, or run a script to take all the CPU cycles and then use nice and renice on the process to vary the percentage of cycles that the process gets.

Here is a sample bash script that will occupy all the free CPU cycles:

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

Lookbusy enables set value of CPU load. Project site

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

i.e. 60% load
lookbusy -c 60

Not sure what your goal is here. I believe glxgears will use 100% CPU.

So find any process that you know will max out the CPU to 100%.

If you have four CPU cores(0 1 2 3), you could use "taskset" to bind this process to say CPUs 0 and 1. That should load your box 50%. To load it 75% bind the process to 0 1 2 CPUs.

Disclaimer: Haven't tested this. Please let us know your results. Even if this works, I'm not sure what you will achieve out of this?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top