Re: [PATCH -v2 0/9] mm: make movable onlining suck less
From: Igor Mammedov
Date: Tue Apr 11 2017 - 04:05:35 EST
On Mon, 10 Apr 2017 16:56:39 +0200
Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> On Mon 10-04-17 16:27:49, Igor Mammedov wrote:
> [...]
> > Hi Michal,
> >
> > I've given series some dumb testing, see below for unexpected changes I've noticed.
> >
> > Using the same CLI as above plus hotpluggable dimms present at startup
> > (it still uses hotplug path as dimms aren't reported in e820)
> >
> > -object memory-backend-ram,id=mem1,size=256M -object memory-backend-ram,id=mem0,size=256M \
> > -device pc-dimm,id=dimm1,memdev=mem1,slot=1,node=0 -device pc-dimm,id=dimm0,memdev=mem0,slot=0,node=0
> >
> > so dimm1 => memory3[23] and dimm0 => memory3[45]
> >
> > #issue1:
> > unable to online memblock as NORMAL adjacent to onlined MOVABLE
> >
> > 1: after boot
> > memory32:offline removable: 0 zones: Normal Movable
> > memory33:offline removable: 0 zones: Normal Movable
> > memory34:offline removable: 0 zones: Normal Movable
> > memory35:offline removable: 0 zones: Normal Movable
> >
> > 2: online as movable 1st dimm
> >
> > #echo online_movable > memory32/state
> > #echo online_movable > memory33/state
> >
> > everything is as expected:
> > memory32:online removable: 1 zones: Movable
> > memory33:online removable: 1 zones: Movable
> > memory34:offline removable: 0 zones: Movable
> > memory35:offline removable: 0 zones: Movable
> >
> > 3: try to offline memory32 and online as NORMAL
> >
> > #echo offline > memory32/state
> > memory32:offline removable: 1 zones: Normal Movable
> > memory33:online removable: 1 zones: Movable
> > memory34:offline removable: 0 zones: Movable
> > memory35:offline removable: 0 zones: Movable
>
> OK, this is not expected. We are not shifting zones anymore so the range
> which was online_movable will not become available to the zone Normal.
> So this must be something broken down the show_valid_zones path. I will
> investigate.
>
> >
> > #echo online_kernel > memory32/state
> > write error: Invalid argument
> > // that's not what's expected
>
> this is proper behavior with the current implementation. Does anything
> depend on the zone reusing?
if we didn't have zone imbalance issue in design,
the it wouldn't matter but as it stands it's not
minore issue.
Consider following,
one hotplugs some memory and onlines it as movable,
then one needs to hotplug some more but to do so
one one needs more memory from zone NORMAL and to keep
zone balance some memory in MOVABLE should be reonlined
as NORMAL