Bug 1741939
Summary: | qcow2 L2 cache size is incorrectly calculated | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux Advanced Virtualization | Reporter: | Kevin Wolf <kwolf> |
Component: | qemu-kvm | Assignee: | Kevin Wolf <kwolf> |
qemu-kvm sub component: | General | QA Contact: | CongLi <coli> |
Status: | CLOSED ERRATA | Docs Contact: | |
Severity: | unspecified | ||
Priority: | medium | CC: | areis, coli, ddepaula, jinzhao, juzhang, virt-maint |
Version: | 8.0 | ||
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | qemu-kvm-4.2.0-1.module+el8.2.0+4793+b09dd2fb | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2020-05-05 09:47:43 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Kevin Wolf
2019-08-16 13:42:29 UTC
Tried to verify this bug as below. Steps: 1.Create a data disk over tmpfs. # mkdir tmpfs_dir # mount tmpfs tmpfs_dir/ -t tmpfs -o size=10G # qemu-img create -f qcow2 tmpfs_dir/data.qcow2 1280M # qemu-img info tmpfs_dir/data.qcow2 -U image: tmpfs_dir/data.qcow2 file format: qcow2 virtual size: 1.25 GiB (1342177280 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false 2. Boot a guest with this data disk. # /usr/libexec/qemu-kvm \ -name 'guest-rhel7.7' \ -machine q35 \ -nodefaults \ -vga qxl \ -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \ -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \ -device pcie-root-port,port=0x12,chassis=3,id=pcx.3,bus=pcie.0,addr=0x2.0x2 \ -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \ -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \ -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \ -device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 \ -device pcie-root-port,port=0x17,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 \ -blockdev driver=qcow2,cache.direct=off,cache.no-flush=off,node-name=my_file0,file.driver=file,file.filename=rhel77-64-virtio-scsi.qcow2 \ -device virtio-blk-pci,id=virtio_blk_pci0,drive=my_file0,bus=pci.2,addr=0x0 \ -blockdev driver=qcow2,cache.direct=off,cache.no-flush=off,node-name=my_file1,file.driver=file,file.filename=data.qcow2 \ -device virtio-blk-pci,id=virtio_blk_pci1,drive=my_file1,bus=pcx.3,addr=0x0 \ -vnc :0 \ -m 8192 \ -smp 4 \ -netdev tap,id=hostnet0,vhost=on \ -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:56:00:00:00:07,bus=pci.4,addr=0x0 \ -chardev socket,id=qmp_id_qmpmonitor1,path=/home/qmp-sock2,server,nowait \ -mon chardev=qmp_id_qmpmonitor1,mode=control \ -boot order=cdn,once=c,menu=off,strict=off \ -enable-kvm \ -monitor stdio 3. Allocated ‘0’ to the data disk before i/o test (guest)# dd if=/dev/zero of=/dev/vdb 4. Test the i/o performance via `fio`. In ‘qemu-kvm-4.2.0-1.module+el8.2.0+4793+b09dd2fb’. # fio --filename=/dev/vdb --direct=1 --rw=randwrite --bs=4K --name=my_test --iodepth=1 --ioengine=libaio my_test: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1 fio-3.1 Starting 1 process Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=66.4MiB/s][r=0,w=17.0k IOPS][eta 00m:00s] my_test: (groupid=0, jobs=1): err= 0: pid=2990: Mon Dec 2 18:18:01 2019 write: IOPS=16.9k, BW=66.0MiB/s (69.2MB/s)(1280MiB/19382msec) slat (nsec): min=7876, max=79291, avg=9098.93, stdev=794.69 clat (usec): min=20, max=980, avg=43.62, stdev= 3.84 lat (usec): min=36, max=990, avg=54.24, stdev= 4.01 clat percentiles (usec): | 1.00th=[ 37], 5.00th=[ 40], 10.00th=[ 42], 20.00th=[ 43], | 30.00th=[ 43], 40.00th=[ 44], 50.00th=[ 44], 60.00th=[ 44], | 70.00th=[ 45], 80.00th=[ 45], 90.00th=[ 46], 95.00th=[ 47], | 99.00th=[ 52], 99.50th=[ 53], 99.90th=[ 60], 99.95th=[ 85], | 99.99th=[ 139] bw ( KiB/s): min=66008, max=69784, per=100.00%, avg=67630.08, stdev=863.59, samples=38 iops : min=16502, max=17446, avg=16907.50, stdev=215.89, samples=38 lat (usec) : 50=98.37%, 100=1.61%, 250=0.02%, 500=0.01%, 750=0.01% lat (usec) : 1000=0.01% cpu : usr=14.74%, sys=22.17%, ctx=327684, majf=0, minf=33 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwt: total=0,327680,0, short=0,0,0, dropped=0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): WRITE: bw=66.0MiB/s (69.2MB/s), 66.0MiB/s-66.0MiB/s (69.2MB/s-69.2MB/s), io=1280MiB (1342MB), run=19382-19382msec Disk stats (read/write): vdb: ios=40/323644, merge=0/0, ticks=1/14184, in_queue=14108, util=73.33% # fio --filename=/dev/vdb --direct=1 --rw=randread --bs=4K --name=my_test --iodepth=1 --ioengine=libaio my_test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1 fio-3.1 Starting 1 process Jobs: 1 (f=1): [r(1)][100.0%][r=65.2MiB/s,w=0KiB/s][r=16.7k,w=0 IOPS][eta 00m:00s] my_test: (groupid=0, jobs=1): err= 0: pid=2998: Mon Dec 2 18:18:55 2019 read: IOPS=17.0k, BW=66.4MiB/s (69.7MB/s)(1280MiB/19268msec) slat (nsec): min=7987, max=88676, avg=9089.05, stdev=730.47 clat (usec): min=27, max=315, avg=43.14, stdev= 2.41 lat (usec): min=48, max=422, avg=53.80, stdev= 2.67 clat percentiles (usec): | 1.00th=[ 41], 5.00th=[ 42], 10.00th=[ 42], 20.00th=[ 43], | 30.00th=[ 43], 40.00th=[ 43], 50.00th=[ 43], 60.00th=[ 44], | 70.00th=[ 44], 80.00th=[ 44], 90.00th=[ 45], 95.00th=[ 46], | 99.00th=[ 50], 99.50th=[ 51], 99.90th=[ 75], 99.95th=[ 87], | 99.99th=[ 127] bw ( KiB/s): min=66520, max=69368, per=100.00%, avg=68062.53, stdev=622.70, samples=38 iops : min=16630, max=17342, avg=17015.63, stdev=155.67, samples=38 lat (usec) : 50=99.29%, 100=0.69%, 250=0.02%, 500=0.01% cpu : usr=15.25%, sys=22.20%, ctx=327686, majf=0, minf=36 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwt: total=327680,0,0, short=0,0,0, dropped=0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): READ: bw=66.4MiB/s (69.7MB/s), 66.4MiB/s-66.4MiB/s (69.7MB/s-69.7MB/s), io=1280MiB (1342MB), run=19268-19268msec Disk stats (read/write): vdb: ios=325693/0, merge=0/0, ticks=11027/0, in_queue=10944, util=56.88% Downgrade the qemu package to qemu-4.1. And boot guest again with that data disk. And the CMLs are the same as Step2. In ‘qemu-kvm-4.1.0-14.module+el8.2.0+4670+07fe2774’. # fio --filename=/dev/vdb --direct=1 --rw=randwrite --bs=4K --name=my_test --iodepth=1 --ioengine=libaio my_test: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1 fio-3.1 Starting 1 process Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=53.2MiB/s][r=0,w=13.6k IOPS][eta 00m:00s] my_test: (groupid=0, jobs=1): err= 0: pid=3005: Mon Dec 2 18:10:47 2019 write: IOPS=13.7k, BW=53.6MiB/s (56.2MB/s)(1280MiB/23901msec) slat (nsec): min=8196, max=76198, avg=9359.88, stdev=732.44 clat (usec): min=28, max=525, avg=57.10, stdev=20.16 lat (usec): min=39, max=535, avg=68.00, stdev=20.19 clat percentiles (usec): | 1.00th=[ 42], 5.00th=[ 42], 10.00th=[ 43], 20.00th=[ 44], | 30.00th=[ 44], 40.00th=[ 45], 50.00th=[ 46], 60.00th=[ 47], | 70.00th=[ 53], 80.00th=[ 87], 90.00th=[ 90], 95.00th=[ 92], | 99.00th=[ 97], 99.50th=[ 99], 99.90th=[ 109], 99.95th=[ 125], | 99.99th=[ 159] bw ( KiB/s): min=53024, max=57346, per=100.00%, avg=54843.96, stdev=978.77, samples=47 iops : min=13256, max=14336, avg=13711.00, stdev=244.74, samples=47 lat (usec) : 50=69.23%, 100=30.38%, 250=0.39%, 750=0.01% cpu : usr=11.43%, sys=19.07%, ctx=327683, majf=0, minf=32 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwt: total=0,327680,0, short=0,0,0, dropped=0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): WRITE: bw=53.6MiB/s (56.2MB/s), 53.6MiB/s-53.6MiB/s (56.2MB/s-56.2MB/s), io=1280MiB (1342MB), run=23901-23901msec Disk stats (read/write): vdb: ios=40/327574, merge=0/0, ticks=4/19238, in_queue=19153, util=79.85% # fio --filename=/dev/vdb --direct=1 --rw=randread --bs=4K --name=my_test --iodepth=1 --ioengine=libaio my_test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1 fio-3.1 Starting 1 process Jobs: 1 (f=1): [r(1)][100.0%][r=53.9MiB/s,w=0KiB/s][r=13.8k,w=0 IOPS][eta 00m:00s] my_test: (groupid=0, jobs=1): err= 0: pid=3010: Mon Dec 2 18:11:22 2019 read: IOPS=13.7k, BW=53.4MiB/s (56.0MB/s)(1280MiB/23967msec) slat (nsec): min=7952, max=88243, avg=9037.58, stdev=738.39 clat (usec): min=31, max=1259, avg=57.70, stdev=20.36 lat (usec): min=48, max=1269, avg=68.24, stdev=20.39 clat percentiles (usec): | 1.00th=[ 42], 5.00th=[ 43], 10.00th=[ 43], 20.00th=[ 45], | 30.00th=[ 45], 40.00th=[ 46], 50.00th=[ 46], 60.00th=[ 47], | 70.00th=[ 52], 80.00th=[ 87], 90.00th=[ 90], 95.00th=[ 92], | 99.00th=[ 96], 99.50th=[ 99], 99.90th=[ 103], 99.95th=[ 110], | 99.99th=[ 159] bw ( KiB/s): min=52704, max=56216, per=99.91%, avg=54638.47, stdev=853.21, samples=47 iops : min=13176, max=14054, avg=13659.62, stdev=213.30, samples=47 lat (usec) : 50=69.17%, 100=30.54%, 250=0.29%, 500=0.01%, 750=0.01% lat (usec) : 1000=0.01% lat (msec) : 2=0.01% cpu : usr=11.47%, sys=18.47%, ctx=327683, majf=0, minf=37 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwt: total=327680,0,0, short=0,0,0, dropped=0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): READ: bw=53.4MiB/s (56.0MB/s), 53.4MiB/s-53.4MiB/s (56.0MB/s-56.0MB/s), io=1280MiB (1342MB), run=23967-23967msec Disk stats (read/write): vdb: ios=326530/0, merge=0/0, ticks=19143/0, in_queue=19039, util=79.37% QEMU has been recently split into sub-components and as a one-time operation to avoid breakage of tools, we are setting the QEMU sub-component of this BZ to "General". Please review and change the sub-component if necessary the next time you review this BZ. Thanks Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:2017 |