mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-03 07:33:50 +00:00
qemu: add the print of page size in cmd domjobinfo
The command "info migrate" of qemu outputs the dirty-pages-rate during migration, but page size is different in different architectures. So page size should be output to calculate dirty pages in bytes. Page size is already implemented with commit 030ce1f8612215fcbe9d353dfeaeb2937f8e3f94 in qemu. Now Implement the counter-part in libvirt. Signed-off-by: Chao Fan <fanc.fnst@cn.fujitsu.com> Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com> Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
7388d055d4
commit
79b7ac43fa
@ -3335,6 +3335,17 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE "memory_dirty_rate"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE:
|
||||
*
|
||||
* virDomainGetJobStats field: memory page size in bytes, as
|
||||
* VIR_TYPED_PARAM_ULLONG. If present, this parameter can be used to
|
||||
* convert other page based statistics, such as
|
||||
* VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE or VIR_DOMAIN_JOB_COMPRESSION_PAGES
|
||||
* to bytes.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE "memory_page_size"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_MEMORY_ITERATION:
|
||||
*
|
||||
|
@ -570,6 +570,12 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
|
||||
stats->ram_iteration) < 0)
|
||||
goto error;
|
||||
|
||||
if (stats->ram_page_size > 0 &&
|
||||
virTypedParamsAddULLong(&par, &npar, &maxpar,
|
||||
VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE,
|
||||
stats->ram_page_size) < 0)
|
||||
goto error;
|
||||
|
||||
if (virTypedParamsAddULLong(&par, &npar, &maxpar,
|
||||
VIR_DOMAIN_JOB_DISK_TOTAL,
|
||||
stats->disk_total +
|
||||
|
@ -653,6 +653,10 @@ qemuMigrationCookieStatisticsXMLFormat(virBufferPtr buf,
|
||||
VIR_DOMAIN_JOB_MEMORY_ITERATION,
|
||||
stats->ram_iteration);
|
||||
|
||||
virBufferAsprintf(buf, "<%1$s>%2$llu</%1$s>\n",
|
||||
VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE,
|
||||
stats->ram_page_size);
|
||||
|
||||
virBufferAsprintf(buf, "<%1$s>%2$llu</%1$s>\n",
|
||||
VIR_DOMAIN_JOB_DISK_TOTAL,
|
||||
stats->disk_total);
|
||||
@ -1014,6 +1018,9 @@ qemuMigrationCookieStatisticsXMLParse(xmlXPathContextPtr ctxt)
|
||||
virXPathULongLong("string(./" VIR_DOMAIN_JOB_MEMORY_ITERATION "[1])",
|
||||
ctxt, &stats->ram_iteration);
|
||||
|
||||
virXPathULongLong("string(./" VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE "[1])",
|
||||
ctxt, &stats->ram_page_size);
|
||||
|
||||
virXPathULongLong("string(./" VIR_DOMAIN_JOB_DISK_TOTAL "[1])",
|
||||
ctxt, &stats->disk_total);
|
||||
virXPathULongLong("string(./" VIR_DOMAIN_JOB_DISK_PROCESSED "[1])",
|
||||
|
@ -677,6 +677,7 @@ struct _qemuMonitorMigrationStats {
|
||||
unsigned long long ram_normal;
|
||||
unsigned long long ram_normal_bytes;
|
||||
unsigned long long ram_dirty_rate;
|
||||
unsigned long long ram_page_size;
|
||||
unsigned long long ram_iteration;
|
||||
|
||||
unsigned long long disk_transferred;
|
||||
|
@ -2892,6 +2892,8 @@ qemuMonitorJSONGetMigrationStatsReply(virJSONValuePtr reply,
|
||||
&stats->ram_normal_bytes));
|
||||
ignore_value(virJSONValueObjectGetNumberUlong(ram, "dirty-pages-rate",
|
||||
&stats->ram_dirty_rate));
|
||||
ignore_value(virJSONValueObjectGetNumberUlong(ram, "page-size",
|
||||
&stats->ram_page_size));
|
||||
ignore_value(virJSONValueObjectGetNumberUlong(ram, "dirty-sync-count",
|
||||
&stats->ram_iteration));
|
||||
|
||||
|
@ -6020,6 +6020,14 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
|
||||
vshPrint(ctl, "%-17s %-12llu pages/s\n", _("Dirty rate:"), value);
|
||||
}
|
||||
|
||||
if ((rc = virTypedParamsGetULLong(params, nparams,
|
||||
VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE,
|
||||
&value)) < 0) {
|
||||
goto save_error;
|
||||
} else if (rc) {
|
||||
vshPrint(ctl, "%-17s %-12llu bytes\n", _("Page size:"), value);
|
||||
}
|
||||
|
||||
if ((rc = virTypedParamsGetULLong(params, nparams,
|
||||
VIR_DOMAIN_JOB_MEMORY_ITERATION,
|
||||
&value)) < 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user