From patchwork Mon Feb 2 11:05:49 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Li, Liang Z" X-Patchwork-Id: 435416 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 1B89F1402A7 for ; Mon, 2 Feb 2015 22:15:10 +1100 (AEDT) Received: from localhost ([::1]:53949 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIEyB-0000K7-UY for incoming@patchwork.ozlabs.org; Mon, 02 Feb 2015 06:15:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58976) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIExV-0007YH-36 for qemu-devel@nongnu.org; Mon, 02 Feb 2015 06:14:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YIExQ-0004z2-44 for qemu-devel@nongnu.org; Mon, 02 Feb 2015 06:14:25 -0500 Received: from mga14.intel.com ([192.55.52.115]:18032) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIExP-0004yp-Q8 for qemu-devel@nongnu.org; Mon, 02 Feb 2015 06:14:20 -0500 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP; 02 Feb 2015 03:07:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,505,1418112000"; d="scan'208";a="671431665" Received: from lil.sh.intel.com (HELO localhost) ([10.239.159.167]) by fmsmga002.fm.intel.com with ESMTP; 02 Feb 2015 03:14:16 -0800 From: Liang Li To: qemu-devel@nongnu.org Date: Mon, 2 Feb 2015 19:05:49 +0800 Message-Id: <1422875149-13198-14-git-send-email-liang.z.li@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1422875149-13198-1-git-send-email-liang.z.li@intel.com> References: <1422875149-13198-1-git-send-email-liang.z.li@intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 192.55.52.115 Cc: quintela@redhat.com, Liang Li , armbru@redhat.com, dgilbert@redhat.com, Yang Zhang , amit.shah@redhat.com, lcapitulino@redhat.com Subject: [Qemu-devel] [v4 13/13] migration: Add command to query migration parameter 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 Add the qmp and hmp commands to query the parameters used in live migration. Signed-off-by: Liang Li Signed-off-by: Yang Zhang --- hmp-commands.hx | 2 ++ hmp.c | 21 +++++++++++++++++++++ hmp.h | 1 + migration/migration.c | 27 +++++++++++++++++++++++++++ monitor.c | 7 +++++++ qapi-schema.json | 11 +++++++++++ qmp-commands.hx | 26 ++++++++++++++++++++++++++ 7 files changed, 95 insertions(+) diff --git a/hmp-commands.hx b/hmp-commands.hx index 535b5ba..ed0c06a 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1779,6 +1779,8 @@ show user network stack connection states show migration status @item info migrate_capabilities show current migration capabilities +@item info migrate_parameters +show current migration parameters @item info migrate_cache_size show current migration XBZRLE cache size @item info balloon diff --git a/hmp.c b/hmp.c index faab4b0..33c95b3 100644 --- a/hmp.c +++ b/hmp.c @@ -246,6 +246,27 @@ void hmp_info_migrate_capabilities(Monitor *mon, const QDict *qdict) qapi_free_MigrationCapabilityStatusList(caps); } +void hmp_info_migrate_parameters(Monitor *mon, const QDict *qdict) +{ + MigrationParameterStatusList *params, *p; + MigrationParameterInt *data; + + params = qmp_query_migrate_parameters(NULL); + + if (params) { + monitor_printf(mon, "parameters:"); + for (p = params; p; p = p->next) { + data = (MigrationParameterInt *)p->value->data; + monitor_printf(mon, " %s: %" PRId64, + MigrationParameter_lookup[p->value->kind], + data->value); + } + monitor_printf(mon, "\n"); + } + + qapi_free_MigrationParameterStatusList(params); +} + void hmp_info_migrate_cache_size(Monitor *mon, const QDict *qdict) { monitor_printf(mon, "xbzrel cache size: %" PRId64 " kbytes\n", diff --git a/hmp.h b/hmp.h index 429efea..b2b2d2c 100644 --- a/hmp.h +++ b/hmp.h @@ -28,6 +28,7 @@ void hmp_info_chardev(Monitor *mon, const QDict *qdict); void hmp_info_mice(Monitor *mon, const QDict *qdict); void hmp_info_migrate(Monitor *mon, const QDict *qdict); void hmp_info_migrate_capabilities(Monitor *mon, const QDict *qdict); +void hmp_info_migrate_parameters(Monitor *mon, const QDict *qdict); void hmp_info_migrate_cache_size(Monitor *mon, const QDict *qdict); void hmp_info_cpus(Monitor *mon, const QDict *qdict); void hmp_info_block(Monitor *mon, const QDict *qdict); diff --git a/migration/migration.c b/migration/migration.c index b5055dc..f925130 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -179,6 +179,33 @@ MigrationCapabilityStatusList *qmp_query_migrate_capabilities(Error **errp) return head; } +MigrationParameterStatusList *qmp_query_migrate_parameters(Error **errp) +{ + MigrationParameterStatusList *head = NULL; + MigrationParameterStatusList *params; + MigrationState *s = migrate_get_current(); + MigrationParameterInt *data; + int i; + + params = NULL; /* silence compiler warning */ + for (i = 0; i < MIGRATION_PARAMETER_MAX; i++) { + if (head == NULL) { + head = g_malloc0(sizeof(*params)); + params = head; + } else { + params->next = g_malloc0(sizeof(*params)); + params = params->next; + } + params->value = g_malloc(sizeof(*params->value)); + params->value->kind = i; + params->value->data = g_malloc(sizeof(MigrationParameterInt)); + data = (MigrationParameterInt *)params->value->data; + data->value = s->parameters[i]; + } + + return head; +} + static void get_xbzrle_cache_stats(MigrationInfo *info) { if (migrate_use_xbzrle()) { diff --git a/monitor.c b/monitor.c index fa8ebde..58dfa28 100644 --- a/monitor.c +++ b/monitor.c @@ -2872,6 +2872,13 @@ static mon_cmd_t info_cmds[] = { .mhandler.cmd = hmp_info_migrate_capabilities, }, { + .name = "migrate_parameters", + .args_type = "", + .params = "", + .help = "show current migration parameters", + .mhandler.cmd = hmp_info_migrate_parameters, + }, + { .name = "migrate_cache_size", .args_type = "", .params = "", diff --git a/qapi-schema.json b/qapi-schema.json index 273f991..af34f7f 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -593,6 +593,17 @@ { 'command': 'migrate-set-parameters', 'data': { 'parameters': ['MigrationParameterStatus'] } } ## +# @query-migrate-parameters +# +# Returns information about the current migration parameters status +# +# Returns: @MigrationParametersStatus +# +# Since: 2.3 +## +{ 'command': 'query-migrate-parameters', + 'returns': ['MigrationParameterStatus'] } +## ## # @MouseInfo: # diff --git a/qmp-commands.hx b/qmp-commands.hx index 9d16386..bcfe823 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -3303,6 +3303,32 @@ EQMP .mhandler.cmd_new = qmp_marshal_input_migrate_set_parameters, }, SQMP +query-migrate-parameters +------------------------ + +Query current migration parameters + +- "parameters": migration parameters value + - "compress-level" : compression level value (json-int) + - "compress-threads" : compression thread count value (json-int) + - "decompress-threads" : decompression thread count value (json-int) + +Arguments: + +Example: + +-> { "execute": "query-migrate-parameters" } +<- { "return": [ { "value": 1, "parameter": "compress-level" } ] } + +EQMP + + { + .name = "query-migrate-parameters", + .args_type = "", + .mhandler.cmd_new = qmp_marshal_input_query_migrate_parameters, + }, + +SQMP query-balloon -------------