Thank you Alejandro. Have a good one. -Matt C On Fri, Feb 21, 2025 at 12:11 PM Alejandro Colomar <alx@xxxxxxxxxx> wrote: > > 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/>