[Devel] [PATCH RHEL9 COMMIT] FD: balloon: usage information visible by guest
Konstantin Khorenko
khorenko at virtuozzo.com
Mon Sep 26 20:27:03 MSK 2022
The commit is pushed to "branch-rh9-5.14.0-70.22.1.vz9.17.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh9-5.14.0-70.22.1.vz9.17.6
------>
commit feb9336d80ce108a640a6bf57cbcb40cf6c852e7
Author: Konstantin Khorenko <khorenko at virtuozzo.com>
Date: Mon Sep 26 20:24:57 2022 +0300
FD: balloon: usage information visible by guest
https://jira.sw.ru/browse/PSBM-140409
https://jira.sw.ru/browse/PSBM-140407
Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
Feature: balloon: usage information visible by guest
---
.../balloon-usage_information_visible_by_guest.rst | 103 +++++++++++++++++++++
1 file changed, 103 insertions(+)
diff --git a/Documentation/Virtuozzo/FeatureDescriptions/balloon-usage_information_visible_by_guest.rst b/Documentation/Virtuozzo/FeatureDescriptions/balloon-usage_information_visible_by_guest.rst
new file mode 100644
index 000000000000..30afdc1acee5
--- /dev/null
+++ b/Documentation/Virtuozzo/FeatureDescriptions/balloon-usage_information_visible_by_guest.rst
@@ -0,0 +1,103 @@
+===========================================
+balloon: usage information visible by guest
+===========================================
+
+Background:
+===========
+
+The ballooning mechanism allows VM guests to reduce their memory size
+(thus relinquishing memory to the Host) and to increase it back (thus
+taking memory from the Host).
+
+During OOM guest issues or even just Guet low performance issues
+investigations it is important to know if the Host grabs some Guest
+memory via ballooning mechanism.
+
+Implementation description:
+===========================
+
+VMware balloon guest file: /sys/kernel/debug/vmmemctl
+Hyper-V balloon guest file: /sys/kernel/debug/hv-balloon
+KVM balloon guest file: /sys/kernel/debug/virtio-balloon
+
+VMware balloon guest file presents for a long time already,
+while Hyper-V and KVM balloon guest files were added recently.
+
+Hyper-V balloon
+---------------
+
+Balloon guest statistics output example::
+
+ # cat /sys/kernel/debug/hv-balloon
+ host_version : 2.0 // Hyper-V version the Guest is running under
+ capabilities : enabled hot_add
+ state : 1 (Initialized)
+ page_size : 4096
+ pages_added : 0 // pages that are hot_add-ed to the Guest
+ pages_onlined : 0 // pages that are added and then put online
+ // as available/used
+ pages_ballooned_out : 0 // pages the Host have taken back
+ vm_pages_commited : 795365 // total pages used by the Guest userspace
+ total_pages_commited : 977790 // total pages used by the Guest user+kernel
+ max_dynamic_page_count: 268435456 // maximum pages the Guest can have added
+ // via hot_add
+
+KVM balloon
+-----------
+
+The ballooning is implemented via virtio balloon device.
+
+Depending on options the ballooned memory is accounted in two ways:
+
+1. If deflate on OOM is enabled - ballooned memory is accounted as used.
+2. If deflate on OOM is not enabled - ballooned memory is subtracted
+ from total RAM.
+
+Q: How to check if "deflate on OOM" feature is enabled?
+A: Check balloon "features" file content.
+
+To decipher balloon bits are defined in include/uapi/linux/virtio_balloon.h
+Currently "deflate on OOM" feature is stored in the 2nd bit::
+
+ #define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* Deflate balloon on OOM */
+
+Examples::
+
+ Without deflate on OOM:
+ # cat /sys/devices/pci0000:00/0000:00:03.0/virtio0/features
+ 0100000000000000000000000000110010000000000000000000000000000000
+
+ With deflate on OOM:
+ # cat /sys/devices/pci0000:00/0000:00:03.0/virtio0/features
+ 0110000000000000000000000000110010000000000000000000000000000000
+
+How to find virtio balloon device among other virtio devices?
+(check if the "virtio_balloon" module is loaded)::
+
+ # ls -l /sys/bus/virtio/drivers/virtio_balloon/virtio*
+ /sys/bus/virtio/drivers/virtio_balloon/virtio3 ->
+ ../../../../devices/pci0000:00/0000:00:07.0/virtio3
+
+To check virtio_balloon features::
+
+ # cat /sys/bus/virtio/drivers/virtio_balloon/virtio*/features
+ 0110000000000000000000000000110010000000000000000000000000000000
+
+Balloon guest statistics output example::
+
+ # cat /sys/kernel/debug/virtio-balloon
+ InflatedTotal: 0 kB
+ InflatedFree: 0 kB
+
+- If "InflatedTotal" is not zero, it means the "deflate on OOM" feature is
+ **not** set and the provided amount of memory is subtracted from total RAM
+ inside the Guest.
+
+- If "InflatedFree" is not zero, it means "deflate on OOM" feature is set and
+ the provided amount of memory is accounted as "used" inside the Guest.
+
+- Both "InflatedTotal" and "InflatedFree" cannot be non-zero at the same time.
+
+
+https://jira.sw.ru/browse/PSBM-140409
+https://jira.sw.ru/browse/PSBM-140407
More information about the Devel
mailing list