qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

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