[PATCH 1/2] virtio_balloon: disable oom killer when fill balloon

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When memory pressure is high, virtio ballooning will probably cause oom killing.
Even if alloc_page with GFP_NORETRY itself does not directly trigger oom it
will make memory becoming low then memory alloc of other processes will trigger
oom killing. It is not desired behaviour.

Here disable oom killer in fill_balloon to address this issue.

Signed-off-by: Dave Young <hidave.darkstar@xxxxxxxxx>
---
 drivers/virtio/virtio_balloon.c |    3 +++
 1 file changed, 3 insertions(+)

--- linux-2.6.orig/drivers/virtio/virtio_balloon.c	2010-10-13 10:14:38.000000000 +0800
+++ linux-2.6/drivers/virtio/virtio_balloon.c	2011-04-26 11:38:43.979785141 +0800
@@ -25,6 +25,7 @@
 #include <linux/freezer.h>
 #include <linux/delay.h>
 #include <linux/slab.h>
+#include <linux/oom.h>
 
 struct virtio_balloon
 {
@@ -102,6 +103,7 @@ static void fill_balloon(struct virtio_b
 	/* We can only do one array worth at a time. */
 	num = min(num, ARRAY_SIZE(vb->pfns));
 
+	oom_killer_disable();
 	for (vb->num_pfns = 0; vb->num_pfns < num; vb->num_pfns++) {
 		struct page *page = alloc_page(GFP_HIGHUSER | __GFP_NORETRY |
 					__GFP_NOMEMALLOC | __GFP_NOWARN);
@@ -119,6 +121,7 @@ static void fill_balloon(struct virtio_b
 		vb->num_pages++;
 		list_add(&page->lru, &vb->pages);
 	}
+	oom_killer_enable();
 
 	/* Didn't get any?  Oh well. */
 	if (vb->num_pfns == 0)
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux