3x 100% host CPU core usage while virtual machine is in idle

Bug #1902365 reported by Germano Massullo
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Undecided
Unassigned

Bug Description

My Fedora 33 machine "top" command shows qemu-system-x86_64 process using ~300% CPU, that means 3x CPU cores at 100%. Since the virtual machine (named CentOS 8) is almost in idle (top command inside the VM shows ~0% CPU usage), there must be something wrong. I attach qemu process GDB backtrace, and virtual machine libvirt XML

Host details:
libvirt-6.6.0-2.fc33.x86_64
qemu-system-x86-5.1.0-5.fc33.x86_64
virt-manager-3.1.0-1.fc33.noarch
kernel 5.8.16-300.fc33.x86_64
CPU: AMD Ryzen 5 3600

# gdb qemu-system-x86_64 405756
GNU gdb (GDB) Fedora 9.2-7.fc33
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from qemu-system-x86_64...
Reading symbols from .gnu_debugdata for /usr/bin/qemu-system-x86_64...
(No debugging symbols found in .gnu_debugdata for /usr/bin/qemu-system-x86_64)
Attaching to program: /usr/bin/qemu-system-x86_64, process 405756
[New LWP 405788]
[New LWP 405798]
[New LWP 405799]
[New LWP 405800]
[New LWP 405801]
[New LWP 405802]
[New LWP 405804]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
0x00007f549d0bdb0e in ppoll () from target:/lib64/libc.so.6
(gdb) set height 0
(gdb) set print elements 0
(gdb) set print frame-arguments all
(gdb) thread apply all backtrace

Thread 8 (Thread 0x7f53837ff640 (LWP 405804)):
#0 0x00007f549d0bda0f in poll () from target:/lib64/libc.so.6
#1 0x00007f549e4c2d1e in g_main_context_iterate.constprop () from target:/lib64/libglib-2.0.so.0
#2 0x00007f549e4716ab in g_main_loop_run () from target:/lib64/libglib-2.0.so.0
#3 0x00007f549dcfcc66 in red_worker_main.lto_priv () from target:/lib64/libspice-server.so.1
#4 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#5 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 7 (Thread 0x7f5390dfd640 (LWP 405802)):
#0 0x00007f549d0bf58b in ioctl () from target:/lib64/libc.so.6
#1 0x000055a60728ec87 in kvm_vcpu_ioctl ()
#2 0x000055a60728edc1 in kvm_cpu_exec ()
#3 0x000055a60734dc04 in qemu_kvm_cpu_thread_fn ()
#4 0x000055a6076dc0ff in qemu_thread_start ()
#5 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#6 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 6 (Thread 0x7f53915fe640 (LWP 405801)):
#0 0x00007f549d0bf58b in ioctl () from target:/lib64/libc.so.6
#1 0x000055a60728ec87 in kvm_vcpu_ioctl ()
#2 0x000055a60728edc1 in kvm_cpu_exec ()
#3 0x000055a60734dc04 in qemu_kvm_cpu_thread_fn ()
#4 0x000055a6076dc0ff in qemu_thread_start ()
#5 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#6 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 5 (Thread 0x7f5391dff640 (LWP 405800)):
#0 0x00007f549d0bf58b in ioctl () from target:/lib64/libc.so.6
#1 0x000055a60728ec87 in kvm_vcpu_ioctl ()
#2 0x000055a60728edc1 in kvm_cpu_exec ()
#3 0x000055a60734dc04 in qemu_kvm_cpu_thread_fn ()
#4 0x000055a6076dc0ff in qemu_thread_start ()
#5 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#6 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 4 (Thread 0x7f54988b7640 (LWP 405799)):
#0 0x00007f549d0bf58b in ioctl () from target:/lib64/libc.so.6
#1 0x000055a60728ec87 in kvm_vcpu_ioctl ()
#2 0x000055a60728edc1 in kvm_cpu_exec ()
#3 0x000055a60734dc04 in qemu_kvm_cpu_thread_fn ()
#4 0x000055a6076dc0ff in qemu_thread_start ()
#5 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#6 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 3 (Thread 0x7f549917b640 (LWP 405798)):
#0 0x00007f549d0bda0f in poll () from target:/lib64/libc.so.6
#1 0x00007f549e4c2d1e in g_main_context_iterate.constprop () from target:/lib64/libglib-2.0.so.0
#2 0x00007f549e4716ab in g_main_loop_run () from target:/lib64/libglib-2.0.so.0
#3 0x000055a6073c4c81 in iothread_run ()
#4 0x000055a6076dc0ff in qemu_thread_start ()
#5 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#6 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 2 (Thread 0x7f549b93a640 (LWP 405788)):
#0 0x00007f549d0c350d in syscall () from target:/lib64/libc.so.6
#1 0x000055a6076dce9a in qemu_event_wait ()
#2 0x000055a6076e56ca in call_rcu_thread ()
#3 0x000055a6076dc0ff in qemu_thread_start ()
#4 0x00007f549d19c3f9 in start_thread () from target:/lib64/libpthread.so.0
#5 0x00007f549d0c8b03 in clone () from target:/lib64/libc.so.6

Thread 1 (Thread 0x7f549bb10f00 (LWP 405756)):
#0 0x00007f549d0bdb0e in ppoll () from target:/lib64/libc.so.6
#1 0x000055a6076f4901 in qemu_poll_ns ()
#2 0x000055a6076f0485 in main_loop_wait ()
#3 0x000055a60735cdd7 in qemu_main_loop ()
#4 0x000055a607234a1e in main ()
(gdb)

# virsh dumpxml centos8
<domain type='kvm' id='1'>
  <name>centos8</name>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://centos.org/centos/8"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>4096000</memory>
  <currentMemory unit='KiB'>4096000</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-4.2'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>EPYC-IBPB</model>
    <vendor>AMD</vendor>
    <feature policy='require' name='x2apic'/>
    <feature policy='require' name='tsc-deadline'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='require' name='tsc_adjust'/>
    <feature policy='require' name='clwb'/>
    <feature policy='require' name='umip'/>
    <feature policy='require' name='rdpid'/>
    <feature policy='require' name='stibp'/>
    <feature policy='require' name='arch-capabilities'/>
    <feature policy='require' name='ssbd'/>
    <feature policy='require' name='xsaves'/>
    <feature policy='require' name='cmp_legacy'/>
    <feature policy='require' name='perfctr_core'/>
    <feature policy='require' name='clzero'/>
    <feature policy='require' name='xsaveerptr'/>
    <feature policy='require' name='wbnoinvd'/>
    <feature policy='require' name='amd-stibp'/>
    <feature policy='require' name='amd-ssbd'/>
    <feature policy='require' name='virt-ssbd'/>
    <feature policy='disable' name='npt'/>
    <feature policy='disable' name='nrip-save'/>
    <feature policy='require' name='rdctl-no'/>
    <feature policy='require' name='skip-l1dfl-vmentry'/>
    <feature policy='require' name='mds-no'/>
    <feature policy='require' name='pschange-mc-no'/>
    <feature policy='disable' name='monitor'/>
    <feature policy='disable' name='svm'/>
    <feature policy='require' name='topoext'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos8.qcow2' index='6'/>
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos8-1.qcow2' index='5'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos8-2.qcow2' index='4'/>
      <backingStore/>
      <target dev='vdc' bus='virtio'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos8-3.qcow2' index='3'/>
      <backingStore/>
      <target dev='vdd' bus='virtio'/>
      <alias name='virtio-disk3'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos8-4.qcow2' index='2'/>
      <backingStore/>
      <target dev='vde' bus='virtio'/>
      <alias name='virtio-disk4'/>
      <address type='pci' domain='0x0000' bus='0x0a' slot='0x00' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu'/>
      <target dev='sda' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <alias name='pci.1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x11'/>
      <alias name='pci.2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x12'/>
      <alias name='pci.3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x13'/>
      <alias name='pci.4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x14'/>
      <alias name='pci.5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x15'/>
      <alias name='pci.6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0x16'/>
      <alias name='pci.7'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0x17'/>
      <alias name='pci.8'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x7'/>
    </controller>
    <controller type='pci' index='9' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='9' port='0x18'/>
      <alias name='pci.9'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='10' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='10' port='0x19'/>
      <alias name='pci.10'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:d4:02:c2'/>
      <source network='default' portid='643b50a3-f347-4c2e-995e-7644a7ad0a96' bridge='virbr0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/4'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/4'>
      <source path='/dev/pts/4'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-centos8/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0' state='connected'/>
      <alias name='channel1'/>
      <address type='virtio-serial' controller='0' bus='0' port='2'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='spice' port='5900' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich9'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir0'/>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir1'/>
      <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </memballoon>
    <rng model='virtio'>
      <backend model='random'>/dev/urandom</backend>
      <alias name='rng0'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </rng>
  </devices>
  <seclabel type='dynamic' model='selinux' relabel='yes'>
    <label>system_u:system_r:svirt_t:s0:c571,c902</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c571,c902</imagelabel>
  </seclabel>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+107:+107</label>
    <imagelabel>+107:+107</imagelabel>
  </seclabel>
</domain>

Revision history for this message
Thomas Huth (th-huth) wrote :

The QEMU project is currently moving its bug tracking to another system.
For this we need to know which bugs are still valid and which could be
closed already. Thus we are setting the bug state to "Incomplete" now.

If the bug has already been fixed in the latest upstream version of QEMU,
then please close this ticket as "Fix released".

If it is not fixed yet and you think that this bug report here is still
valid, then you have two options:

1) If you already have an account on gitlab.com, please open a new ticket
for this problem in our new tracker here:

    https://gitlab.com/qemu-project/qemu/-/issues

and then close this ticket here on Launchpad (or let it expire auto-
matically after 60 days). Please mention the URL of this bug ticket on
Launchpad in the new ticket on GitLab.

2) If you don't have an account on gitlab.com and don't intend to get
one, but still would like to keep this ticket opened, then please switch
the state back to "New" or "Confirmed" within the next 60 days (other-
wise it will get closed as "Expired"). We will then eventually migrate
the ticket automatically to the new system (but you won't be the reporter
of the bug in the new system and thus you won't get notified on changes
anymore).

Thank you and sorry for the inconvenience.

Changed in qemu:
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for QEMU because there has been no activity for 60 days.]

Changed in qemu:
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers