-
Bug
-
Resolution: Unresolved
-
Undefined
-
rhel-10.1
-
qemu-kvm-10.0.0-7.el10
-
Yes
-
Moderate
-
ZStream
-
1
-
rhel-virt-storage
-
ssg_virtualization
-
0
-
False
-
False
-
-
None
-
Planning backlog
-
Approved Blocker
-
Pass
-
RegressionOnly
-
Unspecified
-
Unspecified
-
Unspecified
-
None
What were you trying to do that didn't work?
While profiling qemu-kvm I noticed that perf-top(1) lists virtqueue_split_pop() as one of the biggest CPU consumers. This function is called frequently during I/O and was zeroing many KBs of memory after the -ftrivial-auto-var-init=zero flag was enabled in RHEL 9.5.
Further investigation by Daniel Berrangé showed that there are more places in qemu-kvm where performance regressions could occur:
https://lore.kernel.org/qemu-devel/aEHn5XHU0-N67gWs@redhat.com/
What is the impact of this issue to you?
This is a performance regression. Earlier qemu-kvm releases were built without ftrivialauto-var-init=zero.
Avoiding zeroing memory in virtqueue_split_pop() improves fio randread bs=4k iodepth=64 performance from 304k to 332k IOPS (+9%).
Please provide the package NVR for which the bug is seen:
How reproducible is this bug?:
100%
Steps to reproduce
Run the following fio command-line:
BLKDEV=/dev/vda fio --ioengine=io_uring \ --ioscheduler=none \ --numjobs=$(nproc) \ --direct=1 \ --runtime=30 \ --ramp_time=5 \ --clocksource=cpu \ --norandommap \ --cpus_allowed_policy=split \ --rw=randread \ --bs=4k \ --iodepth=64 \ --time_based=1 \ --group_reporting \ --name=job1 \ --filename=$BLKDEV
Expected results
After the patch performance improves.
Actual results
Before the patch performance is lower.
- links to
-
RHBA-2025:147447 qemu-kvm bug fix and enhancement update