On Tue, Apr 23, 2024 at 11:41:07AM +0800, zhenwei pi wrote: > 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@xxxxxxxxxx> > Signed-off-by: zhenwei pi <pizhenwei@xxxxxxxxxxxxx> > --- > drivers/virtio/virtio_balloon.c | 1 + > include/uapi/linux/virtio_balloon.h | 6 ++++-- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c > index 1710e3098ecd..f7a47eaa0936 100644 > --- a/drivers/virtio/virtio_balloon.c > +++ b/drivers/virtio/virtio_balloon.c > @@ -330,6 +330,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, > diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h > index ddaa45e723c4..b17bbe033697 100644 > --- a/include/uapi/linux/virtio_balloon.h > +++ b/include/uapi/linux/virtio_balloon.h > @@ -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", \ Looks like a useful extension. But any UAPI extension has to go to virtio spec first. > @@ -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("") > -- > 2.34.1