On Wed, Mar 25, 2020 at 07:44:34PM +0100, Igor Mammedov wrote:
> On Wed, 25 Mar 2020 16:03:39 +0100
> Gerd Hoffmann <kra...@redhat.com> 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 <kra...@redhat.com> 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?

> > 
> > 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