Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-95479

-ftrivial-auto-var-init=zero reduced performance

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • qemu-kvm-10.0.0-7.el10
    • Yes
    • Moderate
    • ZStream
    • 1
    • rhel-virt-storage
    • ssg_virtualization
    • 0
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • Planning backlog
    • Approved Blocker
    • 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.

              shajnocz@redhat.com Stefan Hajnoczi
              shajnocz@redhat.com Stefan Hajnoczi
              virt-maint virt-maint
              Qinghua Cheng Qinghua Cheng
              Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

                Created:
                Updated: