diff options
Diffstat (limited to 'dev-tools')
-rwxr-xr-x | dev-tools/io_test.sh | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/dev-tools/io_test.sh b/dev-tools/io_test.sh new file mode 100755 index 00000000..d511ee86 --- /dev/null +++ b/dev-tools/io_test.sh @@ -0,0 +1,105 @@ +#image="$(realpath "$1")" +image="/home/h4ct1c/git/masterteamprojekt/dnbd3_images/archLinux/archLinux.vdi.r10" +test_directory=/tmp/performance_test +[ ! -z $2 ] && test_directory="$2" + +image_directory="$(dirname "$image")" +dnbd3_rootfs_directory="../builder/dnbd3-rootfs" +log_directory="./io_test_logs" +mountpoint_xmount="${test_directory}/mnt_xmount" +mountpoint="${test_directory}/mnt" + + +source ${dnbd3_rootfs_directory}/scripts/build.sh + +if [[ ! -d "$test_directory" ]]; then + mkdir "$test_directory" + mkdir "$mountpoint_xmount" + mkdir "$mountpoint" + mkdir "$log_directory" + + build_clean_xmount ${dnbd3_rootfs_directory}/binaries/xmount + build_clean_qemu_xmount ${dnbd3_rootfs_directory}/binaries/qemu-xmount + + build_compile_xmount ${dnbd3_rootfs_directory}/binaries/xmount \ + "/" "${test_directory}/xmount" + build_compile_qemu_xmount ${dnbd3_rootfs_directory}/binaries/qemu-xmount \ + "${test_directory}/xmount" + cp ${dnbd3_rootfs_directory}/binaries/qemu-xmount/libxmount_input_qemu.so \ + "${test_directory}/xmount/lib/xmount/" +fi + +pushd "$log_directory" + +dd_test() { + local device="$1" + size_in_megabyte="$2" + dd if="$device" of=/dev/null \ + bs="$size_in_megabyte"M count=1\ + iflag=direct \ + 2>&1 | grep bytes +} +fio_test() { + local device="$1" + shift + local name="$1" + shift + fio --readonly --name=hans --direct=1 --write_bw_log="$name" \ + --size=2G --filename="$device" $@ +} +test_device() { + local device="$1" + local name="$2" + echo + + #echo "-------------- $2 read test (dd)" + #dd_test "$device" 1000 + + #echo "-------------- $2 read test (fio)" + #fio_test "$device" "$name" --rw=read + + echo "-------------- $2 read test (fio random read)" + fio_test "$device" "${name}.rand" --rw=randread + + #echo "-------------- $2 read test (fio random read libaio)" + #fio_test "$device" "${name}.rand,libaio" --rw=randread --ioengine=libaio + + #echo "-------------- $2 read test (find)" + #mount -o ro "$device"p2 "$mountpoint" + #(time find "$mountpoint" 1>/dev/null) 2>&1 | grep -E 'user|sys' + #umount "$mountpoint" +} +test_qemu() { + # qemu-nbd test (no cache) + modprobe nbd max_part=16 + qemu-nbd --connect=/dev/nbd0 --read-only --persistent --nocache "$image" + #ln -s /dev/nbd0 "$image" # device as file (for dnbd3) + test_device "/dev/nbd0" "qemu-nbd (nocache)" + # qemu-nbd teardown + qemu-nbd -d /dev/nbd0 >/dev/null # disconnect + + # qemu-nbd test + qemu-nbd --connect=/dev/nbd0 --read-only --persistent "$image" + test_device "/dev/nbd0" "qemu-nbd" + # qemu-nbd teardown + qemu-nbd -d /dev/nbd0 >/dev/null # disconnect +} + +test_xmount() { + #xmount test + ${test_directory}/xmount/bin/xmount --in qemu "$image" \ + --out raw "${mountpoint_xmount}" + loop_device="$(losetup -f)" + losetup "$loop_device" "${mountpoint_xmount}"/*.dd --partscan + test_device "$loop_device" "xmount" + + # xmount teardown + losetup -d "$loop_device" + umount "$mountpoint_xmount" +} + +test_qemu +test_xmount +chown $(who | awk '{print $1}') *.log +fio2gnuplot -b -g +popd |