lkml.org 
[lkml]   [2008]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 4/4 v2] mempolicy: update NUMA memory policy documentation
    David Rientjes wrote:
    > Updates Documentation/vm/numa_memory_policy.txt and
    > Documentation/filesystems/tmpfs.txt to describe optional mempolicy mode
    > flags.
    >
    > Cc: Paul Jackson <pj@sgi.com>
    > Cc: Christoph Lameter <clameter@sgi.com>
    > Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
    > Cc: Andi Kleen <ak@suse.de>
    > Cc: Randy Dunlap <randy.dunlap@oracle.com>
    > Signed-off-by: David Rientjes <rientjes@google.com>

    Acked-by: Randy Dunlap <randy.dunlap@oracle.com>

    Thanks.

    > ---
    > Includes fixes to problems identified by Randy Dunlap.
    >
    > Documentation/filesystems/tmpfs.txt | 11 ++++++++
    > Documentation/vm/numa_memory_policy.txt | 41 +++++++++++++++++++++++++++----
    > 2 files changed, 47 insertions(+), 5 deletions(-)
    >
    > diff --git a/Documentation/filesystems/tmpfs.txt b/Documentation/filesystems/tmpfs.txt
    > --- a/Documentation/filesystems/tmpfs.txt
    > +++ b/Documentation/filesystems/tmpfs.txt
    > @@ -92,6 +92,17 @@ NodeList format is a comma-separated list of decimal numbers and ranges,
    > a range being two hyphen-separated decimal numbers, the smallest and
    > largest node numbers in the range. For example, mpol=bind:0-3,5,7,9-15
    >
    > +It is possible to specify a static NodeList by appending '=static' to
    > +the memory policy mode in the mpol= argument. This will require that
    > +tasks or VMA's restricted to a subset of allowed nodes are only allowed
    > +to effect the memory policy over those nodes. No remapping of the
    > +NodeList when the policy is rebound, which is the default behavior, is
    > +allowed when '=static' is specified. For example:
    > +
    > +mpol=bind=static:NodeList will only allocate from each node in
    > + the NodeList without remapping the
    > + NodeList if the policy is rebound
    > +
    > Note that trying to mount a tmpfs with an mpol option will fail if the
    > running kernel does not support NUMA; and will fail if its nodelist
    > specifies a node which is not online. If your system relies on that
    > diff --git a/Documentation/vm/numa_memory_policy.txt b/Documentation/vm/numa_memory_policy.txt
    > --- a/Documentation/vm/numa_memory_policy.txt
    > +++ b/Documentation/vm/numa_memory_policy.txt
    > @@ -135,9 +135,11 @@ most general to most specific:
    >
    > Components of Memory Policies
    >
    > - A Linux memory policy is a tuple consisting of a "mode" and an optional set
    > - of nodes. The mode determine the behavior of the policy, while the
    > - optional set of nodes can be viewed as the arguments to the behavior.
    > + A Linux memory policy consists of a "mode", optional mode flags, and an
    > + optional set of nodes. The mode determines the behavior of the policy,
    > + the optional mode flags determine the behavior of the mode, and the
    > + optional set of nodes can be viewed as the arguments to the policy
    > + behavior.
    >
    > Internally, memory policies are implemented by a reference counted
    > structure, struct mempolicy. Details of this structure will be discussed
    > @@ -145,7 +147,12 @@ Components of Memory Policies
    >
    > Note: in some functions AND in the struct mempolicy itself, the mode
    > is called "policy". However, to avoid confusion with the policy tuple,
    > - this document will continue to use the term "mode".
    > + this document will continue to use the term "mode". Since the mode and
    > + optional mode flags are stored in the same struct mempolicy member
    > + (specifically, pol->policy), you must use mpol_mode(pol->policy) to
    > + access only the mode and mpol_flags(pol->policy) to access only the
    > + flags. Any function with a formal of type enum mempolicy_mode only
    > + refers to the mode.
    >
    > Linux memory policy supports the following 4 behavioral modes:
    >
    > @@ -231,6 +238,28 @@ Components of Memory Policies
    > the temporary interleaved system default policy works in this
    > mode.
    >
    > + Linux memory policy supports the following optional mode flag:
    > +
    > + MPOL_F_STATIC_NODES: This flag specifies that the nodemask passed by
    > + the user should not be remapped if the task or VMA's set of accessible
    > + nodes changes after the memory policy has been defined.
    > +
    > + Without this flag, anytime a mempolicy is rebound because of a
    > + change in the set of accessible nodes, the node (Preferred) or
    > + nodemask (Bind, Interleave) is remapped to the new set of
    > + accessible nodes. This may result in nodes being used that were
    > + previously undesired. With this flag, the policy is either
    > + effected over the user's specified nodemask or the Default
    > + behavior is used.
    > +
    > + For example, consider a task that is attached to a cpuset with
    > + mems 1-3 that sets an Interleave policy over the same set. If
    > + the cpuset's mems change to 3-5, the Interleave will now occur
    > + over nodes 3, 4, and 5. With this flag, however, since only
    > + node 3 is accessible from the user's nodemask, the "interleave"
    > + only occurs over that node. If no nodes from the user's
    > + nodemask are now accessible, the Default behavior is used.
    > +
    > MEMORY POLICY APIs
    >
    > Linux supports 3 system calls for controlling memory policy. These APIS
    > @@ -251,7 +280,9 @@ Set [Task] Memory Policy:
    > Set's the calling task's "task/process memory policy" to mode
    > specified by the 'mode' argument and the set of nodes defined
    > by 'nmask'. 'nmask' points to a bit mask of node ids containing
    > - at least 'maxnode' ids.
    > + at least 'maxnode' ids. Optional mode flags may be passed by
    > + combining the 'mode' argument with the flag (for example:
    > + MPOL_INTERLEAVE | MPOL_F_STATIC_NODES).
    >
    > See the set_mempolicy(2) man page for more details
    >


    --
    ~Randy


    \
     
     \ /
      Last update: 2008-02-11 21:19    [W:0.030 / U:31.632 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site