generic: test record locks across execve in multithread process
[xfstests-dev.git] / src / scaleread.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2003-2004 Silicon Graphics, Inc.  All Rights Reserved.
4 #
5
6 help() {
7 cat <<END
8 Measure scaling of multiple cpus readin the same set of files.
9 (NASA testcase).
10         Usage:  $0 [-b <bytes>] [-f <files>] [-s] [-B] [-v] cpus ...
11                         or
12                 $0 -i [-b <bytes>] [-f <files>] 
13
14           -b file size in bytes
15           -f number of files
16           -s keep processes synchronized when reading files
17           -B use bcfree to free buffer cache pages before each run
18 END
19 exit 1
20 }
21
22 err () {
23         echo "ERROR - $*"
24         exit 1
25 }
26
27 BYTES=8192
28 FILES=10
29 SYNC=""
30 VERBOSE=""
31 STRIDED=""
32 BCFREE=0
33 INIT=0
34 OPTS="f:b:vsiSBH"
35 while getopts "$OPTS" c ; do
36         case $c in
37                 H)  help;;
38                 f)  FILES=${OPTARG};;
39                 b)  BYTES=${OPTARG};;
40                 i)  INIT=1;;
41                 B)  BCFREE=1;;
42                 S)  STRIDED="-S";;
43                 s)  SYNC="-s";;
44                 v)  VERBOSE="-v";;
45                 \?) help;;
46         esac
47
48 done
49 shift `expr $OPTIND - 1`
50
51 if [ $INIT -gt 0 ] ; then
52         echo "Initializing $BYTES bytes, $FILES files"
53         ./scaleread $VERBOSE -i -b $BYTES -f $FILES 
54         sync
55 else
56         [ $# -gt 0 ] || help
57         echo "Testing $BYTES bytes, $FILES files"
58         for CPUS in $* ; do
59                 [ $BCFREE -eq 0 ] || bcfree -a
60                 /usr/bin/time -f "$CPUS:  %e wall,    %S sys,   %U user" ./scaleread \
61                         $SYNC $STRIDED $VERBOSE -b $BYTES -f $FILES -c $CPUS
62         done
63 fi
64