Skip to content

Instantly share code, notes, and snippets.

@adam900710
Created December 11, 2018 05:00
Show Gist options
  • Save adam900710/f5e1006eb5846eabc4155126c4ca2e46 to your computer and use it in GitHub Desktop.
Save adam900710/f5e1006eb5846eabc4155126c4ca2e46 to your computer and use it in GitHub Desktop.
#!/bin/bash
dev=/dev/test/test
mnt=/mnt/btrfs
dmesg -C
umount $mnt &> /dev/null
umount $dev &> /dev/null
mkfs.btrfs -f $dev -n 4k -m single
mount $dev $mnt -o nospace_cache,max_inline=2048
#btrfs sub create $mnt/src
mkdir $mnt/src
mkdir -p $mnt/snapshots
btrfs quota enable $mnt
btrfs quota rescan -w $mnt
fill_workload()
{
for i in $(seq 1 10000); do
xfs_io -f -c "pwrite 0 512K" $mnt/src/file_large_$i > /dev/null
xfs_io -f -c "pwrite 0 2K" $mnt/src/file_inline_$i > /dev/null
if [ $(( $i % 5 )) -eq 0 ]; then
rm $mnt/src/$(ls $mnt/src/ | sort -R | tail -n1)
fi
done
echo "fill_workload finished"
}
snapshot_workload()
{
for i in $(seq 1 10000); do
sleep 2
#btrfs subv snapshot $mnt/src $mnt/snapshots/$i
btrfs subv snapshot $mnt $mnt/snapshots/$i
done
echo "snapshot_workoad finished"
}
delete_workload()
{
while true; do
sleep 4
last=$(ls $mnt/snapshots | sort | tail -n1)
dest=$(( $RANDOM % $last + 1))
if [ -d $mnt/snapshots/$dest ]; then
btrfs subv delete $mnt/snapshots/${dest}
fi
done
}
fill_workload &
sleep 3
snapshot_workload &
delete_workload &
sleep 60
kill 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment