Re: oom-killer why ?

Larry Woodman
2008-08-26T10:45:59Z

On Mon, 2008-08-25 at 19:26 +0200, Marco Nietz wrote:
> It's should be possible to reproduce the oom, but it's a Production Server.

> [<c014290b>] out_of_memory+0x25/0x13a
> [<c0143d74>] __alloc_pages+0x1f5/0x275
> [<c014a439>] __pte_alloc+0x11/0x9e
> [<c014a576>] __handle_mm_fault+0xb0/0xa1f

> pagetables:152485

> Normal free:3664kB min:3756kB low:4692kB high:5632kB active:280kB
> inactive:244kB present:901120kB pages_scanned:593 all_unreclaimable? yes

If it is allocating lowmem for ptepages CONFIG_HIGHPTE is not set so it
exhausts the Normal zone with wired pte pages and eventually OOM kills.

-----------------------------------------------------------------------
pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address)
{
struct page *pte;

#ifdef CONFIG_HIGHPTE
pte = alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT|
__GFP_ZERO, 0);
#else
pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0);
#endif
if (pte)
pgtable_page_ctor(pte);
return pte;
}
-----------------------------------------------------------------------