Files
apfstests/113
T
Dave Chinner e714acc0ef reduce the number of processes forked
One of the big cpu time consumers when running xfsqa on UML
is forking of new processes. when looping lots of times,
using 'expr' to calculate the loop counter increment means
we fork at least once every loop. using shell builtins means
that we don't fork and many tests run substantially faster.

Some tests are even runnable with this modification. e.g. 110
went from taking 4500s to run down to 9s with the loop iterators
changed to avoid forking.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2009-03-25 20:53:36 +01:00

89 lines
1.7 KiB
Bash
Executable File

#! /bin/sh
# FS QA Test No. 113
#
# aio-stress
#
#-----------------------------------------------------------------------
# Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved.
#-----------------------------------------------------------------------
#
# creator
owner=nathans@sgi.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=0 # success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $testdir/aio-stress.$$.*
_cleanup_testdir
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
_do_test()
{
_n="$1"
_param="$2"
_count="$3"
_nproc="$4"
_files="$testdir/aiostress.$$.$_n"
__proc=$_nproc
[ $__proc -gt 1 ] && _param="-t $__proc $_param"
while [ $__proc -gt 1 ]; do
_files="$_files $testdir/aiostress.$$.$_n.$__proc"
let __proc=$__proc-1
done
rm -f $_files
echo ""
echo "-----------------------------------------------"
echo "aio-stress.$_n : $_param"
echo "-----------------------------------------------"
if ! $here/ltp/aio-stress $_param $AIOSTRESS_AVOID -I $_count $_files >>$tmp.out 2>&1
then
echo " aio-stress (count=$_count) returned $?"
cat $tmp.out
status=1
exit
fi
_check_test_fs
rm -f $_files
}
# real QA test starts here
_supported_os Linux
[ -x $here/ltp/aio-stress ] || _notrun "aio-stress not built for this platform"
_setup_testdir
echo "brevity is wit..."
count=1000
procs=20
_check_test_fs
# the default
_do_test 1 "-s 120m" $count 1
# and the default with multiprocess
_do_test 2 "-s 10m" $count $procs
# as above, but now using direct IO
_do_test 3 "-s 10m -O" $count $procs
exit