qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 00/13] microvm: add acpi support


From: Igor Mammedov
Subject: Re: [PATCH 00/13] microvm: add acpi support
Date: Thu, 26 Mar 2020 11:59:43 +0100

On Thu, 26 Mar 2020 03:33:35 -0400
"Michael S. Tsirkin" <address@hidden> wrote:

> On Wed, Mar 25, 2020 at 07:44:34PM +0100, Igor Mammedov wrote:
> > On Wed, 25 Mar 2020 16:03:39 +0100
> > Gerd Hoffmann <address@hidden> wrote:
> >   
> > > On Wed, Mar 25, 2020 at 01:32:12PM +0100, Igor Mammedov wrote:  
> > > > On Thu, 19 Mar 2020 09:01:04 +0100
> > > > Gerd Hoffmann <address@hidden> wrote:
> > > >     
> > > > > I know that not supporting ACPI in microvm is intentional.  If you 
> > > > > still
> > > > > don't want ACPI this is perfectly fine, you can use the usual -no-acpi
> > > > > switch to toggle ACPI support.
> > > > > 
> > > > > These are the advantages you are going to loose then:
> > > > > 
> > > > >   (1) virtio-mmio device discovery without command line hacks 
> > > > > (tweaking
> > > > >       the command line is a problem when not using direct kernel 
> > > > > boot).
> > > > >   (2) Better IO-APIC support, we can use IRQ lines 16-23.
> > > > >   (3) ACPI power button (aka powerdown request) works.
> > > > >   (4) machine poweroff (aka S5 state) works.
> > > > > 
> > > > > Together with seabios patches for virtio-mmio support this allows to
> > > > > boot standard fedora images (cloud, coreos, workstation live) with the
> > > > > microvm machine type.    
> > > > 
> > > > what CLI do you use to test it?    
> > > 
> > > Test script below.  "qemu-default" is a wrapper script which starts
> > > qemu-system-x86_64 from my build directory.  "qemu-firmware" is the
> > > same plus isa-debugcon configured for a firmware log on stdout.
> > > 
> > > Latest bits (with some of the review comments addressed) just pushed
> > > to git://git,kraxel.org/qemu sirius/microvm  
> > 
> > thanks, below are test results I got on my system,
> > spoiler hw-reduced reduces boot time on ~0.02s compared to full blown acpi
> > ----
> > using timestamp at "Run /init as init process" as measuring point
> > 
> > no acpi
> > 1.967316
> > 1.975272
> > 1.981267
> > 1.974316
> > 1.962452
> > 1.960988
> > 
> > hw reduced acpi
> > 0.893838
> > 0.892573
> > 0.890585
> > 0.900306
> > 0.897902
> > 
> > normal acpi:
> > 0.921647
> > 0.916298
> > 0.923518
> > 0.916298
> > 0.913234
> > 
> > PS:
> > I just quickly hacked hw-reduced acpi (using arm/virt as model)
> > without implementing power button but I doubt that would affect results 
> > noticeably 
> > on qemu side it probably also will save some time since there are less
> > things to setup for qemu.  
> 
> And no ACPI is faster because of PS/2 probing, right?
I suppose you've meant -slower- because of ...

if I compare at 'i8042: PNP: No PS/2 controller found.' to rule out
probing, then no-api and hw-reduced are about in the same ballpark
(3-4ms difference in favor of no-acpi).

no-acpi
0.765785
0.783540
0.785269
0.777751
0.774474
0.770611
0.789309

hw-reduced
0.788733
0.775982
0.793132
0.769077
0.774771
0.775191
0.771170

 

> 
> > > 
> > > HTH,
> > >   Gerd
> > > 
> > > ============================ cut here ============================
> > > #!/bin/sh
> > > 
> > > mode="${1}"
> > > shift
> > > 
> > > back=()
> > > devs=()
> > > args=()
> > > qemu="qemu-firmware -monitor none -boot menu=on"
> > > disk=""
> > > liso=""
> > > krnl=""
> > > karg="console=ttyS0,115200"
> > > 
> > > case "$mode" in
> > > kernel)
> > >   qemu="qemu-default -nographic"
> > >   disk="/vmdisk/imagefish/rhel-8.1.0-ks-x86_64-testboot-sys-disk.qcow2"
> > >   krnl="$HOME/build/linux-sirius-x86_64-qemu/arch/x86/boot/bzImage"
> > >   karg="$karg root=/dev/sda4"
> > >   karg="$karg quiet"
> > >   ;;
> > > seabios)
> > >   disk="/vmdisk/imagefish/rhel-8.1.0-ks-x86_64-testboot-sys-disk.qcow2"
> > >   krnl="$HOME/build/linux-sirius-x86_64-qemu/arch/x86/boot/bzImage"
> > >   karg="$karg root=/dev/sda4"
> > >   args+=("-bios" 
> > > "/home/kraxel/projects/seabios/out-bios-microvm/bios.bin")
> > >   ;;
> > > cloud)
> > >   disk="/vmdisk/iso/Fedora-Cloud-Base-31-1.9.x86_64.raw"
> > >   ;;
> > > coreos)
> > >   disk="/vmdisk/iso/fedora-coreos-31.20200210.3.0-metal.x86_64.raw"
> > >   ;;
> > > live)
> > >   liso="/vmdisk/iso/Fedora-Workstation-Live-x86_64-30-1.2.iso"
> > >   devs+=("-device" "virtio-gpu-device")
> > >   devs+=("-device" "virtio-keyboard-device")
> > >   devs+=("-device" "virtio-tablet-device")
> > >   ;;
> > > *)
> > >   echo "unknown mode: $mode"
> > >   echo "known modes: kernel seabios cloud coreos live"
> > >   exit 1
> > >   ;;
> > > esac
> > > 
> > > if test "$disk" != ""; then
> > >   format="${disk##*.}"
> > >   back+=("-drive" "if=none,id=disk,format=${format},file=${disk}")
> > >   devs+=("-device" "scsi-hd,drive=disk,bootindex=1")
> > > fi
> > > if test "$liso" != ""; then
> > >   back+=("-drive" 
> > > "if=none,id=cdrom,media=cdrom,readonly,format=raw,file=${liso}")
> > >   devs+=("-device" "scsi-cd,drive=cdrom,bootindex=2")
> > > fi
> > > if test "$krnl" != ""; then
> > >   args+=("-kernel" "$krnl")
> > >   args+=("-append" "$karg")
> > > fi
> > > 
> > > set -ex
> > > $qemu \
> > >   -enable-kvm \
> > >   -cpu host \
> > >   -M microvm,graphics=off,pit=off,pic=on,rtc=on \
> > >   \
> > >   -m 4G \
> > >   \
> > >   -netdev user,id=net \
> > >   "${back[@]}" \
> > >   \
> > >   -global virtio-mmio.force-legacy=false \
> > >   -device virtio-net-device,netdev=net \
> > >   -device virtio-scsi-device \
> > >   "${devs[@]}" \
> > >   \
> > >   "${args[@]}" \
> > >   "$@"  
> 
> 




reply via email to

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