aboutsummaryrefslogtreecommitdiff
path: root/tests/stress_tests/extractloop.bash
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stress_tests/extractloop.bash')
-rwxr-xr-xtests/stress_tests/extractloop.bash51
1 files changed, 37 insertions, 14 deletions
diff --git a/tests/stress_tests/extractloop.bash b/tests/stress_tests/extractloop.bash
index 1c0d4ce..09dfec8 100755
--- a/tests/stress_tests/extractloop.bash
+++ b/tests/stress_tests/extractloop.bash
@@ -17,39 +17,50 @@ MD5="$PWD/linux-3.0.md5sums"
# Setup dirs
cd /tmp
wget -nv --show-progress -c https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.gz
-DIR1=$(mktemp -d /tmp/extractloop.XXX)
-DIR2=$DIR1.mnt
-mkdir $DIR2
+CRYPT=$(mktemp -d /tmp/extractloop.XXX)
+CSV=$CRYPT.csv
+MNT=$CRYPT.mnt
+mkdir $MNT
# Mount
+FSPID=0
if [ $# -eq 1 ] && [ "$1" == "-encfs" ]; then
echo "Testing EncFS"
- encfs --extpass="echo test" --standard $DIR1 $DIR2 > /dev/null
+ encfs --extpass="echo test" --standard $CRYPT $MNT > /dev/null
elif [ $# -eq 1 ] && [ "$1" == "-loopback" ]; then
echo "Testing go-fuse loopback"
- loopback -l $DIR2 $DIR1 &
- sleep 1
+ rm -f /tmp/loopback*.memprof
+ loopback -l -memprofile=/tmp/loopback $MNT $CRYPT &
+ FSPID=$(jobs -p)
else
- gocryptfs -q -init -extpass="echo test" -scryptn=10 $DIR1
- gocryptfs -q -extpass="echo test" $DIR1 $DIR2
- #gocryptfs -q -extpass="echo test" -nosyslog -memprofile /tmp/extractloop-mem $DIR1 $DIR2
+ echo "Testing gocryptfs"
+ gocryptfs -q -init -extpass="echo test" -scryptn=10 $CRYPT
+ gocryptfs -q -extpass="echo test" -nosyslog -f $CRYPT $MNT &
+ FSPID=$(jobs -p)
+ #gocryptfs -q -extpass="echo test" -nosyslog -memprofile /tmp/extractloop-mem $CRYPT $MNT
fi
-cd $DIR2
+echo "Test dir: $CRYPT"
+# Sleep to make sure the FS is already mounted on MNT
+sleep 1
+cd $MNT
+
+ln -sTf $CSV /tmp/extractloop.csv
# Cleanup trap
# Note: gocryptfs may have already umounted itself because bash relays SIGINT
# Just ignore fusermount errors.
-trap "cd /; fusermount -u -z $DIR2; rm -rf $DIR1 $DIR2" EXIT
+trap "cd /; fusermount -u -z $MNT; rm -rf $CRYPT $MNT" EXIT
function loop {
- # Note: In a subshell, $$ returns the PID of the *parent* shell,
- # we need our own, which is why we have to use $BASHPID.
+ # Note: In a subshell, $$ returns the PID of the parent shell.
+ # We need our own PID, which is why we use $BASHPID.
mkdir $BASHPID
cd $BASHPID
echo "[pid $BASHPID] Starting loop"
N=1
+ RSS=0
while true
do
t1=$SECONDS
@@ -58,11 +69,23 @@ function loop {
rm -Rf linux-3.0
t2=$SECONDS
delta=$((t2-t1))
- echo "[pid $BASHPID] Iteration $N done, $delta seconds"
+ if [ $FSPID -gt 0 ]; then
+ RSS=$(grep VmRSS /proc/$FSPID/status | tr -s ' ' | cut -f2 -d ' ')
+ echo "$N,$SECONDS,$RSS" >> $CSV
+ fi
+ echo "[pid $BASHPID] Iteration $N done, $delta seconds, RSS $RSS kiB"
let N=$N+1
done
}
+function memprof {
+ while true; do
+ kill -USR1 $FSPID
+ sleep 60
+ done
+}
+
loop &
loop &
+#memprof &
wait