All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Marc-André Lureau" <marcandre.lureau@gmail.com>
To: Sergio Lopez <slp@redhat.com>
Cc: "Eduardo Habkost" <ehabkost@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	groug@kaod.org, QEMU <qemu-devel@nongnu.org>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>,
	"Laszlo Ersek" <lersek@redhat.com>,
	"Stefano Garzarella" <sgarzare@redhat.com>
Subject: Re: [PATCH v10 13/15] docs/microvm.rst: document the new microvm machine type
Date: Wed, 16 Oct 2019 18:31:42 +0200	[thread overview]
Message-ID: <CAJ+F1CJK51sDUKsAp5z7UOSyb-+GbWHR19hk2wr1qW4THZc-RA@mail.gmail.com> (raw)
In-Reply-To: <20191016101241.24405-14-slp@redhat.com>

Hi

On Wed, Oct 16, 2019 at 12:19 PM Sergio Lopez <slp@redhat.com> wrote:
>
> Document the new microvm machine type.
>
> Signed-off-by: Sergio Lopez <slp@redhat.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  docs/microvm.rst | 98 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 98 insertions(+)
>  create mode 100644 docs/microvm.rst
>
> diff --git a/docs/microvm.rst b/docs/microvm.rst
> new file mode 100644
> index 0000000000..0aab55576c
> --- /dev/null
> +++ b/docs/microvm.rst
> @@ -0,0 +1,98 @@
> +====================
> +microvm Machine Type
> +====================
> +
> +``microvm`` is a machine type inspired by ``Firecracker`` and
> +constructed after its machine model.
> +
> +It's a minimalist machine type without ``PCI`` nor ``ACPI`` support,
> +designed for short-lived guests. microvm also establishes a baseline
> +for benchmarking and optimizing both QEMU and guest operating systems,
> +since it is optimized for both boot time and footprint.
> +
> +
> +Supported devices
> +-----------------
> +
> +The microvm machine type supports the following devices:
> +
> +- ISA bus
> +- i8259 PIC (optional)
> +- i8254 PIT (optional)
> +- MC146818 RTC (optional)
> +- One ISA serial port (optional)
> +- LAPIC
> +- IOAPIC (with kernel-irqchip=split by default)
> +- kvmclock (if using KVM)
> +- fw_cfg
> +- Up to eight virtio-mmio devices (configured by the user)
> +
> +
> +Using the microvm machine type
> +------------------------------
> +
> +Machine-specific options
> +~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +It supports the following machine-specific options:
> +
> +- microvm.x-option-roms=bool (Set off to disable loading option ROMs)
> +- microvm.pit=OnOffAuto (Enable i8254 PIT)
> +- microvm.isa-serial=bool (Set off to disable the instantiation an ISA serial port)
> +- microvm.pic=OnOffAuto (Enable i8259 PIC)
> +- microvm.rtc=OnOffAuto (Enable MC146818 RTC)
> +- microvm.auto-kernel-cmdline=bool (Set off to disable adding virtio-mmio devices to the kernel cmdline)
> +
> +
> +Boot options
> +~~~~~~~~~~~~
> +
> +By default, microvm uses ``qboot`` as its BIOS, to obtain better boot
> +times, but it's also compatible with ``SeaBIOS``.
> +
> +As no current FW is able to boot from a block device using
> +``virtio-mmio`` as its transport, a microvm-based VM needs to be run
> +using a host-side kernel and, optionally, an initrd image.
> +
> +
> +Running a microvm-based VM
> +~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +By default, microvm aims for maximum compatibility, enabling both
> +legacy and non-legacy devices. In this example, a VM is created
> +without passing any additional machine-specific option, using the
> +legacy ``ISA serial`` device as console::
> +
> +  $ qemu-system-x86_64 -M microvm \
> +     -enable-kvm -cpu host -m 512m -smp 2 \
> +     -kernel vmlinux -append "earlyprintk=ttyS0 console=ttyS0 root=/dev/vda" \
> +     -nodefaults -no-user-config -nographic \
> +     -serial stdio \
> +     -drive id=test,file=test.img,format=raw,if=none \
> +     -device virtio-blk-device,drive=test \
> +     -netdev tap,id=tap0,script=no,downscript=no \
> +     -device virtio-net-device,netdev=tap0
> +
> +While the example above works, you might be interested in reducing the
> +footprint further by disabling some legacy devices. If you're using
> +``KVM``, you can disable the ``RTC``, making the Guest rely on
> +``kvmclock`` exclusively. Additionally, if your host's CPUs have the
> +``TSC_DEADLINE`` feature, you can also disable both the i8259 PIC and
> +the i8254 PIT (make sure you're also emulating a CPU with such feature
> +in the guest).
> +
> +This is an example of a VM with all optional legacy features
> +disabled::
> +
> +  $ qemu-system-x86_64 \
> +     -M microvm,x-option-roms=off,pit=off,pic=off,isa-serial=off,rtc=off \
> +     -enable-kvm -cpu host -m 512m -smp 2 \
> +     -kernel vmlinux -append "console=hvc0 root=/dev/vda" \
> +     -nodefaults -no-user-config -nographic \
> +     -chardev stdio,id=virtiocon0,server \

server? doesn't make sense here :)

> +     -device virtio-serial-device \
> +     -device virtconsole,chardev=virtiocon0 \
> +     -drive id=test,file=test.img,format=raw,if=none \
> +     -device virtio-blk-device,drive=test \
> +     -netdev tap,id=tap0,script=no,downscript=no \
> +     -device virtio-net-device,netdev=tap0
> --
> 2.21.0
>
>

seem to work with appropriate kernel otherwise, so
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau


  reply	other threads:[~2019-10-16 16:36 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-16 10:12 [PATCH v10 00/15] Introduce the microvm machine type Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 01/15] hw/virtio: Factorize virtio-mmio headers Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 02/15] hw/i386/pc: rename functions shared with non-PC machines Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 03/15] hw/i386/pc: fix code style issues on functions that will be moved out Sergio Lopez
2019-10-16 14:59   ` Marc-André Lureau
2019-10-16 10:12 ` [PATCH v10 04/15] hw/i386/pc: replace use of strtol with qemu_strtoui in x86_load_linux() Sergio Lopez
2019-10-16 15:02   ` Marc-André Lureau
2019-10-16 10:12 ` [PATCH v10 05/15] hw/i386/pc: avoid an assignment in if condition " Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 06/15] hw/i386/pc: remove commented out code from x86_load_linux() Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 07/15] hw/i386/pc: move shared x86 functions to x86.c and export them Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 08/15] hw/i386: split PCMachineState deriving X86MachineState from it Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 09/15] hw/i386: make x86.c independent from PCMachineState Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 10/15] fw_cfg: add "modify" functions for all types Sergio Lopez
2019-10-16 15:02   ` Marc-André Lureau
2019-10-16 10:12 ` [PATCH v10 11/15] hw/intc/apic: reject pic ints if isa_pic == NULL Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 12/15] roms: add microvm-bios (qboot) as binary and git submodule Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 13/15] docs/microvm.rst: document the new microvm machine type Sergio Lopez
2019-10-16 16:31   ` Marc-André Lureau [this message]
2019-10-17  6:48     ` Sergio Lopez
2019-10-17  9:52   ` Philippe Mathieu-Daudé
2019-10-17 10:45     ` Sergio Lopez
2019-10-17 10:56       ` Philippe Mathieu-Daudé
2019-10-17 11:52         ` Sergio Lopez
2019-10-17 11:00   ` Daniel P. Berrangé
2019-10-17 11:49     ` Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 14/15] hw/i386: Introduce the " Sergio Lopez
2019-10-16 19:35   ` Marc-André Lureau
2019-10-17  6:47     ` Sergio Lopez
2019-10-16 10:12 ` [PATCH v10 15/15] MAINTAINERS: add microvm related files Sergio Lopez

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=CAJ+F1CJK51sDUKsAp5z7UOSyb-+GbWHR19hk2wr1qW4THZc-RA@mail.gmail.com \
    --to=marcandre.lureau@gmail.com \
    --cc=ehabkost@redhat.com \
    --cc=groug@kaod.org \
    --cc=imammedo@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=lersek@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=sgarzare@redhat.com \
    --cc=slp@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.