qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

QEMU RBD is slow with QCOW2 images


From: Stefano Garzarella
Subject: QEMU RBD is slow with QCOW2 images
Date: Wed, 3 Mar 2021 18:40:58 +0100

Hi Jason,
as reported in this BZ [1], when qemu-img creates a QCOW2 image on RBD writing data is very slow compared to a raw file.

Comparing raw vs QCOW2 image creation with RBD I found that we use a different object size, for the raw file I see '4 MiB objects', for QCOW2 I see '64 KiB objects' as reported on comment 14 [2]. This should be the main issue of slowness, indeed forcing in the code 4 MiB object size also for QCOW2 increased the speed a lot.

Looking better I discovered that for raw files, we call rbd_create() with obj_order = 0 (if 'cluster_size' options is not defined), so the default object size is used. Instead for QCOW2, we use obj_order = 16, since the default 'cluster_size' defined for QCOW2, is 64 KiB.

Using '-o cluster_size=2M' with qemu-img changed only the qcow2 cluster size, since in qcow2_co_create_opts() we remove the 'cluster_size' from QemuOpts calling qemu_opts_to_qdict_filtered(). For some reason that I have yet to understand, after this deletion, however remains in QemuOpts the default value of 'cluster_size' for qcow2 (64 KiB), that it's used in qemu_rbd_co_create_opts()

At this point my doubts are:
Does it make sense to use the same cluster_size as qcow2 as object_size in RBD? If we want to keep the 2 options separated, how can it be done? Should we rename the option in block/rbd.c?

Thanks,
Stefano

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1744525
[2] https://bugzilla.redhat.com/show_bug.cgi?id=1744525#c14




reply via email to

[Prev in Thread] Current Thread [Next in Thread]