Hi Matthew, On Thu, Feb 20, 2025 at 04:52:32PM -0600, Matthew Cassell wrote: > Browsing a header file in the kernel source and saw the memory policy > enum used for mbind() and set_mempolicy() using an entry that I didn't > recognize. I man 2'd both system calls and didn't see an entry for > MPOL_PREFERRED_MANY. The commit on the enum entry: > > linux.git b27abaccf8e8 (2021-09-02; "mm/mempolicy: add > MPOL_PREFERRED_MANY for multiple preferred nodes") > > The commit message gives the rationale as to why the > MPOL_PREFERRED_MANY mode would be beneficial. Giving the ability to set > the memory policy to target different tiers of memory over various > NUMA nodes. > > v0 -> v1 > - changed text width from 80 to 72 characters > - added Cc tag for commit author > - improved source readability with semantic newlines > - changed mbind() to refer to set_mempolicy() to avoid unnecessary > duplication > > Cc: "Dave Hansen" <dave.hansen@xxxxxxxxxxxxxxx> > Signed-off-by: Matthew Cassell <mcassell411@xxxxxxxxx> Thanks! I've applied the patch, and amended it with some minor tweaks that the CI reminded me (see comments below). Here's the final path applied: <https://www.alejandro-colomar.es/src/alx/linux/man-pages/man-pages.git/commit/?h=contrib&id=fe7e094e78139a4ac5ee31b2321b77041c725794> > --- > man/man2/mbind.2 | 6 ++++++ > man/man2/set_mempolicy.2 | 14 ++++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/man/man2/mbind.2 b/man/man2/mbind.2 > index fd1aca4ad..a060e1401 100644 > --- a/man/man2/mbind.2 > +++ b/man/man2/mbind.2 > @@ -107,6 +107,7 @@ argument must specify one of > .BR MPOL_INTERLEAVE , > .BR MPOL_WEIGHTED_INTERLEAVE , > .BR MPOL_PREFERRED , > +.BR MPOL_PREFERRED_MANY , > or > .B MPOL_LOCAL > (which are described in detail below). > @@ -277,6 +278,11 @@ and > arguments specify the empty set, then the memory is allocated on > the node of the CPU that triggered the allocation. > .TP > +.BR MPOL_PREFERRED_MANY " (since Linux 5.15)" > +.\" commit b27abaccf8e8b012f126da0c2a1ab32723ec8b9f > +Specifies a set of nodes for allocation; see > +.BR set_mempolicy(2) You missed a space before the (2). > +.TP > .BR MPOL_LOCAL " (since Linux 3.8)" > .\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 > .\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f > diff --git a/man/man2/set_mempolicy.2 b/man/man2/set_mempolicy.2 > index 2d0b1da19..32c360f22 100644 > --- a/man/man2/set_mempolicy.2 > +++ b/man/man2/set_mempolicy.2 > @@ -65,6 +65,7 @@ argument must specify one of > .BR MPOL_INTERLEAVE , > .BR MPOL_WEIGHTED_INTERLEAVE , > .BR MPOL_PREFERRED , > +.BR MPOL_PREFERRED_MANY , > or > .B MPOL_LOCAL > (which are described in detail below). > @@ -234,6 +235,19 @@ arguments specify the empty set, then the policy > specifies "local allocation" > (like the system default policy discussed above). > .TP > +.BR MPOL_PREFERRED_MANY " (since Linux 5.15)" > +.\" commit b27abaccf8e8b012f126da0c2a1ab32723ec8b9f > +This mode specifies a preference for nodes > +from which the kernel will try to allocate from. > +This differs from > +.BR MPOL_PREFERRED This should be s/BR/B/ Have a lovely night! Alex > +in that it accepts a set of nodes > +versus a single node. > +This policy is intended to benefit page allocations > +where specific memory types > +(i.e. non-volatile, high-bandwidth, or accelerator memory) > +are of greater importance than node location. > +.TP > .BR MPOL_LOCAL " (since Linux 3.8)" > .\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 > .\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f > -- > 2.39.5 (Apple Git-154) > > -- <https://www.alejandro-colomar.es/>
Attachment:
signature.asc
Description: PGP signature