Re: 2.6.22-stable causes oomkiller to be invoked

From: Christoph Lameter
Date: Wed Jan 02 2008 - 16:54:24 EST


Just traced it again on my system: It is okay for the number of pages on
the quicklist to reach the high count that we see (although the 16 bit
limits are weird. You have around 4GB of memory in the system?). Up to
1/16th of free memory of a node can be allocated for quicklists (this
allows the effective shutting down and restarting of large amounts of
processes)

The problem may be that this is run on a HIGHMEM system and the
calculation of allowable pages on the quicklists does not take into
account that highmem pages are not usable for quicklists (not sure about
ZONE_MOVABLE on i386. Maybe we need to take that into account as well?)

Here is a patch that removes the HIGHMEM portion from the calculation.
Does this change anything:

Index: linux-2.6/mm/quicklist.c
===================================================================
--- linux-2.6.orig/mm/quicklist.c 2008-01-02 13:41:10.000000000 -0800
+++ linux-2.6/mm/quicklist.c 2008-01-02 13:44:15.000000000 -0800
@@ -29,6 +29,12 @@ static unsigned long max_pages(unsigned

node_free_pages = node_page_state(numa_node_id(),
NR_FREE_PAGES);
+#ifdef CONFIG_HIGHMEM
+ /* Take HIGHMEM pages out of consideration */
+ node_free_pages -= zone_page_state(&NODE_DATA(numa_node_id())->node_zones[ZONE_HIGHMEM],
+ NR_FREE_PAGES);
+#endif
+
max = node_free_pages / FRACTION_OF_NODE_MEM;
return max(max, min_pages);
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/