From 3574ed53bb31a72efb827c651045e07483d0244b Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Wed, 22 May 2019 16:55:25 +0200 Subject: Added loop device vs. nbd benchmark measurements --- analysis/benchmark_loop_nbd.txt | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 analysis/benchmark_loop_nbd.txt diff --git a/analysis/benchmark_loop_nbd.txt b/analysis/benchmark_loop_nbd.txt new file mode 100644 index 0000000..22372ec --- /dev/null +++ b/analysis/benchmark_loop_nbd.txt @@ -0,0 +1,96 @@ +Loop vs. NBD benchmark + +=============================================================================== + +The benchmark compares the performance of the loop block device driver with +the network block device driver using qemu-nbd version 4.0.0 and Linux kernel +version 5.1.2. The performance was determined by the data throughput of write +operations to preallocated disk image files (raw, qcow2) using either the +loop device or the nbd driver. + +The results were mesured on an Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz with +SSD storage. + +=============================================================================== + +Preparation: + +~$ qemu-img create -f raw -o preallocation=full nbd-raw_test.img 100M +~$ qemu-img create -f qcow2 -o preallocation=full nbd-qcow2_test.qcow2 100M +~$ qemu-img create -f raw -o preallocation=full loop-raw_test.img 100M + +~$ modprobe nbd +~$ qemu-nbd -c /dev/nbd0 -f raw nbd-raw_test.img +~$ qemu-nbd -c /dev/nbd1 -f qcow2 nbd-qcow2_test.qcow2 +~$ modprobe loop +~$ losetup /dev/loop0 loop-raw_test.img + +=============================================================================== + +Results: + +~$ dd if=/dev/zero of=/dev/loop0 bs=100M count=1 oflag=direct + 1+0 records in + 1+0 records out + 104857600 bytes (105 MB, 100 MiB) copied, 0.0942829 s, 1.1 GB/s + +~$ dd if=/dev/zero of=/dev/nbd0 bs=100M count=1 oflag=direct + 1+0 records in + 1+0 records out + 104857600 bytes (105 MB, 100 MiB) copied, 1.50101 s, 69.9 MB/s + +~$ dd if=/dev/zero of=/dev/nbd1 bs=100M count=1 oflag=direct + 1+0 records in + 1+0 records out + 104857600 bytes (105 MB, 100 MiB) copied, 2.02387 s, 51.8 MB/s + +------------------------------------------------------------------------------- + +~$ dd if=/dev/zero of=/dev/loop0 bs=512 count=1000 oflag=direct + 1000+0 records in + 1000+0 records out + 512000 bytes (512 kB, 500 KiB) copied, 0.0328669 s, 15.6 MB/s + +~$ dd if=/dev/zero of=/dev/nbd0 bs=512 count=1000 oflag=direct + 1000+0 records in + 1000+0 records out + 512000 bytes (512 kB, 500 KiB) copied, 0.877605 s, 583 kB/s + +~$ dd if=/dev/zero of=/dev/nbd1 bs=512 count=1000 oflag=direct + 1000+0 records in + 1000+0 records out + 512000 bytes (512 kB, 500 KiB) copied, 0.887766 s, 577 kB/s + +------------------------------------------------------------------------------- + +~$ dd if=/dev/zero of=/dev/loop0 bs=100M count=1 oflag=dsync + 1+0 records in + 1+0 records out + 104857600 bytes (105 MB, 100 MiB) copied, 0.480756 s, 218 MB/s + +~$ dd if=/dev/zero of=/dev/nbd0 bs=100M count=1 oflag=dsync + 1+0 records in + 1+0 records out + 104857600 bytes (105 MB, 100 MiB) copied, 1.14004 s, 92.0 MB/s + +~$ dd if=/dev/zero of=/dev/nbd1 bs=100M count=1 oflag=dsync + 1+0 records in + 1+0 records out + 104857600 bytes (105 MB, 100 MiB) copied, 1.77562 s, 59.1 MB/s + +------------------------------------------------------------------------------- + +~$ dd if=/dev/zero of=/dev/loop0 bs=512 count=1000 oflag=dsync + 1000+0 records in + 1000+0 records out + 512000 bytes (512 kB, 500 KiB) copied, 1.27318 s, 402 kB/s + +~$ dd if=/dev/zero of=/dev/nbd0 bs=512 count=1000 oflag=dsync + 1000+0 records in + 1000+0 records out + 512000 bytes (512 kB, 500 KiB) copied, 0.88749 s, 577 kB/ + +~$ dd if=/dev/zero of=/dev/nbd1 bs=512 count=1000 oflag=dsync + 1000+0 records in + 1000+0 records out + 512000 bytes (512 kB, 500 KiB) copied, 0.934727 s, 548 kB/s -- cgit v1.2.3-55-g7522