All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: KVM devel mailing list <kvm@vger.kernel.org>,
	qemu-devel qemu-devel <qemu-devel@nongnu.org>
Subject: KVM call minutes for 2013-08-06
Date: Tue, 06 Aug 2013 17:15:28 +0200	[thread overview]
Message-ID: <878v0ehmun.fsf@elfo.elfo> (raw)


Hi

if you find that Today minutes are better than usual,  I am learning to
delegate and ask people for help.  Thanks to:
- mst
- eduardo
- stephan


2013-08-06
----------

What libvirt needs/miss Today?
- how to handle machine types? creating them inside qemu?
- qemu --cpu help
  only shows cpus,  not what features qemu will use
- qemu -cpu host
  what does this exactly means?  kvm removes same flags.
- Important to know if migration would work.
- Machine types sometimes disable some feature, so cpu alone is not
  enough.

- if kvm initialization fails, we should fall back to tcg, depending
  of command line options.

- migration is not the only user case
  openstack choose host depending on what features the hosts have.

- not easy shortcut that creating a guest with that options and query
  if features are there or not.

- this information is "static",  but it depends on:
  * configuration files
  * machine type
  * command line options
  * ....

- So it is complicated to get it without launching a guest with the
  current command line.

- Libvirt wants it because it is slow to use it,  so they cache the information.

- Libvirt creates a big table of supported options

- At this point, libvirt don't export this information to its users

- Anthony would send a qmp command proposal to qemu-devel@

- -cpu host "is not supported from cross-machine migration"
  you need to use -cpu host to check what features the host have.

- kernel removes some features because it knows it can't be virtualised
- qemu adds some others because it knows it don't need host support
- and then lots of features in the middle

Probing for host information ("-cpu host" details):
 * Needed to find out if it's possible to create or migrate a VM, or to choose an appropriate host to migrate to
 * Depends on host capabilities: CPU host capabilities, kernel capabilities (kernel version), QEMU capabilities (kernel version)
 * Does not depend on machine-type
 * libvirt will probably want to build a table beforehand, with information about all hosts
 * Note that live-migration of "-cpu host" is not supported, but we use the "-cpu host" results as a way to find out about host capabilities
 * Problem: allowing it to be probed using "-machine none"
   * Needs KVM to be initialized
   * Solution: add KVM to be requested with fallback to TCG (does it work today?)
   * libvirt should be able to create a "-cpu host" CPU object, query for its information, and destroy it
Probing for the actual results of a given machine-type + CPU model combination:
 * Depends on machine-type
 * MUST NOT depend on host capabilities, otherwise migration would be already broken
 * Probably no need to build a large table with all machine-type/CPU-models combinations beforehand. Just querying for the information on the VM before migrating it should be enough?
 * Anyway, if libvirt needs to query for all combinations beforehand, we may provide a QMP command to apply compat properties from a machine-type (suggestion by Anthony)


* pvpanic
- was added by default in 1.5, this might have been too rash:
	- might change guest behaviour if guest is set to reboot on panic
	- might cause slightly annoying warnings/queries from device
	  manager
	- generally somewhat inelegant/non-symmetrical, libvirt
	  developers prefer "no magic devices"
- conclusions:
	- for -M 1.6, will change QEMU don't add by default, teach libvirt to add
	  with -device pvpanic
	- separately discuss doing same for 1.5 stable branch and -M 1.5
	  on mailing list

* reverse execution for qemu
  caturing IO is complicated
  determinising and the clocks
  how it relates with kemari
  you don't need to wait for two weeks.
  they do a fork as an snapshot instead of getting the machine to snapshot itself.
  merging forks and threads: enough said.
  icount changes for reverse execution will probably conflict with qemu-timer.c changes for thread-safety and AioContext timers.


WARNING: multiple messages have this Message-ID (diff)
From: Juan Quintela <quintela@redhat.com>
To: KVM devel mailing list <kvm@vger.kernel.org>,
	qemu-devel qemu-devel <qemu-devel@nongnu.org>
Subject: [Qemu-devel] KVM call minutes for 2013-08-06
Date: Tue, 06 Aug 2013 17:15:28 +0200	[thread overview]
Message-ID: <878v0ehmun.fsf@elfo.elfo> (raw)


Hi

if you find that Today minutes are better than usual,  I am learning to
delegate and ask people for help.  Thanks to:
- mst
- eduardo
- stephan


2013-08-06
----------

What libvirt needs/miss Today?
- how to handle machine types? creating them inside qemu?
- qemu --cpu help
  only shows cpus,  not what features qemu will use
- qemu -cpu host
  what does this exactly means?  kvm removes same flags.
- Important to know if migration would work.
- Machine types sometimes disable some feature, so cpu alone is not
  enough.

- if kvm initialization fails, we should fall back to tcg, depending
  of command line options.

- migration is not the only user case
  openstack choose host depending on what features the hosts have.

- not easy shortcut that creating a guest with that options and query
  if features are there or not.

- this information is "static",  but it depends on:
  * configuration files
  * machine type
  * command line options
  * ....

- So it is complicated to get it without launching a guest with the
  current command line.

- Libvirt wants it because it is slow to use it,  so they cache the information.

- Libvirt creates a big table of supported options

- At this point, libvirt don't export this information to its users

- Anthony would send a qmp command proposal to qemu-devel@

- -cpu host "is not supported from cross-machine migration"
  you need to use -cpu host to check what features the host have.

- kernel removes some features because it knows it can't be virtualised
- qemu adds some others because it knows it don't need host support
- and then lots of features in the middle

Probing for host information ("-cpu host" details):
 * Needed to find out if it's possible to create or migrate a VM, or to choose an appropriate host to migrate to
 * Depends on host capabilities: CPU host capabilities, kernel capabilities (kernel version), QEMU capabilities (kernel version)
 * Does not depend on machine-type
 * libvirt will probably want to build a table beforehand, with information about all hosts
 * Note that live-migration of "-cpu host" is not supported, but we use the "-cpu host" results as a way to find out about host capabilities
 * Problem: allowing it to be probed using "-machine none"
   * Needs KVM to be initialized
   * Solution: add KVM to be requested with fallback to TCG (does it work today?)
   * libvirt should be able to create a "-cpu host" CPU object, query for its information, and destroy it
Probing for the actual results of a given machine-type + CPU model combination:
 * Depends on machine-type
 * MUST NOT depend on host capabilities, otherwise migration would be already broken
 * Probably no need to build a large table with all machine-type/CPU-models combinations beforehand. Just querying for the information on the VM before migrating it should be enough?
 * Anyway, if libvirt needs to query for all combinations beforehand, we may provide a QMP command to apply compat properties from a machine-type (suggestion by Anthony)


* pvpanic
- was added by default in 1.5, this might have been too rash:
	- might change guest behaviour if guest is set to reboot on panic
	- might cause slightly annoying warnings/queries from device
	  manager
	- generally somewhat inelegant/non-symmetrical, libvirt
	  developers prefer "no magic devices"
- conclusions:
	- for -M 1.6, will change QEMU don't add by default, teach libvirt to add
	  with -device pvpanic
	- separately discuss doing same for 1.5 stable branch and -M 1.5
	  on mailing list

* reverse execution for qemu
  caturing IO is complicated
  determinising and the clocks
  how it relates with kemari
  you don't need to wait for two weeks.
  they do a fork as an snapshot instead of getting the machine to snapshot itself.
  merging forks and threads: enough said.
  icount changes for reverse execution will probably conflict with qemu-timer.c changes for thread-safety and AioContext timers.

             reply	other threads:[~2013-08-06 15:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-06 15:15 Juan Quintela [this message]
2013-08-06 15:15 ` [Qemu-devel] KVM call minutes for 2013-08-06 Juan Quintela
2013-08-06 15:47 ` Paolo Bonzini
2013-08-06 15:47   ` [Qemu-devel] " Paolo Bonzini
2013-08-06 17:01   ` Gleb Natapov
2013-08-06 17:01     ` [Qemu-devel] " Gleb Natapov

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=878v0ehmun.fsf@elfo.elfo \
    --to=quintela@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    /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.