On 2015/06/11 5:40, Luck, Tony wrote:
I guess, mirrored memory should be allocated if !__GFP_HIGHMEM or !__GFP_MOVABLE
HIGHMEM shouldn't matter - partial memory mirror only makes any sense on X86_64
systems ... 32-bit kernels
don't even boot on systems with 64GB, and the minimum rational configuration
for a machine that supports
mirror is 128GB (4 cpu sockets * 2 memory controller per socket * 4 channels
per controller * 4GB DIMM ...
leaving any channels empty likely leaves you short of memory bandwidth for
these high core count processors).
MOVABLE is mostly the opposite of MIRROR - we never want to fill a kernel
allocation from a MOVABLE page. I
want all kernel allocations to be from MIRROR.
So, there are 3 ideas.
(1) kernel only from MIRROR / user only from MOVABLE (Tony)
(2) kernel only from MIRROR / user from MOVABLE + MIRROR(ASAP) (AKPM
suggested)
This makes use of the fact MOVABLE memory is reclaimable but Tony pointed
out
the memory reclaim can be critical for GFP_ATOMIC.
(3) kernel only from MIRROR / user from MOVABLE, special user from MIRROR
(Xishi)
2 Implementation ideas.
- creating ZONE
- creating new alloation attribute
I don't convince whether we need some new structure in mm. Isn't it good to use
ZONE_MOVABLE for not-mirrored memory ?
Then, disable fallback from ZONE_MOVABLE -> ZONE_NORMAL for (1) and (3)
Thanks,
-Kame
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/