A Quick CPU Intensive Script for Testing Purposes with md5sum
If you’re needing to create some sort of CPU stress test script on the fly with minimal resources on a Linux box, a simple md5sum loop comes in handy. Even with ‘watered-down’ versions of a Linux filesystem (ie. busybox) generally have at least the capabilities of running a loop and have the md5sum tool compiled and ready to use. A quick rundown on how to set one up is outlined below.
First, create a relatively large file (as large as you can make one without being overkill):
dd if=/dev/urandom of=testfile count=20 bs=1024k
Second, create a script (I named it stress_cpu, but you can call it what you want) with the following contents:
#!/bin/sh i=0 while [ 1 ] do md5sum testfile i=`expr $i + 1` echo "Iteration: $i" done
Save the file and then give it executable permissions:
chmod +x stress_cpu
Finally, run it:
./stress_cpu
You may notice when running this script that the initial md5sum test takes about 10 seconds longer than any subsequent tests. This is due to the way md5sum works and how things are written to cache for faster access. If you don’t want anything to be cached for good measure, and you have /proc mounted with the /proc/sys/vm/drop_caches file, then you can use the command sync; echo 1 > /proc/sys/vm/drop_caches immediately following the md5sum command in the script. See the proc man page for more information.
Feel free to donate if this post prevented any headaches! Another way to show your appreciation is to take a gander at these relative ads that you may be interested in:
Here are some similar posts that you may be interested in:
There's 3 Comments So Far
April 15th, 2011 at 6:43 am
Hi Derek, just came across your post searching for simple stress-testing techniques. A simpler one I’ve been using recently involves just dd, plus nice to ensure it gets as much CPU time as it can.
> nice -n -20 dd if=/dev/zero of=/dev/null bs=1024k
Pretty intensive…I guess if you wanted an even more intensive test, you could create a real-time scheduled program (sched_setscheduler(2)), but that could be a tad overkill 😉
December 2nd, 2011 at 6:54 am
yes > /dev/null
Who Linked To This Post?
Share your thoughts, leave a comment!