qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Elena Ufimtseva <elena.ufimtseva@oracle.com>
To: qemu-devel@nongnu.org
Cc: eduardo@habkost.net, marcel.apfelbaum@gmail.com,
	philmd@linaro.org, wangyanan55@huawei.com, peterx@redhat.com,
	farosas@suse.de, eblake@redhat.com, armbru@redhat.com
Subject: [PATCH RFC 0/2] migration: introduce strict SLA
Date: Fri, 21 Jun 2024 07:32:19 -0700	[thread overview]
Message-ID: <20240621143221.198784-1-elena.ufimtseva@oracle.com> (raw)

Hello

This RFC patchset introduces strict downtime SLA for live migration by
restricting how long switchover phase can take and aborts live migration
if this exceeded.

Various consumers of VFIO Live Migration are bound checks on how long
the switchover process lasts. Some things are not accounted for and are
unbounded, such as:
  - Time to quiesce/resume the VF
  - Time to save/resume all system state
  - How fast we can save/restore VF state

These cases lead to the final downtime being larger than what was
configured in by setting a downtime limit.
In some applications it is important to observe the requested downtime
and re-try live migration some other time if the downtime requirements
cannot be satisfied.

This patchset introduces capability to abort live migration if
the downtime exceeds a certain value specified by switchover limit
migration parameter.
When a guest stops at the source, measure the downtime and if
it exceeds a threshold we cancel the migration and resume the guest.
The destination is being notified of the source downtime and its threshold
and starts measuring downtime. Destination will cancel live migration
if downtime exceeds the swithover limit.

The migration with this capability would be used this way for example:

migrate_set_capability return-path on
migrate_set_capability switchover-abort on
migrate_set_parameter downtime-limit 300
migrate_set_parameter switchover-limit 10

The migration will be aborted if the downtime exceeds
10ms (switchover-limit) and total downtime would not
be more than 310ms.

Please send your comments and recommendations.

The patchset idea originally comes from Joao Martins
<joao.m.martins@oracle.com>.


Elena Ufimtseva (2):
  migration: abort when switchover limit exceeded
  migration: abort on destination if switchover limit exceeded

 hw/core/machine.c                  |  1 +
 include/migration/client-options.h |  1 +
 migration/migration-hmp-cmds.c     | 10 ++++
 migration/migration.c              | 41 +++++++++++++++
 migration/migration.h              | 20 ++++++++
 migration/options.c                | 56 +++++++++++++++++++++
 migration/options.h                |  1 +
 migration/savevm.c                 | 81 ++++++++++++++++++++++++++++++
 migration/savevm.h                 |  2 +
 migration/trace-events             |  3 ++
 qapi/migration.json                | 27 ++++++++--
 11 files changed, 239 insertions(+), 4 deletions(-)

-- 
2.34.1



             reply	other threads:[~2024-06-21 14:33 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-21 14:32 Elena Ufimtseva [this message]
2024-06-21 14:32 ` [PATCH RFC 1/2] migration: abort when switchover limit exceeded Elena Ufimtseva
2024-06-24 19:19   ` Peter Xu
2024-06-25 19:05   ` Daniel P. Berrangé
2024-06-21 14:32 ` [PATCH RFC 2/2] migration: abort on destination if " Elena Ufimtseva
2024-06-24 19:41   ` Peter Xu
2024-06-25 11:38     ` Joao Martins
2024-06-25 14:53       ` Peter Xu
2024-06-25 16:31         ` Joao Martins
2024-06-25 19:03           ` Peter Xu
2024-06-26 11:04             ` Joao Martins
2024-06-26 18:41               ` Peter Xu
2024-07-26  7:41                 ` Elena Ufimtseva
2024-08-21 19:45                   ` Peter Xu
2024-06-25 18:37         ` Daniel P. Berrangé
2024-06-26 11:29           ` Joao Martins
2024-06-26 11:34             ` Daniel P. Berrangé
2024-06-26 12:12               ` Joao Martins
2024-06-26 12:20                 ` Daniel P. Berrangé
2024-06-25 19:12   ` Daniel P. Berrangé

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=20240621143221.198784-1-elena.ufimtseva@oracle.com \
    --to=elena.ufimtseva@oracle.com \
    --cc=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=farosas@suse.de \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=wangyanan55@huawei.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).