reduce the number of processes forked
authorDave Chinner <david@fromorbit.com>
Wed, 25 Mar 2009 19:53:36 +0000 (20:53 +0100)
committerChristoph Hellwig <hch@brick.lst.de>
Wed, 25 Mar 2009 19:53:36 +0000 (20:53 +0100)
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>
30 files changed:
007
028
031
047
053
064
065
068
071
089
109
110
111
113
114
117
119
136
137
138
139
140
149
165
179
180
182
common.attr
common.dump
common.rc

diff --git a/007 b/007
index e8c6610156d87c9fe6a1d950dc4d420796b56348..290f716210dc5cbd11cb0c3f2a7c4ea0da787f14 100755 (executable)
--- a/007
+++ b/007
@@ -50,7 +50,7 @@ num_filenames=100
 i=1
 while [ $i -le $num_filenames ]; do
   echo "nametest.$i" >>$sourcefile
-  i=`expr $i + 1`
+  let i=$i+1
 done
 
 mkdir $testdir/$seq
diff --git a/028 b/028
index 1b679f23f5be4d7c48da80d0eeaeeedbdca26295..2c353fa3e567e26e05e73a166fb75ba474a6288f 100755 (executable)
--- a/028
+++ b/028
@@ -44,7 +44,7 @@ while [ $i -lt 5 ]; do
     fi
     rm $dump_file
     sleep 2
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 echo "middate = $middate" >>$seq.full
diff --git a/031 b/031
index 779cf27c00227f81fb516104a6cbf34b0c1938be..7ddd84275704549bba85d9e1137364c50db38208 100755 (executable)
--- a/031
+++ b/031
@@ -71,7 +71,7 @@ EOF
 
        while [ $count -lt $total ]
        do
-               count=`expr $count + 1`
+               let count=$count+1
                cat >>$tmp.proto <<EOF
 ${count}_of_${total}_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ---755 3 1 /bin/true
 EOF
diff --git a/047 b/047
index 168ada17361f32e495a041886eb8b3cdf21e467e..7ee9ed5a24c43c298964db9a1d73cf6a73bf498b 100755 (executable)
--- a/047
+++ b/047
@@ -44,7 +44,7 @@ while [ $i -lt 5 ]; do
     fi
     rm $dump_file
     sleep 2
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 echo "middate = $middate" >>$seq.full
diff --git a/053 b/053
index f260e1a13c5133f25deb537636417bf79d027ce7..dbd2d5d65facfb4052e4c26231e6df0f099048ce 100755 (executable)
--- a/053
+++ b/053
@@ -54,7 +54,7 @@ for acl in $acls
 do
   _do "touch $test.$i"
   _do "chacl $acl $test.$i"
-  i=`expr $i + 1`
+  let i=$i+1
 done
 
 list_acls()
@@ -63,7 +63,7 @@ list_acls()
   for acl in $acls
   do
     chacl -l $test.$i | _acl_filter_id | sed -e "s!$SCRATCH_MNT!\$SCRATCH_MNT!"
-    i=`expr $i + 1`
+    let i=$i+1
   done
 }
 
diff --git a/064 b/064
index 27ee1dad45d258354aaec0abc7ca9fbfc2387344..5a7d4b4bc174eb41d1dd8dd522f13371d4fde482 100755 (executable)
--- a/064
+++ b/064
@@ -58,7 +58,7 @@ while [ $i -le 9 ]; do
     date >>$seq.full
     find $SCRATCH_MNT -exec $here/src/lstat64 {} \; | sed 's/(00.*)//' >$tmp.dates.$i
     if [ $i -gt 0 ]; then
-       level_1=`expr $i - 1`
+       let level_1=$i-1
        diff -c $tmp.dates.$level_1 $tmp.dates.$i >>$seq.full
     else
        cat $tmp.dates.$i >>$seq.full
@@ -66,7 +66,7 @@ while [ $i -le 9 ]; do
 
     dump_file=$tmp.df.level$i
     _do_dump_file -l $i
-    i=`expr $i + 1`    
+    let i=$i+1
 done
 
 echo "Listing of what files we start with:"
@@ -79,7 +79,7 @@ while [ $i -le 9 ]; do
     echo "restoring from df.level$i"
     dump_file=$tmp.df.level$i
     _do_restore_toc
-    i=`expr $i + 1`    
+    let i=$i+1
 done
 
 echo "Do the cumulative restores"
@@ -91,7 +91,7 @@ while [ $i -le 9 ]; do
     _do_restore_file_cum -l $i
     echo "ls -l restore_dir"
     ls -lR $restore_dir | _ls_size_filter | _check_quota_file
-    i=`expr $i + 1`    
+    let i=$i+1
 done
 
 # success, all done
diff --git a/065 b/065
index b193f28e9778543786be79a05dcf85e943dd5cc4..4252b1102c0730886d7e292507403d46c8f20731 100755 (executable)
--- a/065
+++ b/065
@@ -146,7 +146,7 @@ while [ $i -le $num_dumps ]; do
 
     dump_file=$tmp.df.level$i
     _do_dump_file -l $i
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 echo "Look at what files are contained in the inc. dump"
@@ -156,7 +156,7 @@ while [ $i -le $num_dumps ]; do
     echo "restoring from df.level$i"
     dump_file=$tmp.df.level$i
     _do_restore_toc
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 echo "Do the cumulative restores"
@@ -168,7 +168,7 @@ while [ $i -le $num_dumps ]; do
     _do_restore_file_cum -l $i
     echo "list restore_dir"
     _list_dir $restore_dir | _check_quota_file | tee $tmp.restorals.$i
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 echo ""
@@ -178,7 +178,7 @@ while [ $i -le $num_dumps ]; do
     echo "Comparing ls of FS with restored FS at level $i"
     diff -s $tmp.ls.$i $tmp.restorals.$i | sed "s#$tmp#TMP#g"
     echo ""
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 
diff --git a/068 b/068
index eb8b93620aa463b1ace10dac3e95ed8c26d735c3..af060ae09b64b21fcc33210f6f77eeb918394f68 100755 (executable)
--- a/068
+++ b/068
@@ -75,7 +75,7 @@ touch $tmp.running
 } &
 
 i=0
-ITERATIONS=`expr $ITERATIONS - 1`
+let ITERATIONS=$ITERATIONS-1
 
 echo | tee -a $seq.full
 while [ $i -le $ITERATIONS ]
@@ -94,7 +94,7 @@ do
        sleep 2
 
        echo  | tee -a $seq.full
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # stop fsstress iterations
@@ -105,4 +105,4 @@ wait
 
 _check_scratch_fs
 
-exit 1
\ No newline at end of file
+exit 1
diff --git a/071 b/071
index 5e621bab51f5b05b06550903ee96141654d64bbe..4e95804148208d696f2c57b4cac9c22757da489b 100755 (executable)
--- a/071
+++ b/071
@@ -137,7 +137,7 @@ do
     echo === Iterating, `expr $upperbound - $count` remains
     echo
     echo
-    count=`expr $count + 1`
+    let count=$count+1
 done
 
 # success, all done
diff --git a/089 b/089
index db7525b54baed77dd098c103d0b658d981c70490..9f77c05e968a7efa8201506cc70103318ca3b9b2 100755 (executable)
--- a/089
+++ b/089
@@ -30,7 +30,7 @@ addentries()
 
        while [ $count -gt 0 ]; do
                touch `printf $pattern $count`
-               count=`expr $count - 1`
+               let count=$count-1
        done
 }
 
diff --git a/109 b/109
index 913ceea75158a5f8e7e96644491c4994cd290479..845f1f2c8930e2608edfcebb56b8be51c2e32198 100755 (executable)
--- a/109
+++ b/109
@@ -38,7 +38,7 @@ populate()
        while [ $i -le $files -a "X$faststart" = "X" ]; do
                file=$SCRATCH_MNT/f$i
                xfs_io -f -d -c 'pwrite -b 64k 0 64k' $file >/dev/null
-               i=`expr $i + 1`
+               let i=$i+1
        done
 
        # remove every second file, freeing up lots of space
@@ -46,7 +46,7 @@ populate()
        i=1
        while [ $i -le $files -a "X$faststart" = "X" ]; do
                rm $SCRATCH_MNT/f$i
-               i=`expr $i + 2`
+               let i=$i+2
        done
 
        echo "flushing changes via umount/mount."
@@ -67,10 +67,10 @@ allocate()
                                xfs_io -f -c 'pwrite -b 64k 0 16m' $file \
                                        >/dev/null 2>&1
                                rm $file
-                               j=`expr $j + 1`
+                               let j=$j+1
                        done
                } &
-               i=`expr $i + 1`
+               let i=$i+1
        done
 
        wait
diff --git a/110 b/110
index c578d3581fbf92547f8c7a922c21e3b83da5aed4..85b313c709067e24b55c49750b6956ae874ce5c9 100755 (executable)
--- a/110
+++ b/110
@@ -52,8 +52,8 @@ E=10030600
 while [ $I -le $E ]
 do
     echo > $SCRATCH_MNT/test/${STR1}${STR2}${STR3}${I}
-    I=`expr $I + 1`
-    [ `expr $I % 1000` -eq 0 ] && echo "Created $I/$E"
+    let I=$I+1
+    [ $[$I % 1000] -eq 0 ] && echo "Created $I/$E"
 done
 
 sync
@@ -63,7 +63,7 @@ E=10030599
 while [ $I -le $E ]
 do
     rm $SCRATCH_MNT/test/${STR1}${STR2}${STR3}${I} &
-    I=`expr $I + 1`
+    let I=$I+1
 done
 
 _check_scratch_fs
diff --git a/111 b/111
index 46f1395ff1c3be095315cf4a43ab83a74a4f4844..060c0bc56c418ebe272d842c2cb3516502646a06 100755 (executable)
--- a/111
+++ b/111
@@ -39,7 +39,7 @@ I=0
 while [ $I -lt 1000 ]
 do
     cp src/itrash.c $SCRATCH_MNT/${I}
-    I=`expr $I + 1`
+    let I=$I+1
 done
 umount $SCRATCH_DEV
 
diff --git a/113 b/113
index 9c435cf28dcb8750d3c3d645a8cc1f9d21373f6d..49c8cee683d4e8b9f37fd84fbd8320313d1affbf 100755 (executable)
--- a/113
+++ b/113
@@ -41,7 +41,7 @@ _do_test()
     [ $__proc -gt 1 ] && _param="-t $__proc $_param"
     while [ $__proc -gt 1 ]; do
         _files="$_files $testdir/aiostress.$$.$_n.$__proc"
-       __proc=`expr $__proc - 1`
+       let __proc=$__proc-1
     done
     rm -f $_files
  
diff --git a/114 b/114
index 5f7c23db288e06ed4df1d44a364dc81f31be8fb3..af8608c7246af7a509076a48fd756dfff055d7d9 100755 (executable)
--- a/114
+++ b/114
@@ -135,8 +135,8 @@ _test_hardlink()
        paths="$d/l1 $d/l2 $d/l3 $d2/l4 $d2/l5 $d2/l6"
        i=0
        for x in $paths; do
-               i=`expr $i + 1`
-               j=`expr $i % 2`
+               let i=$i+1
+               let j=$i%2
                if [ $j -eq 0 ]; then
                        echo "rm'ing $x"
                        rm $x
diff --git a/117 b/117
index 5fee41649bc2a789f0e920e3d78a3f13e8b4afee..7cb91d18ac24143b5fb766d15f7fcd64bcd4ad89 100755 (executable)
--- a/117
+++ b/117
@@ -71,7 +71,7 @@ while [ $i -lt $ITERATIONS ]; do
         -s $seed \
        -S -p 1 -n 1000 >>$seq.full 2>&1
 
-    i=`expr $i + 1`
+    let i=$i+1
 done
 
 cd /
diff --git a/119 b/119
index 8d234952bd9a3676238bddc5a90051ea3134ebc7..055928c03eecfd8d6b27f95aeff5b9603a1ef231 100755 (executable)
--- a/119
+++ b/119
@@ -54,7 +54,7 @@ while [ $i -lt $max ]; do
        xfs_freeze -f $SCRATCH_MNT
        xfs_freeze -u $SCRATCH_MNT
        echo -n .
-       i=`expr $i + 1`
+       let i=$i+1
 done
 echo "done"
 
diff --git a/136 b/136
index 0978ac9056fdc8c08889b49c6e2125fd7df8c654..c3e010c8cf76b2e9df195eb7a99807c689d0d287 100755 (executable)
--- a/136
+++ b/136
@@ -61,7 +61,7 @@ add_eas()
     i=$start
     while [ $i -le $end ]; do 
        attr -s name.$i -V value $file >/dev/null
-       i=`expr $i + 1`
+       let i=$i+1
     done
 }
 
@@ -73,7 +73,7 @@ rm_eas()
     i=$start
     while [ $i -le $end ]; do 
        attr -r name.$i $file >/dev/null
-       i=`expr $i + 1`
+       let i=$i+1
     done
 }
 
@@ -171,7 +171,7 @@ _test_add_extents()
        while [ $j -le 30 ]; do
            do_extents $j
            _print_inode
-           j=`expr $j + 2`
+           let j=$j+2
        done
 
        #scale down
@@ -179,7 +179,7 @@ _test_add_extents()
        while [ $j -ge 1 ]; do
            do_extents $j
            _print_inode
-           j=`expr $j - 2`
+           let j=$j-2
        done
 
        #build up
@@ -187,7 +187,7 @@ _test_add_extents()
        while [ $j -le 30 ]; do
            do_extents $j
            _print_inode
-           j=`expr $j + 2`
+           let j=$j+2
        done
 }
 
@@ -211,7 +211,7 @@ _test_extents_eas()
            _print_inode
            _print_inode_u > $tmp.u1
            for j in `seq 1 $EAs_inc $EAs_max`; do
-               k=`expr $j + $EAs_inc - 1`
+               let k=$k+$EAs_inc-1
                add_eas $j $k
            done
            # should have same extents
@@ -256,7 +256,7 @@ _test_eas_extents()
        EAs_inc=5
        for j in `seq 1 $EAs_inc $EAs_max`; do
 
-           k=`expr $j + $EAs_inc - 1`
+           let k=$k+$EAs_inc-1
            add_eas $j $k
            echo "--- EAs: $j ---"
 
diff --git a/137 b/137
index 4dbf847412cdf6fac0a5b23a5b8745b694f67a0e..f27a248f6a178023ea48663eac28ddd2bf1f374c 100755 (executable)
--- a/137
+++ b/137
@@ -47,7 +47,7 @@ do
                echo error creating/writing file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # give the system a chance to write something out
@@ -90,7 +90,7 @@ do
                        rm -f $file
                fi
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 status=0
diff --git a/138 b/138
index 7cf9020248ffb1f1b763cfc70800a9d4f42452d2..bf36e3dadf08e56d5ac7e79c038cf3601bad07a2 100755 (executable)
--- a/138
+++ b/138
@@ -53,7 +53,7 @@ do
                echo error truncating file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # give the system a chance to write something out
@@ -96,7 +96,7 @@ do
                        rm -f $file
                fi
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 status=0
diff --git a/139 b/139
index 480527998630e303899c170f8922510cdebbce12..5fd2a64389af639574a1f4447fe4692d3aa91d3a 100755 (executable)
--- a/139
+++ b/139
@@ -53,7 +53,7 @@ do
                echo error truncating file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # give the system a chance to write something out
@@ -96,7 +96,7 @@ do
                        rm -f $file
                fi
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 status=0
diff --git a/140 b/140
index 797efc4e3e5231201b161011e92b1df929860db0..e5d63a61b8264b82fbf74d56af7d8a68d15ec6d8 100755 (executable)
--- a/140
+++ b/140
@@ -53,7 +53,7 @@ do
                echo error truncating file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # give the system a chance to write something out
@@ -93,7 +93,7 @@ do
                        rm -f $file
                fi
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 status=0
diff --git a/149 b/149
index 0e9d9748a82bae6137ce1ba1fae44874cfda33d5..8fea8afa632b95033a3f1dbcbea8161452d36142 100755 (executable)
--- a/149
+++ b/149
@@ -74,7 +74,7 @@ EOF
 
        while [ $count -lt $total ]
        do
-               count=`expr $count + 1`
+               let count=$count+1
                cat >>$tmp.proto <<EOF
 ${count}_of_${total}_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ---755 3 1 /bin/true
 EOF
diff --git a/165 b/165
index 9eda608979da4ff7ad39fd09455954db0108149f..7356a4c08d4151f25ff92421a1aa8652562cbca9 100644 (file)
--- a/165
+++ b/165
@@ -82,8 +82,8 @@ do
 
        $XFS_IO_PROG -c "unresvsp $offset $length" -c "bmap -vp" $testfile | _filter_bmap
 
-       off=`expr $off + $len` # skip over 1
-       off=`expr $off + $len`
+       let off=$off+$len # skip over 1
+       let off=$off+$len
 done
 
 off=0
@@ -111,8 +111,8 @@ do
        #$XFS_IO_PROG -r -c "pread -v -b $bufsize $offset $length" $testfile
         #sleep 5
 
-       off=`expr $off + $len` # skip over 1
-       off=`expr $off + $len`
+       let off=$off+$len # skip over 1
+       let off=$off+$len
 done
 
 wait
diff --git a/179 b/179
index 6efb70fbf9752a1fedfe7de614e801d11b21611c..c7cd9a79e5539eb6e4a5a671f06df2a3f056fc47 100644 (file)
--- a/179
+++ b/179
@@ -63,7 +63,7 @@ _check_files()
                else
                        echo file $file missing - fsync failed
                fi
-               i=`expr $i + 1`
+               let i=$i+1
        done
 }
 
@@ -78,7 +78,7 @@ do
                echo error creating/writing file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # shutdown immediately after, then remount and test
diff --git a/180 b/180
index 3ad7972dcbd935fe0069fa5e32c8649f0160c856..52a4f7cb3dad6b566460cd33e6471e1abc0c3d48 100644 (file)
--- a/180
+++ b/180
@@ -68,7 +68,7 @@ _check_files()
                else
                        echo file $file missing - sync failed
                fi
-               i=`expr $i + 1`
+               let i=$i+1
        done
 }
 
@@ -83,7 +83,7 @@ do
                echo error creating/writing file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # sync, then shutdown immediately after, then remount and test
diff --git a/182 b/182
index fdede6dd6290d7a47f24298cb0f408c93840ae2d..f112f301023620d7590504b48cd1c4e9f2f8b069 100644 (file)
--- a/182
+++ b/182
@@ -63,7 +63,7 @@ _check_files()
                else
                        echo file $file missing - sync failed
                fi
-               i=`expr $i + 1`
+               let i=$i+1
        done
 }
 
@@ -78,7 +78,7 @@ do
                echo error creating/writing file $file
                exit
        fi
-       i=`expr $i + 1`
+       let i=$i+1
 done
 
 # sync, then shutdown immediately after, then remount and test
index 31f71f2eb2d241454e6a6c82b257f51c249f4f8e..5f16273b2fb39eb67204dc19a30b515ac537d897 100644 (file)
@@ -77,11 +77,11 @@ _acl_list()
 #
 _create_n_aces()
 {
-    n=`expr $1 - 4`
+    let n=$1-4
     acl='u::rwx,g::rwx,o::rwx,m::rwx' # 4 ace acl start
     while [ $n -ne 0 ]; do
-       acl="$acl,u:$n:rwx"
-       n=`expr $n - 1` 
+       acl="$acl,u:$n:rwx"
+       let n=$n-1
     done
     echo $acl
 }
index c80a9c1c98cdc8c5bddf611a3a724c8464109cc6..6d2f120f20f5a6d841372c646e69c27d1a1c020b 100644 (file)
@@ -97,7 +97,7 @@ _check_onl()
        else
            sleep 1
        fi
-       i=`expr $i + 1`
+       let i=$i+1
     done
 
 
@@ -135,7 +135,7 @@ _wait_tape()
        else
            sleep 1
        fi
-       i=`expr $i + 1`
+       let i=$i+1
     done
 }
 
@@ -681,7 +681,7 @@ _create_hardlinks()
        _hardlink=$_fname$_suffix
        echo "creating hardlink $_hardlink to $_fname"
        ln $_fname $_hardlink
-       _j=`expr $_j + 1`
+       let _j=$_j+1
     done
 }
 
@@ -697,7 +697,7 @@ _create_hardset()
     _i=1
     while [ $_i -le $_numsets ]; do
        _create_hardlinks file$_i 5
-       _i=`expr $_i + 1`
+       let _i=$_i+1
     done
 }
 
@@ -973,7 +973,7 @@ _do_dump_multi_file()
     while [ $i -lt $multi ]
     do
        multi_args="$multi_args -f $dump_file.$i -M $media_label.$i"
-       i=`expr $i + 1`
+       let i=$i+1
     done
 
     echo "Dumping to files..."
@@ -1093,7 +1093,7 @@ _do_restore_multi_file()
     while [ $i -lt $multi ]
     do
        multi_args="$multi_args -f $dump_file.$i"
-       i=`expr $i + 1`
+       let i=$i+1
     done
 
     echo "Restoring from file..."
index 7b6ca0d064f6d6eb5c9b69e73d9c1e34fc6882b6..317e00969316babd6eaaf29c2616abc4daf92e0d 100644 (file)
--- a/common.rc
+++ b/common.rc
@@ -152,7 +152,7 @@ _mount_ops_filter()
     params="$*"
     
     #get mount point to handle dmapi mtpt option correctly
-    last_index=`expr $# - 1`
+    let last_index=$#-1
     [ $last_index -gt 0 ] && shift $last_index
     FS_ESCAPED=$1
     
@@ -1122,11 +1122,11 @@ _nfiles()
         while [ $f -lt $1 ]
         do
                 file=f$f
-                touch $file
+                echo > $file
                 if [ $size -gt 0 ]; then
                     dd if=/dev/zero of=$file bs=1024 count=$size
                 fi
-                f=`expr $f + 1`
+               let f=$f+1
         done
 }
 
@@ -1140,7 +1140,7 @@ _descend()
         _nfiles $files           # files for this dir
 
         [ $depth -eq 0 ] && return
-        deep=`expr $depth - 1`  # go 1 down
+       let deep=$depth-1 # go 1 down
 
         [ $verbose = true ] && echo "descending, depth from leaves = $deep"
 
@@ -1148,7 +1148,7 @@ _descend()
         while [ $d -lt $dirs ]
         do
                 _descend d$d $deep &
-                d=`expr $d + 1`
+               let d=$d+1
                 wait
         done
 }