From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/5] migration: rename max_size to threshold_size
Date: Fri, 31 Mar 2017 19:59:19 +0100 [thread overview]
Message-ID: <20170331185918.GF2408@work-vm> (raw)
In-Reply-To: <1490599288-11751-3-git-send-email-peterx@redhat.com>
* Peter Xu (peterx@redhat.com) wrote:
> In migration codes (especially in migration_thread()), max_size is used
> in many place for the threshold value that we will start to do the final
> flush and jump to the next stage to dump the whole rest things to
> destination. However its name is confusing to first readers. Let's
> rename it to "threshold_size" when proper and add a comment for it. No
> functional change is made.
>
> CC: Juan Quintela <quintela@redhat.com>
> CC: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> include/migration/vmstate.h | 3 ++-
> migration/migration.c | 17 +++++++++--------
> migration/savevm.c | 4 ++--
> 3 files changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
> index f2dbf84..dad3984 100644
> --- a/include/migration/vmstate.h
> +++ b/include/migration/vmstate.h
> @@ -56,7 +56,8 @@ typedef struct SaveVMHandlers {
>
> /* This runs outside the iothread lock! */
> int (*save_live_setup)(QEMUFile *f, void *opaque);
> - void (*save_live_pending)(QEMUFile *f, void *opaque, uint64_t max_size,
> + void (*save_live_pending)(QEMUFile *f, void *opaque,
> + uint64_t threshold_size,
> uint64_t *non_postcopiable_pending,
> uint64_t *postcopiable_pending);
> LoadStateHandler *load_state;
> diff --git a/migration/migration.c b/migration/migration.c
> index f9f4d98..b065fe4 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1907,7 +1907,8 @@ static void *migration_thread(void *opaque)
> int64_t initial_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
> int64_t setup_start = qemu_clock_get_ms(QEMU_CLOCK_HOST);
> int64_t initial_bytes = 0;
> - int64_t max_size = 0;
> + /* We'll do the final flush when reachs threshold_size */
I think that's 'reaches' - however perhaps we should make a more
explicit comment:
'The final stage happens when the remaining data is smaller than
this threshold; it's calculated from the requested downtime
and measured bandwidth'
other than that:
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Dave
> + int64_t threshold_size = 0;
> int64_t start_time = initial_time;
> int64_t end_time;
> bool old_vm_running = false;
> @@ -1951,17 +1952,17 @@ static void *migration_thread(void *opaque)
> if (!qemu_file_rate_limit(s->to_dst_file)) {
> uint64_t pend_post, pend_nonpost;
>
> - qemu_savevm_state_pending(s->to_dst_file, max_size, &pend_nonpost,
> - &pend_post);
> + qemu_savevm_state_pending(s->to_dst_file, threshold_size,
> + &pend_nonpost, &pend_post);
> pending_size = pend_nonpost + pend_post;
> - trace_migrate_pending(pending_size, max_size,
> + trace_migrate_pending(pending_size, threshold_size,
> pend_post, pend_nonpost);
> - if (pending_size && pending_size >= max_size) {
> + if (pending_size && pending_size >= threshold_size) {
> /* Still a significant amount to transfer */
>
> if (migrate_postcopy_ram() &&
> s->state != MIGRATION_STATUS_POSTCOPY_ACTIVE &&
> - pend_nonpost <= max_size &&
> + pend_nonpost <= threshold_size &&
> atomic_read(&s->start_postcopy)) {
>
> if (!postcopy_start(s, &old_vm_running)) {
> @@ -1993,13 +1994,13 @@ static void *migration_thread(void *opaque)
> initial_bytes;
> uint64_t time_spent = current_time - initial_time;
> double bandwidth = (double)transferred_bytes / time_spent;
> - max_size = bandwidth * s->parameters.downtime_limit;
> + threshold_size = bandwidth * s->parameters.downtime_limit;
>
> s->mbps = (((double) transferred_bytes * 8.0) /
> ((double) time_spent / 1000.0)) / 1000.0 / 1000.0;
>
> trace_migrate_transferred(transferred_bytes, time_spent,
> - bandwidth, max_size);
> + bandwidth, threshold_size);
> /* if we haven't sent anything, we don't want to recalculate
> 10000 is a small enough number for our purposes */
> if (s->dirty_bytes_rate && transferred_bytes > 10000) {
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 3b19a4a..59c04eb 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -1197,7 +1197,7 @@ void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only)
> * the result is split into the amount for units that can and
> * for units that can't do postcopy.
> */
> -void qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size,
> +void qemu_savevm_state_pending(QEMUFile *f, uint64_t threshold_size,
> uint64_t *res_non_postcopiable,
> uint64_t *res_postcopiable)
> {
> @@ -1216,7 +1216,7 @@ void qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size,
> continue;
> }
> }
> - se->ops->save_live_pending(f, se->opaque, max_size,
> + se->ops->save_live_pending(f, se->opaque, threshold_size,
> res_non_postcopiable, res_postcopiable);
> }
> }
> --
> 2.7.4
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2017-03-31 18:59 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-27 7:21 [Qemu-devel] [PATCH 0/5] several migrations related patches Peter Xu
2017-03-27 7:21 ` [Qemu-devel] [PATCH 1/5] migration: set current_active_state once Peter Xu
2017-03-31 18:50 ` Dr. David Alan Gilbert
2017-03-27 7:21 ` [Qemu-devel] [PATCH 2/5] migration: rename max_size to threshold_size Peter Xu
2017-03-31 18:59 ` Dr. David Alan Gilbert [this message]
2017-04-01 7:16 ` Peter Xu
2017-03-27 7:21 ` [Qemu-devel] [PATCH 3/5] hmp: info migrate_capability format tunes Peter Xu
2017-03-31 19:01 ` Dr. David Alan Gilbert
2017-03-27 7:21 ` [Qemu-devel] [PATCH 4/5] hmp: info migrate_parameters " Peter Xu
2017-03-31 19:02 ` Dr. David Alan Gilbert
2017-03-27 7:21 ` [Qemu-devel] [PATCH 5/5] cpu: throttle: fix throttle time slice Peter Xu
2017-03-27 7:40 ` Peter Xu
2017-03-31 16:38 ` Paolo Bonzini
2017-03-31 19:13 ` Dr. David Alan Gilbert
2017-03-31 19:46 ` Paolo Bonzini
2017-04-04 15:44 ` Dr. David Alan Gilbert
2017-04-01 7:52 ` Peter Xu
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=20170331185918.GF2408@work-vm \
--to=dgilbert@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@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 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).