"Denis V. Lunev" <den@xxxxxxxxxxxxx> writes: > From: Raushaniya Maksudova <rmaksudova@xxxxxxxxxxxxx> > > Excessive virtio_balloon inflation can cause invocation of OOM-killer, > when Linux is under severe memory pressure. Various mechanisms are > responsible for correct virtio_balloon memory management. Nevertheless > it is often the case that these control tools does not have enough time > to react on fast changing memory load. As a result OS runs out of memory > and invokes OOM-killer. The balancing of memory by use of the virtio > balloon should not cause the termination of processes while there are > pages in the balloon. Now there is no way for virtio balloon driver to > free some memory at the last moment before some process will be get > killed by OOM-killer. This makes some amount of sense. But I suggest a few minor changes: > +static int oom_vballoon_pages = OOM_VBALLOON_DEFAULT_PAGES; > +module_param(oom_vballoon_pages, int, S_IRUSR | S_IWUSR); > +MODULE_PARM_DESC(oom_vballoon_pages, "pages to free on OOM"); Since this is already prefixed with "virtio_balloon." I suggest just calling it "oom_pages". > +static int virtballoon_oom_notify(struct notifier_block *self, > + unsigned long dummy, void *parm) > +{ > + unsigned int num_freed_pages; > + unsigned long *freed = (unsigned long *)parm; > + struct virtio_balloon *vb = container_of((struct notifier_block *)self, > + struct virtio_balloon, nb); Why cast self here? > + num_freed_pages = leak_balloon(vb, oom_vballoon_pages); > + update_balloon_size(vb); > + *freed += num_freed_pages; > + > + return NOTIFY_OK; > +} Cheers, Rusty. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization