On Thu, 6 Aug 2015 13:27:16 +0100 Stefan Hajnoczi stefanha@gmail.com wrote:
On Thu, Aug 6, 2015 at 12:00 PM, Marc Marí markmb@redhat.com wrote:
When running a Linux guest on top of QEMU, using the -kernel options, this is the timing improvement for x86:
QEMU commit 2be4f242b50a8 and SeaBIOS commit 908a58c1d5ff QEMU startup time: .078 BIOS startup time: .060 Kernel setup time: .578 Total time: .716
QEMU with this patch series and SeaBIOS with this patch series QEMU startup time: .080 BIOS startup time: .039 Kernel setup time: .002 Total time: .121
Impressive results!
Is this a fully-featured QEMU build or did you disable things?
Is this the default SeaBIOS build or did you disable things?
This is the default QEMU configuration I get for my system. It's not a fully-featured QEMU, but it has a lot of things enabled. SeaBIOS has a default configuration (with debugging disabled).
The QEMU configuration is: [...] tcg debug enabled no gprof enabled no sparse enabled no strip binaries yes profiler no static build no pixman system SDL support yes GTK support yes GNUTLS support yes GNUTLS hash yes GNUTLS gcrypt no GNUTLS nettle yes (2.7.1) VTE support yes curses support yes curl support yes mingw32 support no Audio drivers oss Block whitelist (rw) Block whitelist (ro) VirtFS support yes VNC support yes VNC TLS support yes VNC SASL support yes VNC JPEG support yes VNC PNG support yes xen support no brlapi support yes bluez support yes Documentation no GUEST_BASE yes PIE yes vde support yes netmap support no Linux AIO support yes ATTR/XATTR support yes Install blobs yes KVM support yes RDMA support yes TCG interpreter no fdt support yes preadv support yes fdatasync yes madvise yes posix_madvise yes sigev_thread_id yes uuid support yes libcap-ng support yes vhost-net support yes vhost-scsi support yes Trace backends nop spice support yes (0.12.7/0.12.5) rbd support yes xfsctl support no nss used yes libusb yes usb net redir yes OpenGL support no libiscsi support yes libnfs support no build guest agent yes QGA VSS support no QGA w32 disk info no seccomp support yes coroutine backend ucontext coroutine pool yes GlusterFS support yes Archipelago support no gcov gcov gcov enabled no TPM support yes libssh2 support yes TPM passthrough yes QOM debugging yes vhdx yes lzo support yes snappy support yes bzip2 support yes NUMA host support yes tcmalloc support no
Marc
On Thu, Aug 6, 2015 at 1:37 PM, Marc Marí markmb@redhat.com wrote:
On Thu, 6 Aug 2015 13:27:16 +0100 Stefan Hajnoczi stefanha@gmail.com wrote:
On Thu, Aug 6, 2015 at 12:00 PM, Marc Marí markmb@redhat.com wrote:
When running a Linux guest on top of QEMU, using the -kernel options, this is the timing improvement for x86:
QEMU commit 2be4f242b50a8 and SeaBIOS commit 908a58c1d5ff QEMU startup time: .078 BIOS startup time: .060 Kernel setup time: .578 Total time: .716
QEMU with this patch series and SeaBIOS with this patch series QEMU startup time: .080 BIOS startup time: .039 Kernel setup time: .002 Total time: .121
Impressive results!
Is this a fully-featured QEMU build or did you disable things?
Is this the default SeaBIOS build or did you disable things?
This is the default QEMU configuration I get for my system. It's not a fully-featured QEMU, but it has a lot of things enabled. SeaBIOS has a default configuration (with debugging disabled).
That's great.
Since SeaBIOS is a default configuration, the remaining BIOS startup time is amenable to more optimizations in the future.
Stefan
On Thu, Aug 06, 2015 at 02:37:45PM +0200, Marc Marí wrote:
On Thu, 6 Aug 2015 13:27:16 +0100 Stefan Hajnoczi stefanha@gmail.com wrote:
On Thu, Aug 6, 2015 at 12:00 PM, Marc Marí markmb@redhat.com wrote:
When running a Linux guest on top of QEMU, using the -kernel options, this is the timing improvement for x86:
QEMU commit 2be4f242b50a8 and SeaBIOS commit 908a58c1d5ff QEMU startup time: .078 BIOS startup time: .060 Kernel setup time: .578 Total time: .716
QEMU with this patch series and SeaBIOS with this patch series QEMU startup time: .080 BIOS startup time: .039 Kernel setup time: .002 Total time: .121
Impressive results!
Is this a fully-featured QEMU build or did you disable things?
Is this the default SeaBIOS build or did you disable things?
This is the default QEMU configuration I get for my system. It's not a fully-featured QEMU, but it has a lot of things enabled. SeaBIOS has a default configuration (with debugging disabled).
Thanks!
What qemu command-line did you use during testing? Also, do you have a quick primer on how to use the kvm trace stuff to obtain timings?
-Kevin
On Thu, 6 Aug 2015 11:30:43 -0400 "Kevin O'Connor" kevin@koconnor.net wrote:
On Thu, Aug 06, 2015 at 02:37:45PM +0200, Marc Marí wrote:
On Thu, 6 Aug 2015 13:27:16 +0100 Stefan Hajnoczi stefanha@gmail.com wrote:
On Thu, Aug 6, 2015 at 12:00 PM, Marc Marí markmb@redhat.com wrote:
When running a Linux guest on top of QEMU, using the -kernel options, this is the timing improvement for x86:
QEMU commit 2be4f242b50a8 and SeaBIOS commit 908a58c1d5ff QEMU startup time: .078 BIOS startup time: .060 Kernel setup time: .578 Total time: .716
QEMU with this patch series and SeaBIOS with this patch series QEMU startup time: .080 BIOS startup time: .039 Kernel setup time: .002 Total time: .121
Impressive results!
Is this a fully-featured QEMU build or did you disable things?
Is this the default SeaBIOS build or did you disable things?
This is the default QEMU configuration I get for my system. It's not a fully-featured QEMU, but it has a lot of things enabled. SeaBIOS has a default configuration (with debugging disabled).
Thanks!
What qemu command-line did you use during testing? Also, do you have a quick primer on how to use the kvm trace stuff to obtain timings?
The command line I used is:
x86_64-softmmu/qemu-system-x86_64 --enable-kvm \ -kernel /boot/vmlinuz-4.0.7-300.fc22.x86_64 \ -L pc-bios/optionrom/ \ -bios roms/seabios/out/bios.bin -nographic
And I used perf (and two out instructions in the BIOS) to measure the times:
perf record -a -e kvm:* -e sched:sched_process_exec
And searching for sched:sched_process_exec, kvm:kvm_entry, pio_write at 0xf5 and pio_write at 0xf4. Out at 0xf5 is the one in "do_boot" function, and out at 0xf4 is the one just before the jump to the Linux kernel.
I attach the script I've been using. It can be improved, but it works. It can be run like this:
sudo ../../results/run_test.sh x86_64-softmmu/qemu-system-x86_64 \ --enable-kvm -kernel /boot/vmlinuz-4.0.8-300.fc22.x86_64 \ -L pc-bios/optionrom/ \ -bios roms/seabios/out/bios.bin -nographic
Thanks Marc
Trimming CC list.
On Thu, Aug 06, 2015 at 05:53:26PM +0200, Marc Marí wrote:
On Thu, 6 Aug 2015 11:30:43 -0400 "Kevin O'Connor" kevin@koconnor.net wrote:
On Thu, Aug 06, 2015 at 02:37:45PM +0200, Marc Marí wrote:
On Thu, 6 Aug 2015 13:27:16 +0100 Stefan Hajnoczi stefanha@gmail.com wrote:
On Thu, Aug 6, 2015 at 12:00 PM, Marc Marí markmb@redhat.com wrote:
When running a Linux guest on top of QEMU, using the -kernel options, this is the timing improvement for x86:
QEMU commit 2be4f242b50a8 and SeaBIOS commit 908a58c1d5ff QEMU startup time: .078 BIOS startup time: .060 Kernel setup time: .578 Total time: .716
QEMU with this patch series and SeaBIOS with this patch series QEMU startup time: .080 BIOS startup time: .039 Kernel setup time: .002 Total time: .121
Impressive results!
Is this a fully-featured QEMU build or did you disable things?
Is this the default SeaBIOS build or did you disable things?
This is the default QEMU configuration I get for my system. It's not a fully-featured QEMU, but it has a lot of things enabled. SeaBIOS has a default configuration (with debugging disabled).
Thanks!
What qemu command-line did you use during testing? Also, do you have a quick primer on how to use the kvm trace stuff to obtain timings?
The command line I used is:
x86_64-softmmu/qemu-system-x86_64 --enable-kvm \ -kernel /boot/vmlinuz-4.0.7-300.fc22.x86_64 \ -L pc-bios/optionrom/ \ -bios roms/seabios/out/bios.bin -nographic
Thanks. One thing that immediately pops up is that even though "-nographic" is used, it looks like QEMU still emulates a VGA device and that device has an option rom that takes several milliseconds to init the display hardware. Adding "-device VGA,romfile=" to the qemu command line will further reduce the boot time by avoiding this hardware init delay.
-Kevin
Hi,
The command line I used is:
x86_64-softmmu/qemu-system-x86_64 --enable-kvm \ -kernel /boot/vmlinuz-4.0.7-300.fc22.x86_64 \ -L pc-bios/optionrom/ \ -bios roms/seabios/out/bios.bin -nographic
Thanks. One thing that immediately pops up is that even though "-nographic" is used, it looks like QEMU still emulates a VGA device and that device has an option rom that takes several milliseconds to init the display hardware. Adding "-device VGA,romfile=" to the qemu command line will further reduce the boot time by avoiding this hardware init delay.
Same goes for the NIC btw.
cheers, Gerd