migration/hmp: Fix postcopy-blocktime per-vCPU results
Unfortunately, it was never correctly shown..
This is only found when I started to look into making the blocktime feature
more useful (so as to avoid using bpftrace, even though I'm not sure which
one will be harder to use..).
So the old dump would look like this:
Postcopy vCPU Blocktime: 0-1,4,10,21,33,46,48,59
Even though there're actually 40 vcpus, and the string will merge same
elements and also sort them.
To fix it, simply loop over the uint32List manually. Now it looks like:
Postcopy vCPU Blocktime (ms):
[15, 0, 0, 43, 29, 34, 36, 29, 37, 41,
33, 37, 45, 52, 50, 38, 40, 37, 40, 49,
40, 35, 35, 35, 81, 19, 18, 19, 18, 30,
22, 3, 0, 0, 0, 0, 0, 0, 0, 0]
Cc: Dr. David Alan Gilbert <dave@treblig.org>
Cc: Alexey Perevalov <a.perevalov@samsung.com>
Cc: Markus Armbruster <armbru@redhat.com>
Tested-by: Mario Casquero <mcasquer@redhat.com>
Reviewed-by: Juraj Marcin <jmarcin@redhat.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/20250613140801.474264-3-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
31a90360fd
commit
2862d6d4fb
1 changed files with 13 additions and 9 deletions
|
|
@ -208,15 +208,19 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict)
|
|||
}
|
||||
|
||||
if (info->has_postcopy_vcpu_blocktime) {
|
||||
Visitor *v;
|
||||
char *str;
|
||||
v = string_output_visitor_new(false, &str);
|
||||
visit_type_uint32List(v, NULL, &info->postcopy_vcpu_blocktime,
|
||||
&error_abort);
|
||||
visit_complete(v, &str);
|
||||
monitor_printf(mon, "Postcopy vCPU Blocktime: %s\n", str);
|
||||
g_free(str);
|
||||
visit_free(v);
|
||||
uint32List *item = info->postcopy_vcpu_blocktime;
|
||||
const char *sep = "";
|
||||
int count = 0;
|
||||
|
||||
monitor_printf(mon, "Postcopy vCPU Blocktime (ms):\n [");
|
||||
|
||||
while (item) {
|
||||
monitor_printf(mon, "%s%"PRIu32, sep, item->value);
|
||||
item = item->next;
|
||||
/* Each line 10 vcpu results, newline if there's more */
|
||||
sep = ((++count % 10 == 0) && item) ? ",\n " : ", ";
|
||||
}
|
||||
monitor_printf(mon, "]\n");
|
||||
}
|
||||
|
||||
out:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue