]> www.infradead.org Git - linux.git/commitdiff
virtio_balloon: introduce oom-kill invocations
authorzhenwei pi <pizhenwei@bytedance.com>
Tue, 23 Apr 2024 03:41:07 +0000 (11:41 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 10 Sep 2024 06:51:47 +0000 (02:51 -0400)
When the guest OS runs under critical memory pressure, the guest
starts to kill processes. A guest monitor agent may scan 'oom_kill'
from /proc/vmstat, and reports the OOM KILL event. However, the agent
may be killed and we will loss this critical event(and the later
events).

For now we can also grep for magic words in guest kernel log from host
side. Rather than this unstable way, virtio balloon reports OOM-KILL
invocations instead.

Acked-by: David Hildenbrand <david@redhat.com>
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Message-Id: <20240423034109.1552866-3-pizhenwei@bytedance.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/virtio/virtio_balloon.c
include/uapi/linux/virtio_balloon.h

index 54469277ca3032f777f42941994b08152bac1344..b54392366142d7c16bf1dbec9f53032cf33096a2 100644 (file)
@@ -363,6 +363,7 @@ static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb)
                    pages_to_bytes(events[PSWPOUT]));
        update_stat(vb, idx++, VIRTIO_BALLOON_S_MAJFLT, events[PGMAJFAULT]);
        update_stat(vb, idx++, VIRTIO_BALLOON_S_MINFLT, events[PGFAULT]);
+       update_stat(vb, idx++, VIRTIO_BALLOON_S_OOM_KILL, events[OOM_KILL]);
 
 #ifdef CONFIG_HUGETLB_PAGE
        update_stat(vb, idx++, VIRTIO_BALLOON_S_HTLB_PGALLOC,
index ddaa45e723c4cb120ce1e74e7ce68055f29e02e2..b17bbe033697de47cdab8bf2a7e3da7f5c20e80f 100644 (file)
@@ -71,7 +71,8 @@ struct virtio_balloon_config {
 #define VIRTIO_BALLOON_S_CACHES   7   /* Disk caches */
 #define VIRTIO_BALLOON_S_HTLB_PGALLOC  8  /* Hugetlb page allocations */
 #define VIRTIO_BALLOON_S_HTLB_PGFAIL   9  /* Hugetlb page allocation failures */
-#define VIRTIO_BALLOON_S_NR       10
+#define VIRTIO_BALLOON_S_OOM_KILL      10 /* OOM killer invocations */
+#define VIRTIO_BALLOON_S_NR       11
 
 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \
        VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \
@@ -83,7 +84,8 @@ struct virtio_balloon_config {
        VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \
        VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \
        VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \
-       VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
+       VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures", \
+       VIRTIO_BALLOON_S_NAMES_prefix "oom-kills" \
 }
 
 #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")