From patchwork Fri Sep 21 08:47:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juan Quintela X-Patchwork-Id: 185657 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id DEF482C0085 for ; Fri, 21 Sep 2012 20:01:28 +1000 (EST) Received: from localhost ([::1]:42983 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEyum-0008PL-GT for incoming@patchwork.ozlabs.org; Fri, 21 Sep 2012 04:48:48 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44672) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEytt-0006sx-NJ for qemu-devel@nongnu.org; Fri, 21 Sep 2012 04:47:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEytn-0004YI-Na for qemu-devel@nongnu.org; Fri, 21 Sep 2012 04:47:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52299) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEytn-0004Y1-Fx for qemu-devel@nongnu.org; Fri, 21 Sep 2012 04:47:47 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8L8lkOd012148 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 21 Sep 2012 04:47:46 -0400 Received: from trasno.mitica (ovpn-116-55.ams2.redhat.com [10.36.116.55]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q8L8lZNG001998; Fri, 21 Sep 2012 04:47:45 -0400 From: Juan Quintela To: qemu-devel@nongnu.org Date: Fri, 21 Sep 2012 10:47:01 +0200 Message-Id: <1348217255-22441-8-git-send-email-quintela@redhat.com> In-Reply-To: <1348217255-22441-1-git-send-email-quintela@redhat.com> References: <1348217255-22441-1-git-send-email-quintela@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 07/41] migration: print expected downtime in info migrate X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Juan Quintela --- arch_init.c | 2 ++ hmp.c | 4 ++++ migration.c | 2 ++ migration.h | 1 + qapi-schema.json | 5 +++++ qmp-commands.hx | 6 ++++++ 6 files changed, 20 insertions(+) diff --git a/arch_init.c b/arch_init.c index 013e5e5..52ccc7b 100644 --- a/arch_init.c +++ b/arch_init.c @@ -540,6 +540,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) int ret; int i; uint64_t expected_downtime; + MigrationState *s = migrate_get_current(); bytes_transferred_last = bytes_transferred; bwidth = qemu_get_clock_ns(rt_clock); @@ -594,6 +595,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) if (expected_downtime <= migrate_max_downtime()) { memory_global_sync_dirty_bitmap(get_system_memory()); expected_downtime = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth; + s->expected_downtime = expected_downtime / 1000000; /* ns -> ms */ return expected_downtime <= migrate_max_downtime(); } diff --git a/hmp.c b/hmp.c index 40b0c05..71c9292 100644 --- a/hmp.c +++ b/hmp.c @@ -152,6 +152,10 @@ void hmp_info_migrate(Monitor *mon) monitor_printf(mon, "Migration status: %s\n", info->status); monitor_printf(mon, "total time: %" PRIu64 " milliseconds\n", info->total_time); + if (info->has_expected_downtime) { + monitor_printf(mon, "expected downtime: %" PRIu64 " milliseconds\n", + info->expected_downtime); + } if (info->has_downtime) { monitor_printf(mon, "downtime: %" PRIu64 " milliseconds\n", info->downtime); diff --git a/migration.c b/migration.c index 2827663..62c8fe9 100644 --- a/migration.c +++ b/migration.c @@ -169,6 +169,8 @@ MigrationInfo *qmp_query_migrate(Error **errp) info->has_total_time = true; info->total_time = qemu_get_clock_ms(rt_clock) - s->total_time; + info->has_expected_downtime = true; + info->expected_downtime = s->expected_downtime; info->has_ram = true; info->ram = g_malloc0(sizeof(*info->ram)); diff --git a/migration.h b/migration.h index dabc333..552200c 100644 --- a/migration.h +++ b/migration.h @@ -41,6 +41,7 @@ struct MigrationState MigrationParams params; int64_t total_time; int64_t downtime; + int64_t expected_downtime; bool enabled_capabilities[MIGRATION_CAPABILITY_MAX]; int64_t xbzrle_cache_size; }; diff --git a/qapi-schema.json b/qapi-schema.json index b5a4360..b8a1244 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -417,6 +417,10 @@ # total downtime in milliseconds for the guest. # (since 1.3) # +# @expected-downtime: #optional only present while migration is active +# expected downtime in milliseconds for the guest in last walk +# of the dirty bitmap. (since 1.3) +# # Since: 0.14.0 ## { 'type': 'MigrationInfo', @@ -424,6 +428,7 @@ '*disk': 'MigrationStats', '*xbzrle-cache': 'XBZRLECacheStats', '*total-time': 'int', + '*expected-downtime': 'int', '*downtime': 'int'} } ## diff --git a/qmp-commands.hx b/qmp-commands.hx index 37be613..68b6580 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -2269,6 +2269,9 @@ The main json-object contains the following: time (json-int) - "downtime": only present when migration has finished correctly total amount in ms for downtime that happened (json-int) +- "expected-downtime": only present while migration is active + total amount in ms for downtime that was calculated on + the last bitmap round (json-int) - "ram": only present if "status" is "active", it is a json-object with the following RAM information (in bytes): - "transferred": amount transferred (json-int) @@ -2330,6 +2333,7 @@ Examples: "remaining":123, "total":246, "total-time":12345, + "expected-downtime":12345, "duplicate":123, "normal":123, "normal-bytes":123456 @@ -2348,6 +2352,7 @@ Examples: "remaining":1053304, "transferred":3720, "total-time":12345, + "expected-downtime":12345, "duplicate":123, "normal":123, "normal-bytes":123456 @@ -2372,6 +2377,7 @@ Examples: "remaining":1053304, "transferred":3720, "total-time":12345, + "expected-downtime":12345, "duplicate":10, "normal":3333, "normal-bytes":3412992