summaryrefslogtreecommitdiffstats
path: root/analysis/benchmark_loop_nbd.txt
blob: 22372ec93c4a6885c6bf3f2b2352d17064a324fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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