/qgroup_lockup.sh
Created Dec 10, 2018
| #!/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 | |
| 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 | |
| for i in $(seq -w 1 10); do | |
| rm $mnt/src/$(ls $mnt/src/ | sort -R | tail -n1) | |
| done | |
| done | |
| } | |
| fill_workload & | |
| sleep 3 | |
| snapshot_workload & | |
| delete_workload & | |
| sleep 60 | |
| kill 0 | |
| wait |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment