Skip to contentSkip to conversation

set/get_mempolicy.2: policy is per thread, not per process

PATCH In review Brice Goglin 3 participants 6 messages Apr 30, 2015 – May 6, 2015 Memory management

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 set/get_mempolicy.2: policy is per thread, not per process

Hello,

set/get_mempolicy manpages say that the memory allocation policy is per process while reading the code and testing shows that it's actually per thread.
Here's a quick fix, which may need to be improved to better explain that we're allocating in the context of a thread within a process address space.

Brice

set/get_mempolicy.2: policy is per thread, not per process

man2/get_mempolicy.2 +11 -11
index a17c0f3..c0e9639 100644
@@ -26,7 +26,7 @@
 .\"
 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
 .SH NAME
-get_mempolicy \- retrieve NUMA memory policy for a process
+get_mempolicy \- retrieve NUMA memory policy for a thread
 .SH SYNOPSIS
 .B "#include <numaif.h>"
 .nf
@@ -39,19 +39,19 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR get_mempolicy ()
-retrieves the NUMA policy of the calling process or of a memory address,
+retrieves the NUMA policy of the calling thread or of a memory address,
 depending on the setting of
 .IR flags .
 
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
 If
 .I flags
 is specified as 0,
-then information about the calling process's default policy
+then information about the calling thread's default policy
 (as set by
 .BR set_mempolicy (2))
 is returned.
@@ -59,7 +59,7 @@ The policy returned
 .RI [ mode
 and
 .IR nodemask ]
-may be used to restore the process's policy to its state at
+may be used to restore the thread's policy to its state at
 the time of the call to
 .BR get_mempolicy ()
 using
@@ -72,7 +72,7 @@ specifies
 (available since Linux 2.6.24), the
 .I mode
 argument is ignored and the set of nodes [memories] that the
-process is allowed to specify in subsequent calls to
+thread is allowed to specify in subsequent calls to
 .BR mbind (2)
 or
 .BR set_mempolicy (2)
@@ -94,7 +94,7 @@ specifies
 then information is returned about the policy governing the memory
 address given in
 .IR addr .
-This policy may be different from the process's default policy if
+This policy may be different from the thread's default policy if
 .BR mbind (2)
 or one of the helper functions described in
 .BR numa (3)
@@ -135,7 +135,7 @@ is allocated into the location pointed to by
 .IR mode .
 If no page has yet been allocated for the specified address,
 .BR get_mempolicy ()
-will allocate a page as if the process had performed a read
+will allocate a page as if the thread had performed a read
 [load] access to that address, and return the ID of the node
 where that page was allocated.
 
@@ -145,7 +145,7 @@ specifies
 .BR MPOL_F_NODE ,
 but not
 .BR MPOL_F_ADDR ,
-and the process's current policy is
+and the thread's current policy is
 .BR MPOL_INTERLEAVE ,
 then
 .BR get_mempolicy ()
@@ -153,7 +153,7 @@ will return in the location pointed to by a non-NULL
 .I mode
 argument,
 the node ID of the next node that will be used for
-interleaving of internal kernel pages allocated on behalf of the process.
+interleaving of internal kernel pages allocated on behalf of the thread.
 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
 These allocations include pages for memory-mapped files in
 process memory ranges mapped using the
@@ -214,7 +214,7 @@ specified
 .B MPOL_F_NODE
 but not
 .B MPOL_F_ADDR
-and the current process policy is not
+and the current thread policy is not
 .BR MPOL_INTERLEAVE .
 Or,
 .I flags
man2/set_mempolicy.2 +14 -14
index 9d7d1de..f5169da 100644
@@ -26,7 +26,7 @@
 .\"
 .TH SET_MEMPOLICY 2 2014-05-28 Linux "Linux Programmer's Manual"
 .SH NAME
-set_mempolicy \- set default NUMA memory policy for a process and its children
+set_mempolicy \- set default NUMA memory policy for a thread and its children
 .SH SYNOPSIS
 .nf
 .B "#include <numaif.h>"
@@ -38,7 +38,7 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR set_mempolicy ()
-sets the NUMA memory policy of the calling process,
+sets the NUMA memory policy of the calling thread,
 which consists of a policy mode and zero or more nodes,
 to the values specified by the
 .IR mode ,
@@ -50,28 +50,28 @@ arguments.
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
-This system call defines the default policy for the process.
-The process policy governs allocation of pages in the process's
+This system call defines the default policy for the thread.
+The thread policy governs allocation of pages in the process's
 address space outside of memory ranges
 controlled by a more specific policy set by
 .BR mbind (2).
-The process default policy also controls allocation of any pages for
+The thread default policy also controls allocation of any pages for
 memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_PRIVATE
-flag and that are only read [loaded] from by the process
+flag and that are only read [loaded] from by the thread
 and of memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_SHARED
 flag, regardless of the access type.
 The policy is applied only when a new page is allocated
-for the process.
+for the thread.
 For anonymous memory this is when the page is first
-touched by the application.
+touched by the thread.
 
 The
 .I mode
@@ -154,7 +154,7 @@ cpuset context includes one or more of the nodes specified by
 
 The
 .B MPOL_DEFAULT
-mode specifies that any nondefault process memory policy be removed,
+mode specifies that any nondefault thread memory policy be removed,
 so that the memory policy "falls back" to the system default policy.
 The system default policy is "local allocation"\(emthat is,
 allocate memory on the node of the CPU that triggered the allocation.
@@ -211,9 +211,9 @@ arguments specify the empty set, then the policy
 specifies "local allocation"
 (like the system default policy discussed above).
 
-The process memory policy is preserved across an
+The thread memory policy is preserved across an
 .BR execve (2),
-and is inherited by child processes created using
+and is inherited by child threads created using
 .BR fork (2)
 or
 .BR clone (2).
@@ -279,9 +279,9 @@ system call was added to the Linux kernel in version 2.6.7.
 .SH CONFORMING TO
 This system call is Linux-specific.
 .SH NOTES
-Process policy is not remembered if the page is swapped out.
+Memory policy is not remembered if the page is swapped out.
 When such a page is paged back in, it will use the policy of
-the process or memory range that is in effect at the time the
+the thread or memory range that is in effect at the time the
 page is allocated.
 
 For information on library support, see

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#1 lore raw

Hi Andi,

Brice's patch seems broadly okay to me, but you originally wrote the pages, so I'd be happy if you could comment. Could you take a look please?

Cheers,

Michael

Quoted 211 lines · Brice Goglin

Hello,

set/get_mempolicy manpages say that the memory allocation policy is per process while reading the code and testing shows that it's actually per thread.
Here's a quick fix, which may need to be improved to better explain that we're allocating in the context of a thread within a process address space.

Brice

set/get_mempolicy.2: policy is per thread, not per process

man2/get_mempolicy.2 +11 -11
index a17c0f3..c0e9639 100644
@@ -26,7 +26,7 @@
 .\"
 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
 .SH NAME
-get_mempolicy \- retrieve NUMA memory policy for a process
+get_mempolicy \- retrieve NUMA memory policy for a thread
 .SH SYNOPSIS
 .B "#include <numaif.h>"
 .nf
@@ -39,19 +39,19 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR get_mempolicy ()
-retrieves the NUMA policy of the calling process or of a memory address,
+retrieves the NUMA policy of the calling thread or of a memory address,
 depending on the setting of
 .IR flags .
 
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
 If
 .I flags
 is specified as 0,
-then information about the calling process's default policy
+then information about the calling thread's default policy
 (as set by
 .BR set_mempolicy (2))
 is returned.
@@ -59,7 +59,7 @@ The policy returned
 .RI [ mode
 and
 .IR nodemask ]
-may be used to restore the process's policy to its state at
+may be used to restore the thread's policy to its state at
 the time of the call to
 .BR get_mempolicy ()
 using
@@ -72,7 +72,7 @@ specifies
 (available since Linux 2.6.24), the
 .I mode
 argument is ignored and the set of nodes [memories] that the
-process is allowed to specify in subsequent calls to
+thread is allowed to specify in subsequent calls to
 .BR mbind (2)
 or
 .BR set_mempolicy (2)
@@ -94,7 +94,7 @@ specifies
 then information is returned about the policy governing the memory
 address given in
 .IR addr .
-This policy may be different from the process's default policy if
+This policy may be different from the thread's default policy if
 .BR mbind (2)
 or one of the helper functions described in
 .BR numa (3)
@@ -135,7 +135,7 @@ is allocated into the location pointed to by
 .IR mode .
 If no page has yet been allocated for the specified address,
 .BR get_mempolicy ()
-will allocate a page as if the process had performed a read
+will allocate a page as if the thread had performed a read
 [load] access to that address, and return the ID of the node
 where that page was allocated.
 
@@ -145,7 +145,7 @@ specifies
 .BR MPOL_F_NODE ,
 but not
 .BR MPOL_F_ADDR ,
-and the process's current policy is
+and the thread's current policy is
 .BR MPOL_INTERLEAVE ,
 then
 .BR get_mempolicy ()
@@ -153,7 +153,7 @@ will return in the location pointed to by a non-NULL
 .I mode
 argument,
 the node ID of the next node that will be used for
-interleaving of internal kernel pages allocated on behalf of the process.
+interleaving of internal kernel pages allocated on behalf of the thread.
 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
 These allocations include pages for memory-mapped files in
 process memory ranges mapped using the
@@ -214,7 +214,7 @@ specified
 .B MPOL_F_NODE
 but not
 .B MPOL_F_ADDR
-and the current process policy is not
+and the current thread policy is not
 .BR MPOL_INTERLEAVE .
 Or,
 .I flags
man2/set_mempolicy.2 +14 -14
index 9d7d1de..f5169da 100644
@@ -26,7 +26,7 @@
 .\"
 .TH SET_MEMPOLICY 2 2014-05-28 Linux "Linux Programmer's Manual"
 .SH NAME
-set_mempolicy \- set default NUMA memory policy for a process and its children
+set_mempolicy \- set default NUMA memory policy for a thread and its children
 .SH SYNOPSIS
 .nf
 .B "#include <numaif.h>"
@@ -38,7 +38,7 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR set_mempolicy ()
-sets the NUMA memory policy of the calling process,
+sets the NUMA memory policy of the calling thread,
 which consists of a policy mode and zero or more nodes,
 to the values specified by the
 .IR mode ,
@@ -50,28 +50,28 @@ arguments.
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
-This system call defines the default policy for the process.
-The process policy governs allocation of pages in the process's
+This system call defines the default policy for the thread.
+The thread policy governs allocation of pages in the process's
 address space outside of memory ranges
 controlled by a more specific policy set by
 .BR mbind (2).
-The process default policy also controls allocation of any pages for
+The thread default policy also controls allocation of any pages for
 memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_PRIVATE
-flag and that are only read [loaded] from by the process
+flag and that are only read [loaded] from by the thread
 and of memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_SHARED
 flag, regardless of the access type.
 The policy is applied only when a new page is allocated
-for the process.
+for the thread.
 For anonymous memory this is when the page is first
-touched by the application.
+touched by the thread.
 
 The
 .I mode
@@ -154,7 +154,7 @@ cpuset context includes one or more of the nodes specified by
 
 The
 .B MPOL_DEFAULT
-mode specifies that any nondefault process memory policy be removed,
+mode specifies that any nondefault thread memory policy be removed,
 so that the memory policy "falls back" to the system default policy.
 The system default policy is "local allocation"\(emthat is,
 allocate memory on the node of the CPU that triggered the allocation.
@@ -211,9 +211,9 @@ arguments specify the empty set, then the policy
 specifies "local allocation"
 (like the system default policy discussed above).
 
-The process memory policy is preserved across an
+The thread memory policy is preserved across an
 .BR execve (2),
-and is inherited by child processes created using
+and is inherited by child threads created using
 .BR fork (2)
 or
 .BR clone (2).
@@ -279,9 +279,9 @@ system call was added to the Linux kernel in version 2.6.7.
 .SH CONFORMING TO
 This system call is Linux-specific.
 .SH NOTES
-Process policy is not remembered if the page is swapped out.
+Memory policy is not remembered if the page is swapped out.
 When such a page is paged back in, it will use the policy of
-the process or memory range that is in effect at the time the
+the thread or memory range that is in effect at the time the
 page is allocated.
 
 For information on library support, see
Signature · 9 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#2 lore raw
Quoted 4 lines · Michael Kerrisk (man-pages)

Hi Andi,

Brice's patch seems broadly okay to me, but you originally wrote the pages, so I'd be happy if you could comment. Could you take a look please?

Just s/process/thread/g ?

The distinction between process and thread is fuzzy in Linux of course, but i suppose it matches the user's terms better.

Fine for me.

-Andi

Quoted 225 lines

Cheers,

Michael

Quoted 211 lines · Brice Goglin

Hello,

set/get_mempolicy manpages say that the memory allocation policy is per process while reading the code and testing shows that it's actually per thread.
Here's a quick fix, which may need to be improved to better explain that we're allocating in the context of a thread within a process address space.

Brice

set/get_mempolicy.2: policy is per thread, not per process

man2/get_mempolicy.2 +11 -11
index a17c0f3..c0e9639 100644
@@ -26,7 +26,7 @@
 .\"
 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
 .SH NAME
-get_mempolicy \- retrieve NUMA memory policy for a process
+get_mempolicy \- retrieve NUMA memory policy for a thread
 .SH SYNOPSIS
 .B "#include <numaif.h>"
 .nf
@@ -39,19 +39,19 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR get_mempolicy ()
-retrieves the NUMA policy of the calling process or of a memory address,
+retrieves the NUMA policy of the calling thread or of a memory address,
 depending on the setting of
 .IR flags .
 
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
 If
 .I flags
 is specified as 0,
-then information about the calling process's default policy
+then information about the calling thread's default policy
 (as set by
 .BR set_mempolicy (2))
 is returned.
@@ -59,7 +59,7 @@ The policy returned
 .RI [ mode
 and
 .IR nodemask ]
-may be used to restore the process's policy to its state at
+may be used to restore the thread's policy to its state at
 the time of the call to
 .BR get_mempolicy ()
 using
@@ -72,7 +72,7 @@ specifies
 (available since Linux 2.6.24), the
 .I mode
 argument is ignored and the set of nodes [memories] that the
-process is allowed to specify in subsequent calls to
+thread is allowed to specify in subsequent calls to
 .BR mbind (2)
 or
 .BR set_mempolicy (2)
@@ -94,7 +94,7 @@ specifies
 then information is returned about the policy governing the memory
 address given in
 .IR addr .
-This policy may be different from the process's default policy if
+This policy may be different from the thread's default policy if
 .BR mbind (2)
 or one of the helper functions described in
 .BR numa (3)
@@ -135,7 +135,7 @@ is allocated into the location pointed to by
 .IR mode .
 If no page has yet been allocated for the specified address,
 .BR get_mempolicy ()
-will allocate a page as if the process had performed a read
+will allocate a page as if the thread had performed a read
 [load] access to that address, and return the ID of the node
 where that page was allocated.
 
@@ -145,7 +145,7 @@ specifies
 .BR MPOL_F_NODE ,
 but not
 .BR MPOL_F_ADDR ,
-and the process's current policy is
+and the thread's current policy is
 .BR MPOL_INTERLEAVE ,
 then
 .BR get_mempolicy ()
@@ -153,7 +153,7 @@ will return in the location pointed to by a non-NULL
 .I mode
 argument,
 the node ID of the next node that will be used for
-interleaving of internal kernel pages allocated on behalf of the process.
+interleaving of internal kernel pages allocated on behalf of the thread.
 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
 These allocations include pages for memory-mapped files in
 process memory ranges mapped using the
@@ -214,7 +214,7 @@ specified
 .B MPOL_F_NODE
 but not
 .B MPOL_F_ADDR
-and the current process policy is not
+and the current thread policy is not
 .BR MPOL_INTERLEAVE .
 Or,
 .I flags
man2/set_mempolicy.2 +14 -14
index 9d7d1de..f5169da 100644
@@ -26,7 +26,7 @@
 .\"
 .TH SET_MEMPOLICY 2 2014-05-28 Linux "Linux Programmer's Manual"
 .SH NAME
-set_mempolicy \- set default NUMA memory policy for a process and its children
+set_mempolicy \- set default NUMA memory policy for a thread and its children
 .SH SYNOPSIS
 .nf
 .B "#include <numaif.h>"
@@ -38,7 +38,7 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR set_mempolicy ()
-sets the NUMA memory policy of the calling process,
+sets the NUMA memory policy of the calling thread,
 which consists of a policy mode and zero or more nodes,
 to the values specified by the
 .IR mode ,
@@ -50,28 +50,28 @@ arguments.
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
-This system call defines the default policy for the process.
-The process policy governs allocation of pages in the process's
+This system call defines the default policy for the thread.
+The thread policy governs allocation of pages in the process's
 address space outside of memory ranges
 controlled by a more specific policy set by
 .BR mbind (2).
-The process default policy also controls allocation of any pages for
+The thread default policy also controls allocation of any pages for
 memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_PRIVATE
-flag and that are only read [loaded] from by the process
+flag and that are only read [loaded] from by the thread
 and of memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_SHARED
 flag, regardless of the access type.
 The policy is applied only when a new page is allocated
-for the process.
+for the thread.
 For anonymous memory this is when the page is first
-touched by the application.
+touched by the thread.
 
 The
 .I mode
@@ -154,7 +154,7 @@ cpuset context includes one or more of the nodes specified by
 
 The
 .B MPOL_DEFAULT
-mode specifies that any nondefault process memory policy be removed,
+mode specifies that any nondefault thread memory policy be removed,
 so that the memory policy "falls back" to the system default policy.
 The system default policy is "local allocation"\(emthat is,
 allocate memory on the node of the CPU that triggered the allocation.
@@ -211,9 +211,9 @@ arguments specify the empty set, then the policy
 specifies "local allocation"
 (like the system default policy discussed above).
 
-The process memory policy is preserved across an
+The thread memory policy is preserved across an
 .BR execve (2),
-and is inherited by child processes created using
+and is inherited by child threads created using
 .BR fork (2)
 or
 .BR clone (2).
@@ -279,9 +279,9 @@ system call was added to the Linux kernel in version 2.6.7.
 .SH CONFORMING TO
 This system call is Linux-specific.
 .SH NOTES
-Process policy is not remembered if the page is swapped out.
+Memory policy is not remembered if the page is swapped out.
 When such a page is paged back in, it will use the policy of
-the process or memory range that is in effect at the time the
+the thread or memory range that is in effect at the time the
 page is allocated.
 
 For information on library support, see
Signature · 3 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
Signature · 7 lines
[email protected] -- Speaking for myself only.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#3 lore raw

Hi Andi,

Quoted 7 lines · Andi Kleen
Quoted 4 lines · Michael Kerrisk (man-pages)

Hi Andi,

Brice's patch seems broadly okay to me, but you originally wrote the pages, so I'd be happy if you could comment. Could you take a look please?

Just s/process/thread/g ?

No, it doesn't seem to be quite that. Brice, can you say a little more here?

Quoted 4 lines

The distinction between process and thread is fuzzy in Linux of course, but i suppose it matches the user's terms better.

Fine for me.

Okay -- I'll await further input from Brice, and then apply.

Cheers,

Michael

Quoted 225 lines
Quoted 224 lines

Cheers,

Michael

Quoted 211 lines · Brice Goglin

Hello,

set/get_mempolicy manpages say that the memory allocation policy is per process while reading the code and testing shows that it's actually per thread.
Here's a quick fix, which may need to be improved to better explain that we're allocating in the context of a thread within a process address space.

Brice

set/get_mempolicy.2: policy is per thread, not per process

man2/get_mempolicy.2 +11 -11
index a17c0f3..c0e9639 100644
@@ -26,7 +26,7 @@
 .\"
 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
 .SH NAME
-get_mempolicy \- retrieve NUMA memory policy for a process
+get_mempolicy \- retrieve NUMA memory policy for a thread
 .SH SYNOPSIS
 .B "#include <numaif.h>"
 .nf
@@ -39,19 +39,19 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR get_mempolicy ()
-retrieves the NUMA policy of the calling process or of a memory address,
+retrieves the NUMA policy of the calling thread or of a memory address,
 depending on the setting of
 .IR flags .
 
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
 If
 .I flags
 is specified as 0,
-then information about the calling process's default policy
+then information about the calling thread's default policy
 (as set by
 .BR set_mempolicy (2))
 is returned.
@@ -59,7 +59,7 @@ The policy returned
 .RI [ mode
 and
 .IR nodemask ]
-may be used to restore the process's policy to its state at
+may be used to restore the thread's policy to its state at
 the time of the call to
 .BR get_mempolicy ()
 using
@@ -72,7 +72,7 @@ specifies
 (available since Linux 2.6.24), the
 .I mode
 argument is ignored and the set of nodes [memories] that the
-process is allowed to specify in subsequent calls to
+thread is allowed to specify in subsequent calls to
 .BR mbind (2)
 or
 .BR set_mempolicy (2)
@@ -94,7 +94,7 @@ specifies
 then information is returned about the policy governing the memory
 address given in
 .IR addr .
-This policy may be different from the process's default policy if
+This policy may be different from the thread's default policy if
 .BR mbind (2)
 or one of the helper functions described in
 .BR numa (3)
@@ -135,7 +135,7 @@ is allocated into the location pointed to by
 .IR mode .
 If no page has yet been allocated for the specified address,
 .BR get_mempolicy ()
-will allocate a page as if the process had performed a read
+will allocate a page as if the thread had performed a read
 [load] access to that address, and return the ID of the node
 where that page was allocated.
 
@@ -145,7 +145,7 @@ specifies
 .BR MPOL_F_NODE ,
 but not
 .BR MPOL_F_ADDR ,
-and the process's current policy is
+and the thread's current policy is
 .BR MPOL_INTERLEAVE ,
 then
 .BR get_mempolicy ()
@@ -153,7 +153,7 @@ will return in the location pointed to by a non-NULL
 .I mode
 argument,
 the node ID of the next node that will be used for
-interleaving of internal kernel pages allocated on behalf of the process.
+interleaving of internal kernel pages allocated on behalf of the thread.
 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
 These allocations include pages for memory-mapped files in
 process memory ranges mapped using the
@@ -214,7 +214,7 @@ specified
 .B MPOL_F_NODE
 but not
 .B MPOL_F_ADDR
-and the current process policy is not
+and the current thread policy is not
 .BR MPOL_INTERLEAVE .
 Or,
 .I flags
man2/set_mempolicy.2 +14 -14
index 9d7d1de..f5169da 100644
@@ -26,7 +26,7 @@
 .\"
 .TH SET_MEMPOLICY 2 2014-05-28 Linux "Linux Programmer's Manual"
 .SH NAME
-set_mempolicy \- set default NUMA memory policy for a process and its children
+set_mempolicy \- set default NUMA memory policy for a thread and its children
 .SH SYNOPSIS
 .nf
 .B "#include <numaif.h>"
@@ -38,7 +38,7 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR set_mempolicy ()
-sets the NUMA memory policy of the calling process,
+sets the NUMA memory policy of the calling thread,
 which consists of a policy mode and zero or more nodes,
 to the values specified by the
 .IR mode ,
@@ -50,28 +50,28 @@ arguments.
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
-This system call defines the default policy for the process.
-The process policy governs allocation of pages in the process's
+This system call defines the default policy for the thread.
+The thread policy governs allocation of pages in the process's
 address space outside of memory ranges
 controlled by a more specific policy set by
 .BR mbind (2).
-The process default policy also controls allocation of any pages for
+The thread default policy also controls allocation of any pages for
 memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_PRIVATE
-flag and that are only read [loaded] from by the process
+flag and that are only read [loaded] from by the thread
 and of memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_SHARED
 flag, regardless of the access type.
 The policy is applied only when a new page is allocated
-for the process.
+for the thread.
 For anonymous memory this is when the page is first
-touched by the application.
+touched by the thread.
 
 The
 .I mode
@@ -154,7 +154,7 @@ cpuset context includes one or more of the nodes specified by
 
 The
 .B MPOL_DEFAULT
-mode specifies that any nondefault process memory policy be removed,
+mode specifies that any nondefault thread memory policy be removed,
 so that the memory policy "falls back" to the system default policy.
 The system default policy is "local allocation"\(emthat is,
 allocate memory on the node of the CPU that triggered the allocation.
@@ -211,9 +211,9 @@ arguments specify the empty set, then the policy
 specifies "local allocation"
 (like the system default policy discussed above).
 
-The process memory policy is preserved across an
+The thread memory policy is preserved across an
 .BR execve (2),
-and is inherited by child processes created using
+and is inherited by child threads created using
 .BR fork (2)
 or
 .BR clone (2).
@@ -279,9 +279,9 @@ system call was added to the Linux kernel in version 2.6.7.
 .SH CONFORMING TO
 This system call is Linux-specific.
 .SH NOTES
-Process policy is not remembered if the page is swapped out.
+Memory policy is not remembered if the page is swapped out.
 When such a page is paged back in, it will use the policy of
-the process or memory range that is in effect at the time the
+the thread or memory range that is in effect at the time the
 page is allocated.
 
 For information on library support, see
Signature · 3 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
Signature · 9 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#4 lore raw

Le 06/05/2015 18:28, Michael Kerrisk (man-pages) a ecrit :

Quoted 10 lines

Hi Andi,

Quoted 6 lines · Andi Kleen
Quoted 4 lines · Michael Kerrisk (man-pages)

Hi Andi,

Brice's patch seems broadly okay to me, but you originally wrote the pages, so I'd be happy if you could comment. Could you take a look please?

Just s/process/thread/g ?

No, it doesn't seem to be quite that. Brice, can you say a little more here?

It's pretty much s/process/thread/ when process means "group of threads". When process is used for "address space", I didn't change much.

Brice

Quoted 4 lines
Quoted 4 lines

The distinction between process and thread is fuzzy in Linux of course, but i suppose it matches the user's terms better.

Quoted 232 lines
Quoted 1 line

Fine for me.

Okay -- I'll await further input from Brice, and then apply.

Cheers,

Michael

Quoted 223 lines
Quoted 223 lines

Cheers,

Michael

Quoted 211 lines · Brice Goglin

Hello,

set/get_mempolicy manpages say that the memory allocation policy is per process while reading the code and testing shows that it's actually per thread.
Here's a quick fix, which may need to be improved to better explain that we're allocating in the context of a thread within a process address space.

Brice

set/get_mempolicy.2: policy is per thread, not per process

man2/get_mempolicy.2 +11 -11
index a17c0f3..c0e9639 100644
@@ -26,7 +26,7 @@
 .\"
 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
 .SH NAME
-get_mempolicy \- retrieve NUMA memory policy for a process
+get_mempolicy \- retrieve NUMA memory policy for a thread
 .SH SYNOPSIS
 .B "#include <numaif.h>"
 .nf
@@ -39,19 +39,19 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR get_mempolicy ()
-retrieves the NUMA policy of the calling process or of a memory address,
+retrieves the NUMA policy of the calling thread or of a memory address,
 depending on the setting of
 .IR flags .
 
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
 If
 .I flags
 is specified as 0,
-then information about the calling process's default policy
+then information about the calling thread's default policy
 (as set by
 .BR set_mempolicy (2))
 is returned.
@@ -59,7 +59,7 @@ The policy returned
 .RI [ mode
 and
 .IR nodemask ]
-may be used to restore the process's policy to its state at
+may be used to restore the thread's policy to its state at
 the time of the call to
 .BR get_mempolicy ()
 using
@@ -72,7 +72,7 @@ specifies
 (available since Linux 2.6.24), the
 .I mode
 argument is ignored and the set of nodes [memories] that the
-process is allowed to specify in subsequent calls to
+thread is allowed to specify in subsequent calls to
 .BR mbind (2)
 or
 .BR set_mempolicy (2)
@@ -94,7 +94,7 @@ specifies
 then information is returned about the policy governing the memory
 address given in
 .IR addr .
-This policy may be different from the process's default policy if
+This policy may be different from the thread's default policy if
 .BR mbind (2)
 or one of the helper functions described in
 .BR numa (3)
@@ -135,7 +135,7 @@ is allocated into the location pointed to by
 .IR mode .
 If no page has yet been allocated for the specified address,
 .BR get_mempolicy ()
-will allocate a page as if the process had performed a read
+will allocate a page as if the thread had performed a read
 [load] access to that address, and return the ID of the node
 where that page was allocated.
 
@@ -145,7 +145,7 @@ specifies
 .BR MPOL_F_NODE ,
 but not
 .BR MPOL_F_ADDR ,
-and the process's current policy is
+and the thread's current policy is
 .BR MPOL_INTERLEAVE ,
 then
 .BR get_mempolicy ()
@@ -153,7 +153,7 @@ will return in the location pointed to by a non-NULL
 .I mode
 argument,
 the node ID of the next node that will be used for
-interleaving of internal kernel pages allocated on behalf of the process.
+interleaving of internal kernel pages allocated on behalf of the thread.
 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
 These allocations include pages for memory-mapped files in
 process memory ranges mapped using the
@@ -214,7 +214,7 @@ specified
 .B MPOL_F_NODE
 but not
 .B MPOL_F_ADDR
-and the current process policy is not
+and the current thread policy is not
 .BR MPOL_INTERLEAVE .
 Or,
 .I flags
man2/set_mempolicy.2 +14 -14
index 9d7d1de..f5169da 100644
@@ -26,7 +26,7 @@
 .\"
 .TH SET_MEMPOLICY 2 2014-05-28 Linux "Linux Programmer's Manual"
 .SH NAME
-set_mempolicy \- set default NUMA memory policy for a process and its children
+set_mempolicy \- set default NUMA memory policy for a thread and its children
 .SH SYNOPSIS
 .nf
 .B "#include <numaif.h>"
@@ -38,7 +38,7 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR set_mempolicy ()
-sets the NUMA memory policy of the calling process,
+sets the NUMA memory policy of the calling thread,
 which consists of a policy mode and zero or more nodes,
 to the values specified by the
 .IR mode ,
@@ -50,28 +50,28 @@ arguments.
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
-This system call defines the default policy for the process.
-The process policy governs allocation of pages in the process's
+This system call defines the default policy for the thread.
+The thread policy governs allocation of pages in the process's
 address space outside of memory ranges
 controlled by a more specific policy set by
 .BR mbind (2).
-The process default policy also controls allocation of any pages for
+The thread default policy also controls allocation of any pages for
 memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_PRIVATE
-flag and that are only read [loaded] from by the process
+flag and that are only read [loaded] from by the thread
 and of memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_SHARED
 flag, regardless of the access type.
 The policy is applied only when a new page is allocated
-for the process.
+for the thread.
 For anonymous memory this is when the page is first
-touched by the application.
+touched by the thread.
 
 The
 .I mode
@@ -154,7 +154,7 @@ cpuset context includes one or more of the nodes specified by
 
 The
 .B MPOL_DEFAULT
-mode specifies that any nondefault process memory policy be removed,
+mode specifies that any nondefault thread memory policy be removed,
 so that the memory policy "falls back" to the system default policy.
 The system default policy is "local allocation"\(emthat is,
 allocate memory on the node of the CPU that triggered the allocation.
@@ -211,9 +211,9 @@ arguments specify the empty set, then the policy
 specifies "local allocation"
 (like the system default policy discussed above).
 
-The process memory policy is preserved across an
+The thread memory policy is preserved across an
 .BR execve (2),
-and is inherited by child processes created using
+and is inherited by child threads created using
 .BR fork (2)
 or
 .BR clone (2).
@@ -279,9 +279,9 @@ system call was added to the Linux kernel in version 2.6.7.
 .SH CONFORMING TO
 This system call is Linux-specific.
 .SH NOTES
-Process policy is not remembered if the page is swapped out.
+Memory policy is not remembered if the page is swapped out.
 When such a page is paged back in, it will use the policy of
-the process or memory range that is in effect at the time the
+the thread or memory range that is in effect at the time the
 page is allocated.
 
 For information on library support, see
Signature · 3 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#5 lore raw

Hi Brice,

Quoted 7 lines · Brice Goglin

Le 06/05/2015 18:28, Michael Kerrisk (man-pages) a ecrit :

Quoted 6 lines

Hi Andi,

Quoted 3 lines · Andi Kleen
Quoted 2 lines · Michael Kerrisk (man-pages)

Hi Andi,

Quoted 7 lines
Quoted 4 lines
Quoted 3 lines
Quoted 2 lines

Brice's patch seems broadly okay to me, but you originally wrote the pages, so I'd be happy if you could comment. Could you take a look please?

Just s/process/thread/g ?

No, it doesn't seem to be quite that. Brice, can you say a little more here?

It's pretty much s/process/thread/ when process means "group of threads". When process is used for "address space", I didn't change much.

Okay. I've applied this patch. Thanks!

Thanks,

Michael

Quoted 237 lines
Quoted 235 lines
Quoted 4 lines

The distinction between process and thread is fuzzy in Linux of course, but i suppose it matches the user's terms better.

Fine for me.

Okay -- I'll await further input from Brice, and then apply.

Cheers,

Michael

Quoted 223 lines
Quoted 223 lines

Cheers,

Michael

Quoted 211 lines · Brice Goglin

Hello,

set/get_mempolicy manpages say that the memory allocation policy is per process while reading the code and testing shows that it's actually per thread.
Here's a quick fix, which may need to be improved to better explain that we're allocating in the context of a thread within a process address space.

Brice

set/get_mempolicy.2: policy is per thread, not per process

man2/get_mempolicy.2 +11 -11
index a17c0f3..c0e9639 100644
@@ -26,7 +26,7 @@
 .\"
 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
 .SH NAME
-get_mempolicy \- retrieve NUMA memory policy for a process
+get_mempolicy \- retrieve NUMA memory policy for a thread
 .SH SYNOPSIS
 .B "#include <numaif.h>"
 .nf
@@ -39,19 +39,19 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR get_mempolicy ()
-retrieves the NUMA policy of the calling process or of a memory address,
+retrieves the NUMA policy of the calling thread or of a memory address,
 depending on the setting of
 .IR flags .
 
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
 If
 .I flags
 is specified as 0,
-then information about the calling process's default policy
+then information about the calling thread's default policy
 (as set by
 .BR set_mempolicy (2))
 is returned.
@@ -59,7 +59,7 @@ The policy returned
 .RI [ mode
 and
 .IR nodemask ]
-may be used to restore the process's policy to its state at
+may be used to restore the thread's policy to its state at
 the time of the call to
 .BR get_mempolicy ()
 using
@@ -72,7 +72,7 @@ specifies
 (available since Linux 2.6.24), the
 .I mode
 argument is ignored and the set of nodes [memories] that the
-process is allowed to specify in subsequent calls to
+thread is allowed to specify in subsequent calls to
 .BR mbind (2)
 or
 .BR set_mempolicy (2)
@@ -94,7 +94,7 @@ specifies
 then information is returned about the policy governing the memory
 address given in
 .IR addr .
-This policy may be different from the process's default policy if
+This policy may be different from the thread's default policy if
 .BR mbind (2)
 or one of the helper functions described in
 .BR numa (3)
@@ -135,7 +135,7 @@ is allocated into the location pointed to by
 .IR mode .
 If no page has yet been allocated for the specified address,
 .BR get_mempolicy ()
-will allocate a page as if the process had performed a read
+will allocate a page as if the thread had performed a read
 [load] access to that address, and return the ID of the node
 where that page was allocated.
 
@@ -145,7 +145,7 @@ specifies
 .BR MPOL_F_NODE ,
 but not
 .BR MPOL_F_ADDR ,
-and the process's current policy is
+and the thread's current policy is
 .BR MPOL_INTERLEAVE ,
 then
 .BR get_mempolicy ()
@@ -153,7 +153,7 @@ will return in the location pointed to by a non-NULL
 .I mode
 argument,
 the node ID of the next node that will be used for
-interleaving of internal kernel pages allocated on behalf of the process.
+interleaving of internal kernel pages allocated on behalf of the thread.
 .\" Note:  code returns next interleave node via 'mode' argument -Lee Schermerhorn
 These allocations include pages for memory-mapped files in
 process memory ranges mapped using the
@@ -214,7 +214,7 @@ specified
 .B MPOL_F_NODE
 but not
 .B MPOL_F_ADDR
-and the current process policy is not
+and the current thread policy is not
 .BR MPOL_INTERLEAVE .
 Or,
 .I flags
man2/set_mempolicy.2 +14 -14
index 9d7d1de..f5169da 100644
@@ -26,7 +26,7 @@
 .\"
 .TH SET_MEMPOLICY 2 2014-05-28 Linux "Linux Programmer's Manual"
 .SH NAME
-set_mempolicy \- set default NUMA memory policy for a process and its children
+set_mempolicy \- set default NUMA memory policy for a thread and its children
 .SH SYNOPSIS
 .nf
 .B "#include <numaif.h>"
@@ -38,7 +38,7 @@ Link with \fI\-lnuma\fP.
 .fi
 .SH DESCRIPTION
 .BR set_mempolicy ()
-sets the NUMA memory policy of the calling process,
+sets the NUMA memory policy of the calling thread,
 which consists of a policy mode and zero or more nodes,
 to the values specified by the
 .IR mode ,
@@ -50,28 +50,28 @@ arguments.
 A NUMA machine has different
 memory controllers with different distances to specific CPUs.
 The memory policy defines from which node memory is allocated for
-the process.
+the thread.
 
-This system call defines the default policy for the process.
-The process policy governs allocation of pages in the process's
+This system call defines the default policy for the thread.
+The thread policy governs allocation of pages in the process's
 address space outside of memory ranges
 controlled by a more specific policy set by
 .BR mbind (2).
-The process default policy also controls allocation of any pages for
+The thread default policy also controls allocation of any pages for
 memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_PRIVATE
-flag and that are only read [loaded] from by the process
+flag and that are only read [loaded] from by the thread
 and of memory-mapped files mapped using the
 .BR mmap (2)
 call with the
 .B MAP_SHARED
 flag, regardless of the access type.
 The policy is applied only when a new page is allocated
-for the process.
+for the thread.
 For anonymous memory this is when the page is first
-touched by the application.
+touched by the thread.
 
 The
 .I mode
@@ -154,7 +154,7 @@ cpuset context includes one or more of the nodes specified by
 
 The
 .B MPOL_DEFAULT
-mode specifies that any nondefault process memory policy be removed,
+mode specifies that any nondefault thread memory policy be removed,
 so that the memory policy "falls back" to the system default policy.
 The system default policy is "local allocation"\(emthat is,
 allocate memory on the node of the CPU that triggered the allocation.
@@ -211,9 +211,9 @@ arguments specify the empty set, then the policy
 specifies "local allocation"
 (like the system default policy discussed above).
 
-The process memory policy is preserved across an
+The thread memory policy is preserved across an
 .BR execve (2),
-and is inherited by child processes created using
+and is inherited by child threads created using
 .BR fork (2)
 or
 .BR clone (2).
@@ -279,9 +279,9 @@ system call was added to the Linux kernel in version 2.6.7.
 .SH CONFORMING TO
 This system call is Linux-specific.
 .SH NOTES
-Process policy is not remembered if the page is swapped out.
+Memory policy is not remembered if the page is swapped out.
 When such a page is paged back in, it will use the policy of
-the process or memory range that is in effect at the time the
+the thread or memory range that is in effect at the time the
 page is allocated.
 
 For information on library support, see
Signature · 3 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
Signature · 9 lines
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>