[RFC] can we use vmalloc to alloc thread stack if compaction failed

From: Xishi Qiu
Date: Thu Jul 28 2016 - 03:13:18 EST


Usually THREAD_SIZE_ORDER is 2, it means we need to alloc 16kb continuous
physical memory during fork a new process.

If the system's memory is very small, especially the smart phone, maybe there
is only 1G memory. So the free memory is very small and compaction is not
always success in slowpath(__alloc_pages_slowpath), then alloc thread stack
may be failed for memory fragment.

Can we use vmalloc to alloc thread stack if compaction failed in slowpath?
e.g. Use vmalloc as a fallback if alloc_page/kamlloc failed.

I think the performance may be a little regression, and any other problems?

Thanks,
Xishi Qiu