qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] SeaBIOS booting time optimization


From: Stefano Garzarella
Subject: Re: [Qemu-devel] SeaBIOS booting time optimization
Date: Mon, 19 Nov 2018 11:01:48 +0100

Hi Samuel,

On Mon, Nov 19, 2018 at 12:31 AM Samuel Ortiz <address@hidden> wrote:

> Hi Stefano,
>
> On Fri, Nov 16, 2018 at 05:13:59PM +0100, Stefano Garzarella wrote:
> > Hi,
> > I'm investigating the SeaBIOS booting time, to understand if we can
> reduce
> > the boot time in some cases (e.g. legacy hardware is not needed). I think
> > this
> > can be interesting also for NEMU developers.
> Definitely, thanks.

You are welcome!

>
>
> > Following this thread (
> > https://mail.coreboot.org/pipermail/seabios/2015-July/009497.html),
> > I'm using qboot (https://github.com/bonzini/qboot) to compare the
> SeaBIOS
> > booting time.
> >
> > As Paolo did in qboot, I manually add small debug port writes in SeaBIOS
> and
> > linuxboot_dma.c (QEMU) to trace the events with perf (kvm_pio events)
> When doing similar measuremnts, I also used the debug-exit qemu device
> in order to make imho simpler measuremnts, see
> https://github.com/intel/nemu/wiki/Measuring-Boot-Latency
>
> Probably not as precised as yours, but it was enough for what we tried
> to characterize.
>
> > The goal is to have only one image of SeaBIOS configurable at runtime to
> > reduce
> > the boot time, avoiding unnecessary initialization.
> >
> > Any pointers or suggestions would be helpful.
> >
> > Following I put some preliminary measurements that I obtained:
> > I used this QEMU command line:
> > ./qemu-system-x86_64 -bios $BIOS -m 1G -cpu host -M accel=kvm \
> > -kernel /boot/vmlinuz-4.18.18-300.fc29.x86_64 -append 'console=ttyS0' \
> > -nographic -serial mon:stdio
> >
> > For each test, I measured these times (in milliseconds) relative to the
> > "sched_process_exec" event:
> > - qemu_init_end: first kvm_entry (i.e. QEMU initialized has finished)
> > - fw_start: first entry of the BIOS
> > - fw_do_boot: after the BIOS initialization (e.g. PCI setup, etc.)
> > - linux_start_boot: before the jump to the Linux kernel
> Are you planning to also measure the total time to userspace as well?
> How we set the hardware up from the FW/BIOS can also influence the
> overall (up to ring 3) boot latency on our experiments.
>

I can add another debug port write in the kernel_init (as you mentioned
in https://github.com/intel/nemu/wiki/Measuring-Boot-Latency)


> > # qboot
> > BIOS=/home/stefano/repos/qboot/bios.bin
> >  qemu_init_end: 40.561234
> >  fw_start: 40.721729 (+0.160495)
> >  fw_do_boot: 47.025591 (+6.303862)
> >  linux_start_boot: 48.874112 (+1.848521)
> >
> > # SeaBIOS with default configuration
> > BIOS=/home/stefano/repos/seabios/out_default/bios.bin
> >  qemu_init_end: 40.419451
> >  fw_start: 40.639967 (+0.220516)
> >  fw_do_boot: 886.668828 (+846.028861)
> >  linux_start_boot: 889.723547 (+3.054719)
> >
> > # SeaBIOS with Kevin's configuration
> > # (https://mail.coreboot.org/pipermail/seabios/2015-July/009508.html)
> > # Note: this SeaBIOS setup is so stripped down that it can't actually
> boot
> > an OS
> > BIOS=/home/stefano/repos/seabios/out_kevin/bios.bin
> >  qemu_init_end: 40.676412
> >  fw_start: 40.755757 (+0.079345)
> >  fw_do_boot: 56.427023 (+15.671266)
> That's a slight improvement ;)
>
>
> > I did the same tests also with NEMU (without using -M virt) and I have
> > approximately the same results.
> Yes, as expected.
>
>
> > As the next step, I'll start from Kevin's configuration to have a minimal
> > SeaBIOS image ables to boot a Linux kernel.
> Please keep us posted.
>

Sure, I'll keep you updated with the progress.

Cheers,
Stefano

>
> Cheers,
> Samuel.
>


-- 
Stefano Garzarella
Red Hat


reply via email to

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