From: Kevin O'Connor <kevin@koconnor.net>
To: "Richard W.M. Jones" <rjones@redhat.com>
Cc: marc.mari.barcelo@gmail.com, Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>,
Stefan Hajnoczi <stefanha@gmail.com>
Subject: Re: [Qemu-devel] Why is SeaBIOS used with -kernel?
Date: Fri, 1 Apr 2016 11:35:40 -0400 [thread overview]
Message-ID: <20160401153540.GD25490@morn.lan> (raw)
In-Reply-To: <20160401114947.GM32728@redhat.com>
On Fri, Apr 01, 2016 at 12:49:47PM +0100, Richard W.M. Jones wrote:
> On Fri, Apr 01, 2016 at 01:32:51PM +0200, Gerd Hoffmann wrote:
> > > I think we were working on the same thing ... Attached is my
> > > version.
> > >
> > > Note that you must enable at least CONFIG_MPTABLE else virtio-scsi
> > > does not work in the guest. I also enabled ACPI & SMBIOS & PIRTABLE.
> >
> > They are enabled by default, no need to explicitly say so ;)
>
> So they are. Here's a v3 patch.
>
> I also retested everything from scratch. Previously I was testing the
> stock SeaBIOS bios.bin shipped with qemu vs the fast config. However
> that has the possible problem that I was testing two slightly
> different versions of SeaBIOS (whatever version qemu ships vs
> upstream).
>
> Testing from scratch, using upstream SeaBIOS in both cases, there's
> still a significant benefit. SeaBIOS overhead goes from 63 ms down to
> 19 ms (saving 44 ms).
>
> Overall the proportion of boot time of the libguestfs appliance
> attributed to SeaBIOS drops from 3.7% to 1.1% (but note this is with
> libguestfs & kernel debugging enabled -- for real users there'd be a
> much larger percentage drop).
>
> Rich.
>
> --
> Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
> Read my programming and virtualization blog: http://rwmj.wordpress.com
> virt-builder quickly builds VMs from scratch
> http://libguestfs.org/virt-builder.1.html
> From 8cdf91f13949ab46c6a5804b968400d404c4e00e Mon Sep 17 00:00:00 2001
> From: "Richard W.M. Jones" <rjones@redhat.com>
> Date: Fri, 1 Apr 2016 11:35:09 +0100
> Subject: [PATCH] bios: Add fast variant of SeaBIOS for use with -kernel on
> x86.
>
> This commit adds a fast variant of SeaBIOS called 'bios-fast.bin'.
>
> It's designed to be the fastest (also the smallest, but that's not the
> main aim) SeaBIOS that is just enough to boot a Linux kernel using the
> -kernel option on i686 and x86_64.
>
> This commit does not modify the -kernel option to use this. You have
> to specify it by doing something like this:
>
> -kernel vmlinuz -bios bios-fast.bin
It's possible to build a third binary, but that seems like it would be
a bit annoying for distributions. I think most of the benefit could
be obtained by just adding a flag to seabios to have it skip device
driver initialization. That's where the majority of the time saved is
from.
[...]
> --- /dev/null
> +++ b/roms/config.seabios-fast
> @@ -0,0 +1,25 @@
> +# The fastest SeaBIOS that can boot Linux using -kernel.
> +
> +# general stuff
> +CONFIG_QEMU=y
> +CONFIG_ROM_SIZE=128
Why force a size of 128K - I would think 64K would be fine.
> +CONFIG_XEN=n
> +CONFIG_THREADS=n
I doubt either of these two would change timing at all. There's no
harm in disabling CONFIG_XEN, but I would not recommend disabling
CONFIG_THREADS.
> +CONFIG_WRITABLE_UPPERMEMORY=y
> +
> +# no input, no boot menu
> +CONFIG_MOUSE=n
> +CONFIG_KEYBOARD=n
[...]
> +CONFIG_DRIVES=n
I would not recommended disabling CONFIG_MOUSE, CONFIG_KEYBOARD,
CONFIG_DRIVES - I only had those in my config so as to avoid having to
specify all the device drivers. Ideally these would remain on and the
individual device drivers would be disabled.
> +CONFIG_BOOTMENU=n
> +CONFIG_BOOTSPLASH=n
These two should have no impact on timing at all.
> +
> +# hardware support we don't need
> +CONFIG_LPT=n
> +CONFIG_SERIAL=n
> +CONFIG_USB=n
[...]
> +CONFIG_TCGBIOS=n
> +CONFIG_VGAHOOKS=n
> +
> +# no logging
> +CONFIG_DEBUG_LEVEL=0
If you really want to go all out on timing tests, you could disable
CONFIG_USE_SMM, and CONFIG_FW_ROMFILE_LOAD. Disabling
CONFIG_RELOCATE_INIT may help, but probably not.
-Kevin
next prev parent reply other threads:[~2016-04-01 15:35 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-19 20:31 [Qemu-devel] Why is SeaBIOS used with -kernel? Richard W.M. Jones
2016-03-21 7:58 ` Gerd Hoffmann
2016-03-21 8:37 ` Richard W.M. Jones
2016-03-21 9:40 ` Gerd Hoffmann
2016-03-31 9:21 ` Stefan Hajnoczi
2016-03-31 16:22 ` Kevin O'Connor
[not found] ` <20160331221039.GA32728@redhat.com>
2016-03-31 22:17 ` Richard W.M. Jones
2016-03-31 22:44 ` Kevin O'Connor
2016-04-01 7:55 ` Richard W.M. Jones
2016-04-01 8:03 ` Paolo Bonzini
2016-04-01 8:47 ` Richard W.M. Jones
2016-04-01 8:51 ` Paolo Bonzini
2016-04-01 8:57 ` Richard W.M. Jones
2016-04-01 9:05 ` Paolo Bonzini
2016-04-01 8:02 ` Richard W.M. Jones
2016-04-01 8:11 ` Paolo Bonzini
2016-04-01 8:14 ` Richard W.M. Jones
2016-04-01 8:24 ` Paolo Bonzini
2016-04-01 8:44 ` Richard W.M. Jones
2016-04-01 8:47 ` Paolo Bonzini
2016-04-01 8:49 ` Vasiliy Tolstov
2016-04-01 9:16 ` Dr. David Alan Gilbert
2016-04-01 9:18 ` Gerd Hoffmann
2016-04-01 10:17 ` Richard W.M. Jones
2016-04-01 11:07 ` Gerd Hoffmann
2016-04-01 11:11 ` Richard W.M. Jones
2016-04-01 11:20 ` Richard W.M. Jones
2016-04-01 11:21 ` Paolo Bonzini
2016-04-01 11:26 ` Richard W.M. Jones
2016-04-05 4:38 ` Kevin Wolf
2016-04-05 8:04 ` Richard W.M. Jones
2016-04-05 8:11 ` Kevin Wolf
2016-04-05 9:19 ` Richard W.M. Jones
2016-04-05 9:26 ` Kevin Wolf
2016-04-01 11:32 ` Gerd Hoffmann
2016-04-01 11:49 ` Richard W.M. Jones
2016-04-01 15:35 ` Kevin O'Connor [this message]
2016-04-01 16:03 ` Paolo Bonzini
2016-04-01 18:41 ` Richard W.M. Jones
2016-04-01 18:59 ` Richard W.M. Jones
2016-04-01 19:04 ` Kevin O'Connor
2016-04-01 19:10 ` Richard W.M. Jones
2016-04-01 19:15 ` Richard W.M. Jones
2016-04-01 19:44 ` Kevin O'Connor
2016-04-01 20:25 ` Richard W.M. Jones
2016-04-01 20:05 ` Kevin O'Connor
2016-04-01 20:46 ` Richard W.M. Jones
2016-04-01 22:25 ` Kevin O'Connor
2016-04-02 7:51 ` Richard W.M. Jones
2016-04-02 5:30 ` Paolo Bonzini
2016-04-01 15:08 ` Kevin O'Connor
2016-04-01 14:58 ` Kevin O'Connor
2016-04-01 15:06 ` Richard W.M. Jones
2016-04-01 15:14 ` Kevin O'Connor
2016-04-01 8:19 ` Richard W.M. Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160401153540.GD25490@morn.lan \
--to=kevin@koconnor.net \
--cc=kraxel@redhat.com \
--cc=marc.mari.barcelo@gmail.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=stefanha@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).