qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Glauber Costa <glommer@redhat.com>
Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/2] add non-arbitrary migration stop condition
Date: Thu, 21 May 2009 21:08:30 -0500	[thread overview]
Message-ID: <4A16091E.9040506@codemonkey.ws> (raw)
In-Reply-To: <1242946174-30451-2-git-send-email-glommer@redhat.com>

Glauber Costa wrote:
>
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
>  migration.c |    7 +++++++
>  migration.h |    2 ++
>  vl.c        |   14 ++++++++++++--
>  3 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/migration.c b/migration.c
> index 401383c..4036e64 100644
> --- a/migration.c
> +++ b/migration.c
> @@ -107,6 +107,13 @@ void do_migrate_set_speed(Monitor *mon, const char *value)
>      
>  }
>  
> +static int64_t max_downtime = 30000000;
>   

In units of..?  Wouldn't it make sense to store this in milliseconds or 
microseconds as opposed to nanoseconds?

> +
> +int64_t migrate_max_downtime(void)
> +{
> +    return max_downtime;
> +}
> +
>  void do_info_migrate(Monitor *mon)
>  {
>      MigrationState *s = current_migration;
> diff --git a/migration.h b/migration.h
> index 696618d..b0637ba 100644
> --- a/migration.h
> +++ b/migration.h
> @@ -55,6 +55,8 @@ void do_migrate_cancel(Monitor *mon);
>  
>  void do_migrate_set_speed(Monitor *mon, const char *value);
>  
> +int64_t migrate_max_downtime(void);
> +
>  void do_info_migrate(Monitor *mon);
>  
>  int exec_start_incoming_migration(const char *host_port);
> diff --git a/vl.c b/vl.c
> index 346da57..5ca06f9 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -3235,7 +3235,6 @@ static int ram_save_block(QEMUFile *f)
>      return found;
>  }
>  
> -static ram_addr_t ram_save_threshold = 10;
>  static uint64_t bytes_transferred = 0;
>  
>  static ram_addr_t ram_save_remaining(void)
> @@ -3269,6 +3268,9 @@ uint64_t ram_bytes_total(void)
>  static int ram_save_live(QEMUFile *f, int stage, void *opaque)
>  {
>      ram_addr_t addr;
> +    uint64_t bytes_transferred_last;
> +    double bwidth = 0;
> +    int64_t expected_time = 0;
>  
>      if (stage == 1) {
>          /* Make sure all dirty bits are set */
> @@ -3283,6 +3285,9 @@ static int ram_save_live(QEMUFile *f, int stage, void *opaque)
>          qemu_put_be64(f, last_ram_offset | RAM_SAVE_FLAG_MEM_SIZE);
>      }
>  
> +    bytes_transferred_last = bytes_transferred;
> +    bwidth = get_clock();
> +
>      while (!qemu_file_rate_limit(f)) {
>          int ret;
>  
> @@ -3292,6 +3297,9 @@ static int ram_save_live(QEMUFile *f, int stage, void *opaque)
>              break;
>      }
>  
> +    bwidth = get_clock() - bwidth;
>   

This isn't quite right.  If you hit the rate limit, you're calculating 
bandwidth based on before you hit the rate limit.  But if the user 
specified a rate limit, they want you to adhere to that limit.  To put 
it another, you could consume twice the rate limited bandwidth in order 
to complete the migration.

Have you measured the actual down time in a guest too?  I suspect your 
downtime is significantly higher now.  I'm curious how closely your 
threshold matches real world observation.

Regards,

Anthony Liguori

  parent reply	other threads:[~2009-05-22  2:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-21 22:49 [Qemu-devel] [PATCH 0/2] Transfer of funds Glauber Costa
2009-05-21 22:49 ` [Qemu-devel] [PATCH 1/2] add non-arbitrary migration stop condition Glauber Costa
2009-05-21 22:49   ` [Qemu-devel] [PATCH 2/2] set migration max downtime Glauber Costa
2009-05-22  2:09     ` Anthony Liguori
2009-05-24 11:07       ` Avi Kivity
2009-05-24 19:47         ` Anthony Liguori
2009-05-24 19:52           ` Avi Kivity
2009-05-24 22:40             ` M. Warner Losh
2009-05-22  2:08   ` Anthony Liguori [this message]
2009-05-24  8:29     ` [Qemu-devel] [PATCH 1/2] add non-arbitrary migration stop condition Avi Kivity
  -- strict thread matches above, loose matches on Subject: below --
2009-05-28 19:22 [Qemu-devel] [PATCH 0/2] Add non-arbitrary treshold for migration Glauber Costa
2009-05-28 19:22 ` [Qemu-devel] [PATCH 1/2] add non-arbitrary migration stop condition Glauber Costa

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=4A16091E.9040506@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=aliguori@us.ibm.com \
    --cc=glommer@redhat.com \
    --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 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).