qemu: Add entry for balloon stat stat-disk-caches

QEMU commit bf1e7140e adds reporting of new balloon statistic to QEMU
2.12. Value represents the amount of memory that can be quickly
reclaimed without additional I/O. Let's add that too.

Signed-off-by: Tomáš Golembiovský <tgolembi@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Tomáš Golembiovský 2018-07-02 13:19:42 +02:00 committed by John Ferlan
parent 74b5634b77
commit aee0465508
6 changed files with 21 additions and 1 deletions

View File

@ -628,11 +628,18 @@ typedef enum {
/* Timestamp of the last update of statistics, in seconds. */ /* Timestamp of the last update of statistics, in seconds. */
VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE = 9, VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE = 9,
/*
* The amount of memory, that can be quickly reclaimed without
* additional I/O (in kB). Typically these pages are used for caching files
* from disk.
*/
VIR_DOMAIN_MEMORY_STAT_DISK_CACHES = 10,
/* /*
* The number of statistics supported by this version of the interface. * The number of statistics supported by this version of the interface.
* To add new statistics, add them to the enum and increase this value. * To add new statistics, add them to the enum and increase this value.
*/ */
VIR_DOMAIN_MEMORY_STAT_NR = 10, VIR_DOMAIN_MEMORY_STAT_NR = 11,
# ifdef VIR_ENUM_SENTINELS # ifdef VIR_ENUM_SENTINELS
VIR_DOMAIN_MEMORY_STAT_LAST = VIR_DOMAIN_MEMORY_STAT_NR VIR_DOMAIN_MEMORY_STAT_LAST = VIR_DOMAIN_MEMORY_STAT_NR

View File

@ -5732,6 +5732,9 @@ virDomainGetInterfaceParameters(virDomainPtr domain,
* Current balloon value (in kb). * Current balloon value (in kb).
* VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE * VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE
* Timestamp of the last statistic * Timestamp of the last statistic
* VIR_DOMAIN_MEMORY_STAT_DISK_CACHES
* Memory that can be reclaimed without additional I/O, typically disk
* caches (in kb).
* *
* Returns: The number of stats provided or -1 in case of failure. * Returns: The number of stats provided or -1 in case of failure.
*/ */

View File

@ -19798,6 +19798,7 @@ qemuDomainGetStatsBalloon(virQEMUDriverPtr driver,
STORE_MEM_RECORD(RSS, "rss") STORE_MEM_RECORD(RSS, "rss")
STORE_MEM_RECORD(LAST_UPDATE, "last-update") STORE_MEM_RECORD(LAST_UPDATE, "last-update")
STORE_MEM_RECORD(USABLE, "usable") STORE_MEM_RECORD(USABLE, "usable")
STORE_MEM_RECORD(DISK_CACHES, "disk_caches")
} }
#undef STORE_MEM_RECORD #undef STORE_MEM_RECORD

View File

@ -2081,6 +2081,8 @@ int qemuMonitorJSONGetMemoryStats(qemuMonitorPtr mon,
VIR_DOMAIN_MEMORY_STAT_USABLE, 1024); VIR_DOMAIN_MEMORY_STAT_USABLE, 1024);
GET_BALLOON_STATS(data, "last-update", GET_BALLOON_STATS(data, "last-update",
VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE, 1); VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE, 1);
GET_BALLOON_STATS(statsdata, "stat-disk-caches",
VIR_DOMAIN_MEMORY_STAT_DISK_CACHES, 1024);
ret = got; ret = got;
cleanup: cleanup:
virJSONValueFree(cmd); virJSONValueFree(cmd);

View File

@ -364,6 +364,8 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd)
vshPrint(ctl, "rss %llu\n", stats[i].val); vshPrint(ctl, "rss %llu\n", stats[i].val);
if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE) if (stats[i].tag == VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE)
vshPrint(ctl, "last_update %llu\n", stats[i].val); 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);
} }
ret = true; ret = true;

View File

@ -924,6 +924,8 @@ B<Explanation of fields>:
usable - The amount of memory which can be reclaimed by balloon usable - The amount of memory which can be reclaimed by balloon
without causing host swapping (in KiB) without causing host swapping (in KiB)
last-update - Timestamp of the last update of statistics (in seconds) 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)
For QEMU/KVM with a memory balloon, setting the optional I<--period> to a 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 value larger than 0 in seconds will allow the balloon driver to return
@ -1030,6 +1032,9 @@ I<--balloon> returns:
balloon without causing host swapping (in KiB) balloon without causing host swapping (in KiB)
"balloon.last-update" - timestamp of the last update of statistics "balloon.last-update" - timestamp of the last update of statistics
(in seconds) (in seconds)
"balloon.disk_caches " - the amount of memory that can be reclaimed
without additional I/O, typically disk
caches (in KiB)
I<--vcpu> returns: I<--vcpu> returns: