[libvirt] [PATCH v2] qemu: add the print of page size in cmd domjobinfo

Chao Fan posted 1 patch 6 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20170928083226.26391-1-fanc.fnst@cn.fujitsu.com
There is a newer version of this series
include/libvirt/libvirt-domain.h | 7 +++++++
src/qemu/qemu_domain.c           | 6 ++++++
src/qemu/qemu_migration_cookie.c | 7 +++++++
src/qemu/qemu_monitor.h          | 1 +
src/qemu/qemu_monitor_json.c     | 2 ++
tools/virsh-domain.c             | 8 ++++++++
6 files changed, 31 insertions(+)
[libvirt] [PATCH v2] qemu: add the print of page size in cmd domjobinfo
Posted by Chao Fan 6 years, 6 months ago
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>
---
v1 -> v2:
  Follow the suggestion of John Ferlan:
  1. Drop the fix for unrelated coding style problem.
  2. Fix typo.
  3. Improve a judgment logic when failing to get page size.
---
 include/libvirt/libvirt-domain.h | 7 +++++++
 src/qemu/qemu_domain.c           | 6 ++++++
 src/qemu/qemu_migration_cookie.c | 7 +++++++
 src/qemu/qemu_monitor.h          | 1 +
 src/qemu/qemu_monitor_json.c     | 2 ++
 tools/virsh-domain.c             | 8 ++++++++
 6 files changed, 31 insertions(+)

diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 030a62c43..1f4ddcf66 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -3336,6 +3336,13 @@ typedef enum {
 # define VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE        "memory_dirty_rate"
 
 /**
+ * VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE:
+ *
+ * virDomainGetJobStats field: page size of the memory in this domain
+ */
+# define VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE        "page_size"
+
+/**
  * VIR_DOMAIN_JOB_MEMORY_ITERATION:
  *
  * virDomainGetJobStats field: current iteration over domain's memory
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index cb371f1e8..ce342b670 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -570,6 +570,12 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
                                 stats->ram_iteration) < 0)
         goto error;
 
+    if (stats->ram_page_size && (!(stats->ram_pag_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 +
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
index eef40a6cd..bc6a8dc55 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -654,6 +654,10 @@ qemuMigrationCookieStatisticsXMLFormat(virBufferPtr buf,
                       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);
     virBufferAsprintf(buf, "<%1$s>%2$llu</%1$s>\n",
@@ -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])",
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 6414d2483..1e3322433 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -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;
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 63b855920..625cbc134 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -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));
 
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index a3f3b7c7b..a50713d6e 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -6021,6 +6021,14 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
         }
 
         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) {
             goto save_error;
-- 
2.13.5



--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2] qemu: add the print of page size in cmd domjobinfo
Posted by Chao Fan 6 years, 6 months ago
On Thu, Sep 28, 2017 at 04:32:26PM +0800, Chao Fan wrote:
>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>
>---
>v1 -> v2:
>  Follow the suggestion of John Ferlan:
>  1. Drop the fix for unrelated coding style problem.
>  2. Fix typo.
>  3. Improve a judgment logic when failing to get page size.
>---
> include/libvirt/libvirt-domain.h | 7 +++++++
> src/qemu/qemu_domain.c           | 6 ++++++
> src/qemu/qemu_migration_cookie.c | 7 +++++++
> src/qemu/qemu_monitor.h          | 1 +
> src/qemu/qemu_monitor_json.c     | 2 ++
> tools/virsh-domain.c             | 8 ++++++++
> 6 files changed, 31 insertions(+)
>
>diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
>index 030a62c43..1f4ddcf66 100644
>--- a/include/libvirt/libvirt-domain.h
>+++ b/include/libvirt/libvirt-domain.h
>@@ -3336,6 +3336,13 @@ typedef enum {
> # define VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE        "memory_dirty_rate"
> 
> /**
>+ * VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE:
>+ *
>+ * virDomainGetJobStats field: page size of the memory in this domain
>+ */
>+# define VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE        "page_size"
>+
>+/**
>  * VIR_DOMAIN_JOB_MEMORY_ITERATION:
>  *
>  * virDomainGetJobStats field: current iteration over domain's memory
>diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>index cb371f1e8..ce342b670 100644
>--- a/src/qemu/qemu_domain.c
>+++ b/src/qemu/qemu_domain.c
>@@ -570,6 +570,12 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
>                                 stats->ram_iteration) < 0)
>         goto error;
> 

Ping John Ferlan,

>+    if (stats->ram_page_size && (!(stats->ram_pag_size > 0) ||
>+        virTypedParamsAddULLong(&par, &npar, &maxpar,

Thanks for your suggestion, and I wonder if here is OK.

Thanks,
Chao Fan
>+                                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 +
>diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
>index eef40a6cd..bc6a8dc55 100644
>--- a/src/qemu/qemu_migration_cookie.c
>+++ b/src/qemu/qemu_migration_cookie.c
>@@ -654,6 +654,10 @@ qemuMigrationCookieStatisticsXMLFormat(virBufferPtr buf,
>                       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);
>     virBufferAsprintf(buf, "<%1$s>%2$llu</%1$s>\n",
>@@ -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])",
>diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
>index 6414d2483..1e3322433 100644
>--- a/src/qemu/qemu_monitor.h
>+++ b/src/qemu/qemu_monitor.h
>@@ -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;
>diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
>index 63b855920..625cbc134 100644
>--- a/src/qemu/qemu_monitor_json.c
>+++ b/src/qemu/qemu_monitor_json.c
>@@ -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));
> 
>diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
>index a3f3b7c7b..a50713d6e 100644
>--- a/tools/virsh-domain.c
>+++ b/tools/virsh-domain.c
>@@ -6021,6 +6021,14 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>         }
> 
>         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) {
>             goto save_error;
>-- 
>2.13.5
>


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2] qemu: add the print of page size in cmd domjobinfo
Posted by John Ferlan 6 years, 6 months ago

On 09/28/2017 04:32 AM, Chao Fan wrote:
> 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>
> ---
> v1 -> v2:
>   Follow the suggestion of John Ferlan:
>   1. Drop the fix for unrelated coding style problem.
>   2. Fix typo.
>   3. Improve a judgment logic when failing to get page size.
> ---
>  include/libvirt/libvirt-domain.h | 7 +++++++
>  src/qemu/qemu_domain.c           | 6 ++++++
>  src/qemu/qemu_migration_cookie.c | 7 +++++++
>  src/qemu/qemu_monitor.h          | 1 +
>  src/qemu/qemu_monitor_json.c     | 2 ++
>  tools/virsh-domain.c             | 8 ++++++++
>  6 files changed, 31 insertions(+)
> 
> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
> index 030a62c43..1f4ddcf66 100644
> --- a/include/libvirt/libvirt-domain.h
> +++ b/include/libvirt/libvirt-domain.h
> @@ -3336,6 +3336,13 @@ typedef enum {
>  # define VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE        "memory_dirty_rate"
>  
>  /**
> + * VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE:
> + *
> + * virDomainGetJobStats field: page size of the memory in this domain
> + */
> +# define VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE        "page_size"
> +
> +/**
>   * VIR_DOMAIN_JOB_MEMORY_ITERATION:
>   *
>   * virDomainGetJobStats field: current iteration over domain's memory
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index cb371f1e8..ce342b670 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -570,6 +570,12 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
>                                  stats->ram_iteration) < 0)
>          goto error;
>  
> +    if (stats->ram_page_size && (!(stats->ram_pag_size > 0) ||
> +        virTypedParamsAddULLong(&par, &npar, &maxpar,

Any reason to not just be:

    if (stats->ram_page_size > 0 &&
        virTypedParamsAddULLong(&par, &npar, &maxpar,

?

That "(!(stats->ram_pag_size > 0) ||" is a bit harsh to read

Things look reasonable to me otherwise though.

This won't make 3.8.0 since we're in freeze; however, it looks
reasonable for 3.9.0. I can also add a brief docs/news.xml article too -
unless you want to respin with that.  Your call.

John

> +                                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 +
> diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
> index eef40a6cd..bc6a8dc55 100644
> --- a/src/qemu/qemu_migration_cookie.c
> +++ b/src/qemu/qemu_migration_cookie.c
> @@ -654,6 +654,10 @@ qemuMigrationCookieStatisticsXMLFormat(virBufferPtr buf,
>                        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);
>      virBufferAsprintf(buf, "<%1$s>%2$llu</%1$s>\n",
> @@ -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])",
> diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
> index 6414d2483..1e3322433 100644
> --- a/src/qemu/qemu_monitor.h
> +++ b/src/qemu/qemu_monitor.h
> @@ -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;
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 63b855920..625cbc134 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -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));
>  
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index a3f3b7c7b..a50713d6e 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -6021,6 +6021,14 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>          }
>  
>          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) {
>              goto save_error;
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2] qemu: add the print of page size in cmd domjobinfo
Posted by Chao Fan 6 years, 6 months ago
On Fri, Sep 29, 2017 at 09:07:15AM -0400, John Ferlan wrote:
>
>
>On 09/28/2017 04:32 AM, Chao Fan wrote:
>> 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>
>> ---
>> v1 -> v2:
>>   Follow the suggestion of John Ferlan:
>>   1. Drop the fix for unrelated coding style problem.
>>   2. Fix typo.
>>   3. Improve a judgment logic when failing to get page size.
>> ---
>>  include/libvirt/libvirt-domain.h | 7 +++++++
>>  src/qemu/qemu_domain.c           | 6 ++++++
>>  src/qemu/qemu_migration_cookie.c | 7 +++++++
>>  src/qemu/qemu_monitor.h          | 1 +
>>  src/qemu/qemu_monitor_json.c     | 2 ++
>>  tools/virsh-domain.c             | 8 ++++++++
>>  6 files changed, 31 insertions(+)
>> 
>> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
>> index 030a62c43..1f4ddcf66 100644
>> --- a/include/libvirt/libvirt-domain.h
>> +++ b/include/libvirt/libvirt-domain.h
>> @@ -3336,6 +3336,13 @@ typedef enum {
>>  # define VIR_DOMAIN_JOB_MEMORY_DIRTY_RATE        "memory_dirty_rate"
>>  
>>  /**
>> + * VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE:
>> + *
>> + * virDomainGetJobStats field: page size of the memory in this domain
>> + */
>> +# define VIR_DOMAIN_JOB_MEMORY_PAGE_SIZE        "page_size"
>> +
>> +/**
>>   * VIR_DOMAIN_JOB_MEMORY_ITERATION:
>>   *
>>   * virDomainGetJobStats field: current iteration over domain's memory
>> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>> index cb371f1e8..ce342b670 100644
>> --- a/src/qemu/qemu_domain.c
>> +++ b/src/qemu/qemu_domain.c
>> @@ -570,6 +570,12 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
>>                                  stats->ram_iteration) < 0)
>>          goto error;
>>  
>> +    if (stats->ram_page_size && (!(stats->ram_pag_size > 0) ||
>> +        virTypedParamsAddULLong(&par, &npar, &maxpar,
>
>Any reason to not just be:
>
>    if (stats->ram_page_size > 0 &&
>        virTypedParamsAddULLong(&par, &npar, &maxpar,
>
>?
>
>That "(!(stats->ram_pag_size > 0) ||" is a bit harsh to read
>
>Things look reasonable to me otherwise though.
Hi John,

Sorry for late reply, cause I am on vacation.
Thanks for your help. And I will change the code and resend after
vacation.

>
>This won't make 3.8.0 since we're in freeze; however, it looks
3.9.0 is good enough for me.
>reasonable for 3.9.0. I can also add a brief docs/news.xml article too -
Thanks again.
>unless you want to respin with that.  Your call.
>
Sorry for vacation again, I will return to work after 1 week.

Thanks,
Chao Fan

>John
>
>> +                                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 +
>> diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
>> index eef40a6cd..bc6a8dc55 100644
>> --- a/src/qemu/qemu_migration_cookie.c
>> +++ b/src/qemu/qemu_migration_cookie.c
>> @@ -654,6 +654,10 @@ qemuMigrationCookieStatisticsXMLFormat(virBufferPtr buf,
>>                        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);
>>      virBufferAsprintf(buf, "<%1$s>%2$llu</%1$s>\n",
>> @@ -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])",
>> diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
>> index 6414d2483..1e3322433 100644
>> --- a/src/qemu/qemu_monitor.h
>> +++ b/src/qemu/qemu_monitor.h
>> @@ -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;
>> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
>> index 63b855920..625cbc134 100644
>> --- a/src/qemu/qemu_monitor_json.c
>> +++ b/src/qemu/qemu_monitor_json.c
>> @@ -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));
>>  
>> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
>> index a3f3b7c7b..a50713d6e 100644
>> --- a/tools/virsh-domain.c
>> +++ b/tools/virsh-domain.c
>> @@ -6021,6 +6021,14 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
>>          }
>>  
>>          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) {
>>              goto save_error;
>> 
>
>


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list