[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.00.1205151425260.1656@chino.kir.corp.google.com>
Date: Tue, 15 May 2012 14:37:16 -0700 (PDT)
From: David Rientjes <rientjes@...gle.com>
To: Peter Zijlstra <a.p.zijlstra@...llo.nl>
cc: Nishanth Aravamudan <nacc@...ux.vnet.ibm.com>,
"Srivatsa S. Bhat" <srivatsa.bhat@...ux.vnet.ibm.com>,
mingo@...nel.org, pjt@...gle.com, paul@...lmenage.org,
akpm@...ux-foundation.org, rjw@...k.pl, nacc@...ibm.com,
paulmck@...ux.vnet.ibm.com, tglx@...utronix.de,
seto.hidetoshi@...fujitsu.com, tj@...nel.org, mschmidt@...hat.com,
berrange@...hat.com, nikunj@...ux.vnet.ibm.com,
vatsa@...ux.vnet.ibm.com, liuj97@...il.com,
linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org
Subject: Re: [PATCH v3 5/5] cpusets, suspend: Save and restore cpusets during
suspend/resume
On Tue, 15 May 2012, Peter Zijlstra wrote:
> > Not sure what you're disagreeing with, it only happens with
> > MPOL_F_STATIC_NODES or MPOL_F_RELATIVE_NODES and I've clearly defined the
> > behavior in the man page. I personally never had a use-case for
> > MPOL_F_RELATIVE_NODES but Paul Jackson asked that it be added for SGI when
> > we added mempolicy mode flags.
>
> So what you're saying is that:
>
> task t: set_mempolicy(,mask=2-3);
>
> add t to cpuset A
>
> A.mems = 0-1
> A.mems = 0-n
>
> At which point t will again have 2-3, right?
>
Depends on the mode which was omitted from your set_mempolicy().
When A.mems becomes 0-1, the task obviously also has a mempolicy of 0-1;
for MPOL_F_STATIC_NODES, the resulting nodemask of (0-1) & (2-3) is empty
so it falls back to the cpuset placement as required by the documentation,
and without MPOL_F_STATIC_NODES the nodemask is remapped onto the new set
which is also 0-1.
When A-mems is changed to 0-n, the task's mempolicy is either
- 2-3 again (in n >= 3) with MPOL_F_STATIC_NODES, the flag that means we
really want these specific nodes when allowed, or
- 0-1 still without MPOL_F_STATIC_NODES.
> Also, what does it mean to silently return to 2-3 after you've broken
> that promise by forcing it to 0-1 using cpusets?
>
This obviously isn't the typical usecase and I doubt moving tasks to a
cpuset with a disjoint set of allowed nodes ever happens in practice since
cpusets is for NUMA optimizations and its being inappropriately moved
around. MPOL_F_STATIC_NODES is typically used when mems are removed from
a cpuset and then subsequently added later. Doing
set_mempolicy(MPOL_INTERLEAVE, 0-3), attaching to cpuset.mems = 0-1, then
cpuset.mems = 0-3, would result in an interleave over 0-1 before
MPOL_F_STATIC_NODES was introduced. With the flag, however, the mems
becomes 0-3 once again.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists