Re: [PATCH v3 0/1] man/set_mempolicy.2,mbind.2: add MPOL_LOCAL NUMA memory policy documentation

From: Piotr Kwapulinski
Date: Wed Oct 12 2016 - 11:53:29 EST


Hi Michael,

On Wed, Oct 12, 2016 at 09:55:16AM +0200, Michael Kerrisk (man-pages) wrote:
> Hello Piotr,
>
> On 10/10/2016 06:23 PM, Piotr Kwapulinski wrote:
> > The MPOL_LOCAL mode has been implemented by
> > Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> > (commit: 479e2802d09f1e18a97262c4c6f8f17ae5884bd8).
> > Add the documentation for this mode.
>
> Thanks. I've applied this patch. I have a question below.
>
> > Signed-off-by: Piotr Kwapulinski <kwapulinski.piotr@xxxxxxxxx>
> > ---
> > This version fixes grammar
> > ---
> > man2/mbind.2 | 28 ++++++++++++++++++++++++----
> > man2/set_mempolicy.2 | 19 ++++++++++++++++++-
> > 2 files changed, 42 insertions(+), 5 deletions(-)
> >
> > diff --git a/man2/mbind.2 b/man2/mbind.2
> > index 3ea24f6..854580c 100644
> > --- a/man2/mbind.2
> > +++ b/man2/mbind.2
> > @@ -130,8 +130,9 @@ argument must specify one of
> > .BR MPOL_DEFAULT ,
> > .BR MPOL_BIND ,
> > .BR MPOL_INTERLEAVE ,
> > +.BR MPOL_PREFERRED ,
> > or
> > -.BR MPOL_PREFERRED .
> > +.BR MPOL_LOCAL .
> > All policy modes except
> > .B MPOL_DEFAULT
> > require the caller to specify via the
> > @@ -258,9 +259,26 @@ and
> > .I maxnode
> > arguments specify the empty set, then the memory is allocated on
> > the node of the CPU that triggered the allocation.
> > -This is the only way to specify "local allocation" for a
> > -range of memory via
> > -.BR mbind ().
> > +
> > +.B MPOL_LOCAL
> > +specifies the "local allocation", the memory is allocated on
> > +the node of the CPU that triggered the allocation, "local node".
> > +The
> > +.I nodemask
> > +and
> > +.I maxnode
> > +arguments must specify the empty set. If the "local node" is low
> > +on free memory the kernel will try to allocate memory from other
> > +nodes. The kernel will allocate memory from the "local node"
> > +whenever memory for this node is available. If the "local node"
> > +is not allowed by the process's current cpuset context the kernel
> > +will try to allocate memory from other nodes. The kernel will
> > +allocate memory from the "local node" whenever it becomes allowed
> > +by the process's current cpuset context. In contrast
> > +.B MPOL_DEFAULT
> > +reverts to the policy of the process which may have been set with
> > +.BR set_mempolicy (2).
> > +It may not be the "local allocation".
>
> What is the sense of "may not be" here? (And repeated below).
> Is the meaning "this could be something other than"?
> Presumably the answer is yes, in which case I'll clarify
> the wording there. Let me know.
>
> Cheers,
>
> Michael
>

That's right. This could be "local allocation" or any other memory policy.

Thanks
Piotr Kwapulinski

> >
> > If
> > .B MPOL_MF_STRICT
> > @@ -440,6 +458,8 @@ To select explicit "local allocation" for a memory range,
> > specify a
> > .I mode
> > of
> > +.B MPOL_LOCAL
> > +or
> > .B MPOL_PREFERRED
> > with an empty set of nodes.
> > This method will work for
> > diff --git a/man2/set_mempolicy.2 b/man2/set_mempolicy.2
> > index 1f02037..22b0f7c 100644
> > --- a/man2/set_mempolicy.2
> > +++ b/man2/set_mempolicy.2
> > @@ -79,8 +79,9 @@ argument must specify one of
> > .BR MPOL_DEFAULT ,
> > .BR MPOL_BIND ,
> > .BR MPOL_INTERLEAVE ,
> > +.BR MPOL_PREFERRED ,
> > or
> > -.BR MPOL_PREFERRED .
> > +.BR MPOL_LOCAL .
> > All modes except
> > .B MPOL_DEFAULT
> > require the caller to specify via the
> > @@ -211,6 +212,22 @@ arguments specify the empty set, then the policy
> > specifies "local allocation"
> > (like the system default policy discussed above).
> >
> > +.B MPOL_LOCAL
> > +specifies the "local allocation", the memory is allocated on
> > +the node of the CPU that triggered the allocation, "local node".
> > +The
> > +.I nodemask
> > +and
> > +.I maxnode
> > +arguments must specify the empty set. If the "local node" is low
> > +on free memory the kernel will try to allocate memory from other
> > +nodes. The kernel will allocate memory from the "local node"
> > +whenever memory for this node is available. If the "local node"
> > +is not allowed by the process's current cpuset context the kernel
> > +will try to allocate memory from other nodes. The kernel will
> > +allocate memory from the "local node" whenever it becomes allowed
> > +by the process's current cpuset context.
> > +
> > The thread memory policy is preserved across an
> > .BR execve (2),
> > and is inherited by child threads created using
> >
>
>
> --
> Michael Kerrisk
> Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
> Linux/UNIX System Programming Training: http://man7.org/training/
--
Piotr Kwapulinski