Skip to content

Instantly share code, notes, and snippets.

@graysky2
Created April 16, 2018 23:21
Show Gist options
  • Save graysky2/f586bc69f7b3680a25f7c6829e57cc6d to your computer and use it in GitHub Desktop.
Save graysky2/f586bc69f7b3680a25f7c6829e57cc6d to your computer and use it in GitHub Desktop.
#!/bin/bash
limit=10
NFS=/scratch
if ! mountpoint -q "$NFS"; then
echo "$NFS should be a mounted NFS partition"
exit 1
fi
calc() {
diff=$(echo "scale=6; $finish - $start" | bc)
simpdiff=$(echo "scale=2; $finish - $start" | bc)
runsleft=$(echo "scale=2; $limit-$x"| bc)
secleft=$(echo "scale=2; $runsleft*$diff"|bc)
minleft=$(echo "scale=2; $runsleft*$diff/60"|bc)
eta=$(date -d "($date) $secleft sec" +%r)
echo "Run $x/$limit took $simpdiff seconds. ETA: $eta or about $minleft min from now."
echo "$diff sec,$size MB" >> "/tmp/results.csv"
}
for size in 10 18 32 56 100 178 316 562 1000 1778 3162; do
x=0
while [[ "$x" -lt "$limit" ]]; do
x=$(( x + 1 ))
IMG="$NFS/image.$x"
MP="$NFS/mp"
truncate -s 8G "$IMG"
mkfs.ext4 -F "$IMG" &>/dev/null
[[ -d "$MP" ]] || mkdir "$MP"
mount -o loop "$IMG" "$MP"
# write out 4G of random data to the mounted image
echo "Writting round $x for $size MB"
RUNDATE=$(date "+%F %T")
start=$(date +%s.%N)
dd if=/dev/zero of="$MP/rnd.$x" bs=1M count=$size status=progress
finish=$(date +%s.%N)
calc
echo "Round $x done"
umount "$MP"
rmdir "$MP"
rm -f "$IMG"
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment