> > > Anyone know of any good (easy to setup) applications for doing that,
> > > or perhaps a shell script that might do the same thing?
As a matter of fact, I have a very nice one right here. Someone mailed this to the
list back in the day when I asked this same question. It's pretty killer.
Ross Vandegrift
[EMAIL PROTECTED]
[EMAIL PROTECTED]
#!/bin/bash -
# -*- Shell-script -*-
#
# Copyright (C) 1999 Bibliotech Ltd., 631-633 Fulham Rd., London SW6 5UQ.
#
# $Id: stress.sh,v 1.2 1999/02/10 10:58:04 rich Exp $
#
# Change log:
#
# $Log: stress.sh,v $
# Revision 1.2 1999/02/10 10:58:04 rich
# Use cp instead of tar to copy.
#
# Revision 1.1 1999/02/09 15:13:38 rich
# Added first version of stress test program.
#
# Stress-test a file system by doing multiple
# parallel disk operations. This does everything
# in MOUNTPOINT/stress.
nconcurrent=4
content=/usr/doc
stagger=yes
while getopts "c:n:s" c; do
case $c in
c)
content=$OPTARG
;;
n)
nconcurrent=$OPTARG
;;
s)
stagger=no
;;
*)
echo 'Usage: stress.sh [-options] MOUNTPOINT'
echo 'Options: -c Content directory'
echo ' -n Number of concurrent accesses (default: 4)'
echo ' -s Avoid staggerring start times'
exit 1
;;
esac
done
shift $(($OPTIND-1))
if [ $# -ne 1 ]; then
echo 'For usage: stress.sh -?'
exit 1
fi
mountpoint=$1
echo 'Number of concurrent processes:' $nconcurrent
echo 'Content directory:' $content '(size:' `du -s $content | awk '{print $1}'` 'KB)'
# Check the mount point is really a mount point.
if [ `df | awk '{print $6}' | grep ^$mountpoint\$ | wc -l` -lt 1 ]; then
echo $mountpoint: This doesn\'t seem to be a mountpoint. Try not
echo to use a trailing / character.
exit 1
fi
# Create the directory, if it doesn't exist.
echo Warning: This will DELETE anything in $mountpoint/stress. Type yes to confirm.
read line
if [ "$line" != "yes" ]; then
echo "Script abandoned."
exit 1
fi
if [ ! -d $mountpoint/stress ]; then
rm -rf $mountpoint/stress
if ! mkdir $mountpoint/stress; then
echo Problem creating $mountpoint/stress directory. Do you have sufficient
echo access permissions\?
exit 1
fi
fi
echo Created $mountpoint/stress directory.
# Construct MD5 sums over the content directory.
echo -n "Computing MD5 sums over content directory: "
( cd $content && find . -type f -print0 | xargs -0 md5sum | sort -k 2 -o
$mountpoint/stress/content.sums )
echo done.
# Start the stressing processes.
echo -n "Starting stress test processes: "
pids=""
p=1
while [ $p -le $nconcurrent ]; do
echo -n "$p "
(
# Wait for all processes to start up.
if [ "$stagger" = "yes" ]; then
sleep $((10*$p))
else
sleep 10
fi
while true; do
# Remove old directories.
echo -n "D$p "
rm -rf $mountpoint/stress/$p
# Copy content -> partition.
echo -n "W$p "
mkdir $mountpoint/stress/$p
#( cd $content && tar cf - . ) | ( cd $mountpoint/stress/$p && tar xf - )
cp -ax $content/* $mountpoint/stress/$p
# Compare the content and the copy.
echo -n "R$p "
( cd $mountpoint/stress/$p && find . -type f -print0 | xargs -0 md5sum |
sort -k 2 -o /tmp/stress.$$.$p )
diff $mountpoint/stress/content.sums /tmp/stress.$$.$p
rm -f /tmp/stress.$$.$p
done
) &
pids="$pids $!"
p=$(($p+1))
done
echo
echo "Process IDs: $pids"
echo "Press ^C to kill all processes"
trap "kill $pids" SIGINT
wait
kill $pids
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]