qemu-kvm 使用过多的 cpu

问题描述 投票:0回答:1

我正在寻找有关 qemu-system-x86_64 占用过多 CPU 时间 400-800%、导致虚拟机无响应的问题/答案。看起来 10 到 30 分钟后它会平静下来,并以 35 - 50% CPU 运行正常,直到下次我必须重新启动或启动主机。使用 Virtual Machine Manager 重新启动 qemu 或 guest 虚拟机并没有帮助。事实证明这不仅仅是在启动时。有时,在客户机运行良好后,主机 CPU 使用率会回升一段时间。目前运行速度为 750 - 800%。

硬件:Dell Precision M4700,8 核,32 GB RAM 主机:ubuntu 22.04 LTS 访客:Windows 10 版本 22H2 QEMU 模拟器版本 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.15)

我在这里看到了几篇旧帖子,其中一篇提到使用 -enable-kvm 选项,另一篇提到 -machine accel=kvm 选项。当我运行 ps aux|grep qemu-system|grep enable-kvm 时,我没有看到任何东西,而当我运行 ps aux|grep qemu-system|grep accel 时,我看到“-accel kvm”。根据手册页,看起来 -accel kvm 是当前语法。我的 -cpu 选项是 -cpu host,migratable=on,hv-time=on ps aux|grep qemu-system 的完整结果是

4699 78.7 14.6 8925332 4783304 ?     Sl   Dec13 2062:19 /usr/bin/qemu-system-x86_64 -name guest=Win10,debug-threads=on -S -object {"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-1-Win10/master-key.aes"} -machine pc-i440fx-focal,usb=off,vmport=off,dump-guest-core=off,memory-backend=pc.ram -accel kvm -cpu host,migratable=on,hv-time=on -m 6144 -object {"qom-type":"memory-backend-ram","id":"pc.ram","size":6442450944} -overcommit mem-lock=off -smp 16,sockets=2,dies=1,cores=4,threads=2 -uuid 1f385eae-2aa8-4e41-b569-87d876c42746 -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=31,server=on,wait=off -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.0,addr=0x5 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/Windows10.qcow2","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage","backing":null} -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 -fsdev local,security_model=mapped,writeout=immediate,id=fsdev-fs0,path=/home/markp/SHARE -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=/SHARE,bus=pci.0,addr=0x8 -netdev tap,fd=33,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=52:54:00:14:df:da,bus=pci.0,addr=0x3 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -chardev socket,id=chrtpm,path=/run/libvirt/qemu/swtpm/1-Win10-swtpm.sock -tpmdev emulator,id=tpm-tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm-tpm0,id=tpm0 -audiodev {"id":"audio1","driver":"spice"} -spice port=5900,addr=127.0.0.1,disable-ticketing=on,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=2,bus=pci.0,addr=0x2 -device ich9-intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0,audiodev=audio1 -device usb-host,id=hostdev0,bus=usb.0,port=1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on

在这么长的启动时间内,我无法在 Windows VM 中执行任何操作,因为它完全没有响应。

Q1:假设启用了我的 qemu 构建,是否会添加 -enable-kvm 选项帮助?

Q2:如果添加选项,在哪里添加?我不知道/记得 qemu 在我的机器上是如何启动的,但它是自动启动的。

Q3:在这个 CPU 使用高峰期,您对它在做什么有什么想法吗? Windows 任务管理器列出的启用的启动进程包括:TightVNC Server、Java Update Scheduler、Slack、Norton Secure Browser、Brave VPN Wireguard Service、Windows 安全通知图标和 SideSlide.exe(桌面图标管理器)。

Q4:有什么调试建议吗?

感谢您的任何想法。

马克

我希望虚拟机在每次启动后一分钟左右以及在运行时定期使用不会使用如此过多的CPU时间。对于无法在 Linux 下运行的应用程序来说,使用起来不切实际,并且会中断我的工作。

qemu ubuntu-22.04 cpu-load
1个回答
0
投票

我可能已经通过使用虚拟机管理器撤消 2 个插槽、2 个核心和 2 个线程的“手动设置 CPU 拓扑”并将 vCPU 分配在 8 个逻辑主机 CPU 中的 2 个来解决我自己的性能问题。我得看看进展如何。

但我仍然想知道如何添加或修改 qemu-system-x86_64 的选项或回答我的任何其他问题。

© www.soinside.com 2019 - 2024. All rights reserved.