Messages in this thread | | | Date | Mon, 15 Jun 2015 17:47:27 +0900 | From | Kamezawa Hiroyuki <> | Subject | Re: [RFC PATCH 10/12] mm: add the buddy system interface |
| |
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
| |