Messages in this thread | | | Date | Tue, 15 May 2012 14:37:16 -0700 (PDT) | From | David Rientjes <> | 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.
| |