Messages in this thread | | | Date | Wed, 2 Jul 2014 16:30:05 -0700 (PDT) | From | David Rientjes <> | Subject | Re: [patch] x86, perf: avoid spamming kernel log for bts buffer failure |
| |
On Wed, 2 Jul 2014, Peter Zijlstra wrote:
> > David and I discussed this. He can probably add more background > > info, if needed. > > It would still be good to see why compaction etc is failing. >
"Why compaction is failing" has been the story of my life for the past few weeks, unfortunately. One person ran into this and here is the breakdown at the time of the page allocation failure:
Node 0 DMA32: 12478*4kB 7595*8kB 2087*16kB 26*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 144896kB Node 0 Normal: 55037*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 1*2048kB 0*4096kB = 222196kB Node 1 Normal: 165860*4kB 18*8kB 1*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 663600kB
So we really don't have any order-4 or higher memory and if compaction and reclaim fails, then the allocation failure is printed every time. This is what the patch is trying to address and we can't guarantee order-4 is always allocatable even with GFP_KERNEL. This allocation is just outside the PAGE_ALLOC_COSTLY_ORDER == 3 threshold that would have oom killed something and retried; the oom killer is deferred for this case because there's no guarantee killing a process would have resulted in order-4 memory being available (and nobody wants killing when they are 902MB above the per-zone min watermarks like this poor guy).
| |