On Wed 15-03-17 18:50:32, Avi Kivity wrote: > A user is trying to allocate 1TB of anonymous memory in parallel on 48 cores > (4 NUMA nodes). The kernel ends up spinning in isolate_freepages_block().
Which kernel version is that? What is the THP defrag mode (/sys/kernel/mm/transparent_hugepage/defrag)? > I thought to help it along by using MAP_POPULATE, but then my MADV_HUGEPAGE > won't be seen until after mmap() completes, with pages already populated. > Are MAP_POPULATE and MADV_HUGEPAGE mutually exclusive? Why do you need MADV_HUGEPAGE? > Is my only option to serialize those memory allocations, and fault in those > pages manually? Or perhaps use mlock()? I am still not 100% sure I see what you are trying to achieve, though. So you do not want all those processes to contend inside the compaction while still allocate as many huge pages as possible? -- Michal Hocko SUSE Labs