[libvirt] [PATCH v2] qemu: Add entry for balloon stats stat-htlb-pgalloc and stat-htlb-pgfail
Han Han
hhan at redhat.com
Fri May 17 07:47:18 UTC 2019
Ping. Anyone could help review the patch:
https://www.redhat.com/archives/libvir-list/2019-April/msg01454.html
On Sun, Apr 28, 2019 at 5:18 PM Han Han <hhan at redhat.com> wrote:
> Qemu added reporting of virtio balloon new statistics stat-htlb-pgalloc and
> stat-htlb-pgfail since qemu-3.0 commit b7b12644297. The value of
> stat-htlb-pgalloc represents the number of successful hugetlb page
> allocations
> while stat-htlb-pgfail represents the number of failed ones. Add this
> statistics reporting to libvirt.
>
> To enable this feature for vm, guest kenel >= 4.17 is required because
> the exporting hugetlb page allocation for virtio balloon is introduced
> since 6c64fe7f.
>
> Signed-off-by: Han Han <hhan at redhat.com>
> ---
> include/libvirt/libvirt-domain.h | 14 +++++++++++++-
> src/libvirt-domain.c | 5 ++++-
> src/qemu/qemu_driver.c | 2 ++
> src/qemu/qemu_monitor_json.c | 5 +++++
> tools/virsh-domain-monitor.c | 4 ++++
> tools/virsh.pod | 2 ++
> 6 files changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/include/libvirt/libvirt-domain.h
> b/include/libvirt/libvirt-domain.h
> index 7d36820b5a..192d25c1db 100644
> --- a/include/libvirt/libvirt-domain.h
> +++ b/include/libvirt/libvirt-domain.h
> @@ -636,11 +636,23 @@ typedef enum {
> */
> VIR_DOMAIN_MEMORY_STAT_DISK_CACHES = 10,
>
> + /*
> + * The amount of successful hugetlb(Huge Page Tables) allocations via
> + * virtio balloon.
> + */
> + VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC = 11,
> +
> + /*
> + * The amount of failed hugetlb(Huge Page Tables) allocations via
> + * virtio balloon.
> + */
> + VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL = 12,
> +
> /*
> * The number of statistics supported by this version of the
> interface.
> * To add new statistics, add them to the enum and increase this
> value.
> */
> - VIR_DOMAIN_MEMORY_STAT_NR = 11,
> + VIR_DOMAIN_MEMORY_STAT_NR = 13,
>
> # ifdef VIR_ENUM_SENTINELS
> VIR_DOMAIN_MEMORY_STAT_LAST = VIR_DOMAIN_MEMORY_STAT_NR
> diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
> index 80284a99f0..a95690e8a4 100644
> --- a/src/libvirt-domain.c
> +++ b/src/libvirt-domain.c
> @@ -5734,7 +5734,10 @@ virDomainGetInterfaceParameters(virDomainPtr domain,
> * VIR_DOMAIN_MEMORY_STAT_DISK_CACHES
> * Memory that can be reclaimed without additional I/O, typically disk
> * caches (in kb).
> - *
> + * VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC
> + * The amount of successful hugetlb(Huge Page Tables) allocations
> + * VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL
> + * The amount of failed hugetlb(Huge Page Tables) allocations
> * Returns: The number of stats provided or -1 in case of failure.
> */
> int
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index f48d9256e4..2d849beac8 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -20245,6 +20245,8 @@ qemuDomainGetStatsBalloon(virQEMUDriverPtr driver,
> STORE_MEM_RECORD(LAST_UPDATE, "last-update")
> STORE_MEM_RECORD(USABLE, "usable")
> STORE_MEM_RECORD(DISK_CACHES, "disk_caches")
> + STORE_MEM_RECORD(HUGETLB_PGALLOC, "hugetlb_pgalloc")
> + STORE_MEM_RECORD(HUGETLB_PGFAIL, "hugetlb_pgfail")
> }
>
> #undef STORE_MEM_RECORD
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 908967f46c..5e3df5e759 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -2150,6 +2150,11 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr
> mon,
> VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE, 1);
> GET_BALLOON_STATS(statsdata, "stat-disk-caches",
> VIR_DOMAIN_MEMORY_STAT_DISK_CACHES, 1024);
> + GET_BALLOON_STATS(statsdata, "stat-htlb-pgalloc",
> + VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC, 1);
> + GET_BALLOON_STATS(statsdata, "stat-htlb-pgfail",
> + VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL, 1);
> +
> ret = got;
> cleanup:
> virJSONValueFree(cmd);
> diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
> index d87475f6f6..0092a9786e 100644
> --- a/tools/virsh-domain-monitor.c
> +++ b/tools/virsh-domain-monitor.c
> @@ -376,6 +376,10 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd)
> vshPrint(ctl, "last_update %llu\n", stats[i].val);
> if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_DISK_CACHES)
> vshPrint(ctl, "disk_caches %llu\n", stats[i].val);
> + if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC)
> + vshPrint(ctl, "hugetlb_pgalloc %llu\n", stats[i].val);
> + if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL)
> + vshPrint(ctl, "hugetlb_pgfail %llu\n", stats[i].val);
> }
>
> ret = true;
> diff --git a/tools/virsh.pod b/tools/virsh.pod
> index afc1684db0..ef27c527d6 100644
> --- a/tools/virsh.pod
> +++ b/tools/virsh.pod
> @@ -938,6 +938,8 @@ without causing host swapping (in KiB)
> last-update - Timestamp of the last update of statistics (in
> seconds)
> disk_caches - The amount of memory that can be reclaimed without
> additional I/O, typically disk caches (in KiB)
> + hugetlb_pgalloc - The number of successful huge page table allocations
> + hugetlb_pgfail - The number of failed huge page table allocations
>
> For QEMU/KVM with a memory balloon, setting the optional I<--period> to a
> value larger than 0 in seconds will allow the balloon driver to return
> --
> 2.20.1
>
>
--
Best regards,
-----------------------------------
Han Han
Quality Engineer
Redhat.
Email: hhan at redhat.com
Phone: +861065339333
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190517/c27777ef/attachment-0001.htm>
More information about the libvir-list
mailing list