On Fri 10-03-17 13:00:37, Reza Arbab wrote:
On Fri, Mar 10, 2017 at 04:53:33PM +0100, Michal Hocko wrote:
quoted
OK, so while I was playing with this setup some more I probably got why
this is done this way. All new memblocks are added to the zone Normal
where they are accounted as spanned but not present.
It's not always zone Normal. See zone_for_memory(). This leads to a
workaround for having to do online_movable in descending block order.
Instead of this:
1. probe block 34, probe block 33, probe block 32, ...
2. online_movable 34, online_movable 33, online_movable 32, ...
you can online_movable the first block before adding the rest:
I do I enforce that behavior when the probe happens automagically?
1. probe block 32, online_movable 32
2. probe block 33, probe block 34, ...
- zone_for_memory() will cause these to start Movable
3. online 33, online 34, ...
- they're already in Movable, so online_movable is equivalentr
I agree with your general sentiment that this stuff is very nonintuitive.
My criterion for nonintuitive is probably different because I would call
this _completely_unusable_. Sorry for being so loud about this but the
more I look into this area the more WTF code I see. This has seen close
to zero review and seems to be building up more single usecase code on
top of previous. We need to change this, seriously!
--
Michal Hocko
SUSE Labs
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>