The IBM order relaxation patch

Pete Zaitcev (zaitcev@redhat.com)
Wed, 6 Feb 2002 14:13:04 -0500


Hi,

I had a look at an IBM patch, which is described thus:

- Order 2 allocation relief

Symptom: Under stress and after long uptimes of a 64 bit system
the error message "__alloc_pages: 2-order allocation failed."
appears and either the fork of a new process fails or an
active process dies.

Problem: The order 2 allocation problem is based in the size of the
region and segement tables as defined by the zSeries
architecture. A full region or segment table in 64 bit mode
takes 16 KB of contigous real memory. The page allocation
routines do not guarantee that a higher order allocation
will succeed due to memory fragmentation.

Solution: The order 2 allocation fix is supposed to reduce the number
of order 2 allocations for the region and segment tables to
a minimum. To do so it uses a feature of the architecture
that allows to create incomplete region and segment tables.
In almost all cases a process does not need full region or
segment tables. If a full region or segment table is needed
it is reallocated to the full size.

This patch is very s/390 specific and breaks all other architectures.
<<they meant "zSeries specific", surely --zaitcev>>

It's a stupid question, but: why can we not simply
wait until a desired unfragmented memory area is available,
with a GPF flag? What they describe does not happen in an
interrupt context, so we can sleep.

And another one: why not to increase a kernel-visible or "soft"
page size to 16KB for zSeries? It's a 64 bits platform. There
will be some increase in fragmentation, but nobody measured it.
Perhaps it's not going to be severe. It may even improve paging
efficiency.

-- Pete

P.S. The patch itself is at:
http://www10.software.ibm.com/developerworks/opensource/linux390/alpha_src/linux-2.4.7-order2-3.tar.gz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/