summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bentele2019-05-22 16:55:25 +0200
committerManuel Bentele2019-06-05 14:29:11 +0200
commit3574ed53bb31a72efb827c651045e07483d0244b (patch)
treecfb727040c1c8218c25d229fe8e6cd58ced1a264
parentAdded sequence and class diagram of the loop device driver (diff)
downloadkernel-qcow2-3574ed53bb31a72efb827c651045e07483d0244b.tar.gz
kernel-qcow2-3574ed53bb31a72efb827c651045e07483d0244b.tar.xz
kernel-qcow2-3574ed53bb31a72efb827c651045e07483d0244b.zip
Added loop device vs. nbd benchmark measurements
-rw-r--r--analysis/benchmark_loop_nbd.txt96
1 files changed, 96 insertions, 0 deletions
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