Re: [Qemu-devel] [PATCH v6 08/19] migration: Create x-multifd-group parameter

2017-09-13 Thread Juan Quintela
"Daniel P. Berrange"  wrote:
> On Tue, Aug 08, 2017 at 06:26:18PM +0200, Juan Quintela wrote:
>> Indicates how many pages we are going to send in each batch to a multifd
>> thread.
>> 
>> Signed-off-by: Juan Quintela 
>> Reviewed-by: Dr. David Alan Gilbert 
>> 
>> --
>> 
>> Be consistent with defaults and documentation
>> Use new DEFINE_PROP_*
>> @@ -1117,6 +1120,9 @@
>>  # number of sockets used for migration.
>>  # The default value is 2 (since 2.11)
>>  #
>> +# @x-multifd-group: Number of pages sent together to a thread
>> +#   The default value is 16 (since 2.11)
>
> Bikesheeding - how about  "x-multifd-page-count"  ?  'group' didn't
> give me much idea what it was controlling until reading the docs.

Done, thanks.

I was about to change it to pages, but once here, the length don't
matter.

Later, Juan.



Re: [Qemu-devel] [PATCH v6 08/19] migration: Create x-multifd-group parameter

2017-08-11 Thread Daniel P. Berrange
On Tue, Aug 08, 2017 at 06:26:18PM +0200, Juan Quintela wrote:
> Indicates how many pages we are going to send in each batch to a multifd
> thread.
> 
> Signed-off-by: Juan Quintela 
> Reviewed-by: Dr. David Alan Gilbert 
> 
> --
> 
> Be consistent with defaults and documentation
> Use new DEFINE_PROP_*
> ---
>  hmp.c |  7 +++
>  migration/migration.c | 26 ++
>  migration/migration.h |  1 +
>  qapi-schema.json  | 17 ++---
>  4 files changed, 48 insertions(+), 3 deletions(-)
> 
> diff --git a/hmp.c b/hmp.c
> index 7899813..a52035a 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -340,6 +340,9 @@ void hmp_info_migrate_parameters(Monitor *mon, const 
> QDict *qdict)
>  monitor_printf(mon, "%s: %" PRId64 "\n",
>  MigrationParameter_lookup[MIGRATION_PARAMETER_X_MULTIFD_THREADS],
>  params->x_multifd_threads);
> +monitor_printf(mon, "%s: %" PRId64 "\n",
> +MigrationParameter_lookup[MIGRATION_PARAMETER_X_MULTIFD_GROUP],
> +params->x_multifd_group);
>  }
>  
>  qapi_free_MigrationParameters(params);
> @@ -1629,6 +1632,10 @@ void hmp_migrate_set_parameter(Monitor *mon, const 
> QDict *qdict)
>  p->has_x_multifd_threads = true;
>  visit_type_int(v, param, >x_multifd_threads, );
>  break;
> +case MIGRATION_PARAMETER_X_MULTIFD_GROUP:
> +p->has_x_multifd_group = true;
> +visit_type_int(v, param, >x_multifd_group, );
> +break;
>  }
>  
>  if (err) {
> diff --git a/migration/migration.c b/migration/migration.c
> index 6ed9600..6c4eb4b 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -79,6 +79,7 @@
>   */
>  #define DEFAULT_MIGRATE_X_CHECKPOINT_DELAY 200
>  #define DEFAULT_MIGRATE_MULTIFD_THREADS 2
> +#define DEFAULT_MIGRATE_MULTIFD_GROUP 16
>  
>  static NotifierList migration_state_notifiers =
>  NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
> @@ -486,6 +487,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error 
> **errp)
>  params->block_incremental = s->parameters.block_incremental;
>  params->has_x_multifd_threads = true;
>  params->x_multifd_threads = s->parameters.x_multifd_threads;
> +params->has_x_multifd_group = true;
> +params->x_multifd_group = s->parameters.x_multifd_group;
>  
>  return params;
>  }
> @@ -774,6 +777,13 @@ static bool migrate_params_check(MigrationParameters 
> *params, Error **errp)
> "is invalid, it should be in the range of 1 to 255");
>  return false;
>  }
> +if (params->has_x_multifd_group &&
> +(params->x_multifd_group < 1 || params->x_multifd_group > 
> 1)) {
> +error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
> +   "multifd_group",
> +   "is invalid, it should be in the range of 1 to 1");
> +return false;
> +}
>  
>  return true;
>  }
> @@ -895,6 +905,9 @@ static void migrate_params_apply(MigrateSetParameters 
> *params)
>  if (params->has_x_multifd_threads) {
>  s->parameters.x_multifd_threads = params->x_multifd_threads;
>  }
> +if (params->has_x_multifd_group) {
> +s->parameters.x_multifd_group = params->x_multifd_group;
> +}
>  }
>  
>  void qmp_migrate_set_parameters(MigrateSetParameters *params, Error **errp)
> @@ -1481,6 +1494,15 @@ int migrate_multifd_threads(void)
>  return s->parameters.x_multifd_threads;
>  }
>  
> +int migrate_multifd_group(void)
> +{
> +MigrationState *s;
> +
> +s = migrate_get_current();
> +
> +return s->parameters.x_multifd_group;
> +}
> +
>  int migrate_use_xbzrle(void)
>  {
>  MigrationState *s;
> @@ -2249,6 +2271,9 @@ static Property migration_properties[] = {
>  DEFINE_PROP_INT64("x-multifd-threads", MigrationState,
>parameters.x_multifd_threads,
>DEFAULT_MIGRATE_MULTIFD_THREADS),
> +DEFINE_PROP_INT64("x-multifd-group", MigrationState,
> +  parameters.x_multifd_group,
> +  DEFAULT_MIGRATE_MULTIFD_GROUP),
>  
>  /* Migration capabilities */
>  DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE),
> @@ -2307,6 +2332,7 @@ static void migration_instance_init(Object *obj)
>  params->has_x_checkpoint_delay = true;
>  params->has_block_incremental = true;
>  params->has_x_multifd_threads = true;
> +params->has_x_multifd_group = true;
>  }
>  
>  /*
> diff --git a/migration/migration.h b/migration/migration.h
> index 8e4803d..ddf8c89 100644
> --- a/migration/migration.h
> +++ b/migration/migration.h
> @@ -176,6 +176,7 @@ bool migrate_zero_blocks(void);
>  bool migrate_auto_converge(void);
>  bool migrate_use_multifd(void);
>  int migrate_multifd_threads(void);
> +int migrate_multifd_group(void);
>  
>  int 

Re: [Qemu-devel] [PATCH v6 08/19] migration: Create x-multifd-group parameter

2017-08-11 Thread Peter Xu
On Tue, Aug 08, 2017 at 06:26:18PM +0200, Juan Quintela wrote:
> Indicates how many pages we are going to send in each batch to a multifd
> thread.
> 
> Signed-off-by: Juan Quintela 
> Reviewed-by: Dr. David Alan Gilbert 

Reviewed-by: Peter Xu 

-- 
Peter Xu



[Qemu-devel] [PATCH v6 08/19] migration: Create x-multifd-group parameter

2017-08-08 Thread Juan Quintela
Indicates how many pages we are going to send in each batch to a multifd
thread.

Signed-off-by: Juan Quintela 
Reviewed-by: Dr. David Alan Gilbert 

--

Be consistent with defaults and documentation
Use new DEFINE_PROP_*
---
 hmp.c |  7 +++
 migration/migration.c | 26 ++
 migration/migration.h |  1 +
 qapi-schema.json  | 17 ++---
 4 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/hmp.c b/hmp.c
index 7899813..a52035a 100644
--- a/hmp.c
+++ b/hmp.c
@@ -340,6 +340,9 @@ void hmp_info_migrate_parameters(Monitor *mon, const QDict 
*qdict)
 monitor_printf(mon, "%s: %" PRId64 "\n",
 MigrationParameter_lookup[MIGRATION_PARAMETER_X_MULTIFD_THREADS],
 params->x_multifd_threads);
+monitor_printf(mon, "%s: %" PRId64 "\n",
+MigrationParameter_lookup[MIGRATION_PARAMETER_X_MULTIFD_GROUP],
+params->x_multifd_group);
 }
 
 qapi_free_MigrationParameters(params);
@@ -1629,6 +1632,10 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict 
*qdict)
 p->has_x_multifd_threads = true;
 visit_type_int(v, param, >x_multifd_threads, );
 break;
+case MIGRATION_PARAMETER_X_MULTIFD_GROUP:
+p->has_x_multifd_group = true;
+visit_type_int(v, param, >x_multifd_group, );
+break;
 }
 
 if (err) {
diff --git a/migration/migration.c b/migration/migration.c
index 6ed9600..6c4eb4b 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -79,6 +79,7 @@
  */
 #define DEFAULT_MIGRATE_X_CHECKPOINT_DELAY 200
 #define DEFAULT_MIGRATE_MULTIFD_THREADS 2
+#define DEFAULT_MIGRATE_MULTIFD_GROUP 16
 
 static NotifierList migration_state_notifiers =
 NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
@@ -486,6 +487,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error 
**errp)
 params->block_incremental = s->parameters.block_incremental;
 params->has_x_multifd_threads = true;
 params->x_multifd_threads = s->parameters.x_multifd_threads;
+params->has_x_multifd_group = true;
+params->x_multifd_group = s->parameters.x_multifd_group;
 
 return params;
 }
@@ -774,6 +777,13 @@ static bool migrate_params_check(MigrationParameters 
*params, Error **errp)
"is invalid, it should be in the range of 1 to 255");
 return false;
 }
+if (params->has_x_multifd_group &&
+(params->x_multifd_group < 1 || params->x_multifd_group > 1)) {
+error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
+   "multifd_group",
+   "is invalid, it should be in the range of 1 to 1");
+return false;
+}
 
 return true;
 }
@@ -895,6 +905,9 @@ static void migrate_params_apply(MigrateSetParameters 
*params)
 if (params->has_x_multifd_threads) {
 s->parameters.x_multifd_threads = params->x_multifd_threads;
 }
+if (params->has_x_multifd_group) {
+s->parameters.x_multifd_group = params->x_multifd_group;
+}
 }
 
 void qmp_migrate_set_parameters(MigrateSetParameters *params, Error **errp)
@@ -1481,6 +1494,15 @@ int migrate_multifd_threads(void)
 return s->parameters.x_multifd_threads;
 }
 
+int migrate_multifd_group(void)
+{
+MigrationState *s;
+
+s = migrate_get_current();
+
+return s->parameters.x_multifd_group;
+}
+
 int migrate_use_xbzrle(void)
 {
 MigrationState *s;
@@ -2249,6 +2271,9 @@ static Property migration_properties[] = {
 DEFINE_PROP_INT64("x-multifd-threads", MigrationState,
   parameters.x_multifd_threads,
   DEFAULT_MIGRATE_MULTIFD_THREADS),
+DEFINE_PROP_INT64("x-multifd-group", MigrationState,
+  parameters.x_multifd_group,
+  DEFAULT_MIGRATE_MULTIFD_GROUP),
 
 /* Migration capabilities */
 DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE),
@@ -2307,6 +2332,7 @@ static void migration_instance_init(Object *obj)
 params->has_x_checkpoint_delay = true;
 params->has_block_incremental = true;
 params->has_x_multifd_threads = true;
+params->has_x_multifd_group = true;
 }
 
 /*
diff --git a/migration/migration.h b/migration/migration.h
index 8e4803d..ddf8c89 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -176,6 +176,7 @@ bool migrate_zero_blocks(void);
 bool migrate_auto_converge(void);
 bool migrate_use_multifd(void);
 int migrate_multifd_threads(void);
+int migrate_multifd_group(void);
 
 int migrate_use_xbzrle(void);
 int64_t migrate_xbzrle_cache_size(void);
diff --git a/qapi-schema.json b/qapi-schema.json
index 3fe1a64..2d4dbd3 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1049,6 +1049,9 @@
 # number of sockets used for migration.
 # The default value is 2 (since 2.11)
 #
+# 

[Qemu-devel] [PATCH v6 08/19] migration: Create x-multifd-group parameter

2017-08-08 Thread Juan Quintela
Indicates how many pages we are going to send in each batch to a multifd
thread.

Signed-off-by: Juan Quintela 
Reviewed-by: Dr. David Alan Gilbert 

--

Be consistent with defaults and documentation
Use new DEFINE_PROP_*
---
 hmp.c |  7 +++
 migration/migration.c | 26 ++
 migration/migration.h |  1 +
 qapi-schema.json  | 17 ++---
 4 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/hmp.c b/hmp.c
index 7899813..a52035a 100644
--- a/hmp.c
+++ b/hmp.c
@@ -340,6 +340,9 @@ void hmp_info_migrate_parameters(Monitor *mon, const QDict 
*qdict)
 monitor_printf(mon, "%s: %" PRId64 "\n",
 MigrationParameter_lookup[MIGRATION_PARAMETER_X_MULTIFD_THREADS],
 params->x_multifd_threads);
+monitor_printf(mon, "%s: %" PRId64 "\n",
+MigrationParameter_lookup[MIGRATION_PARAMETER_X_MULTIFD_GROUP],
+params->x_multifd_group);
 }
 
 qapi_free_MigrationParameters(params);
@@ -1629,6 +1632,10 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict 
*qdict)
 p->has_x_multifd_threads = true;
 visit_type_int(v, param, >x_multifd_threads, );
 break;
+case MIGRATION_PARAMETER_X_MULTIFD_GROUP:
+p->has_x_multifd_group = true;
+visit_type_int(v, param, >x_multifd_group, );
+break;
 }
 
 if (err) {
diff --git a/migration/migration.c b/migration/migration.c
index 6ed9600..6c4eb4b 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -79,6 +79,7 @@
  */
 #define DEFAULT_MIGRATE_X_CHECKPOINT_DELAY 200
 #define DEFAULT_MIGRATE_MULTIFD_THREADS 2
+#define DEFAULT_MIGRATE_MULTIFD_GROUP 16
 
 static NotifierList migration_state_notifiers =
 NOTIFIER_LIST_INITIALIZER(migration_state_notifiers);
@@ -486,6 +487,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error 
**errp)
 params->block_incremental = s->parameters.block_incremental;
 params->has_x_multifd_threads = true;
 params->x_multifd_threads = s->parameters.x_multifd_threads;
+params->has_x_multifd_group = true;
+params->x_multifd_group = s->parameters.x_multifd_group;
 
 return params;
 }
@@ -774,6 +777,13 @@ static bool migrate_params_check(MigrationParameters 
*params, Error **errp)
"is invalid, it should be in the range of 1 to 255");
 return false;
 }
+if (params->has_x_multifd_group &&
+(params->x_multifd_group < 1 || params->x_multifd_group > 1)) {
+error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
+   "multifd_group",
+   "is invalid, it should be in the range of 1 to 1");
+return false;
+}
 
 return true;
 }
@@ -895,6 +905,9 @@ static void migrate_params_apply(MigrateSetParameters 
*params)
 if (params->has_x_multifd_threads) {
 s->parameters.x_multifd_threads = params->x_multifd_threads;
 }
+if (params->has_x_multifd_group) {
+s->parameters.x_multifd_group = params->x_multifd_group;
+}
 }
 
 void qmp_migrate_set_parameters(MigrateSetParameters *params, Error **errp)
@@ -1481,6 +1494,15 @@ int migrate_multifd_threads(void)
 return s->parameters.x_multifd_threads;
 }
 
+int migrate_multifd_group(void)
+{
+MigrationState *s;
+
+s = migrate_get_current();
+
+return s->parameters.x_multifd_group;
+}
+
 int migrate_use_xbzrle(void)
 {
 MigrationState *s;
@@ -2249,6 +2271,9 @@ static Property migration_properties[] = {
 DEFINE_PROP_INT64("x-multifd-threads", MigrationState,
   parameters.x_multifd_threads,
   DEFAULT_MIGRATE_MULTIFD_THREADS),
+DEFINE_PROP_INT64("x-multifd-group", MigrationState,
+  parameters.x_multifd_group,
+  DEFAULT_MIGRATE_MULTIFD_GROUP),
 
 /* Migration capabilities */
 DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE),
@@ -2307,6 +2332,7 @@ static void migration_instance_init(Object *obj)
 params->has_x_checkpoint_delay = true;
 params->has_block_incremental = true;
 params->has_x_multifd_threads = true;
+params->has_x_multifd_group = true;
 }
 
 /*
diff --git a/migration/migration.h b/migration/migration.h
index 8e4803d..ddf8c89 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -176,6 +176,7 @@ bool migrate_zero_blocks(void);
 bool migrate_auto_converge(void);
 bool migrate_use_multifd(void);
 int migrate_multifd_threads(void);
+int migrate_multifd_group(void);
 
 int migrate_use_xbzrle(void);
 int64_t migrate_xbzrle_cache_size(void);
diff --git a/qapi-schema.json b/qapi-schema.json
index 3fe1a64..2d4dbd3 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1049,6 +1049,9 @@
 # number of sockets used for migration.
 # The default value is 2 (since 2.11)
 #
+#