Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Documentation/vm/numa_memory_policy.txt: fix wrong document in numa_memory_policy.txt

In document numa_memory_policy.txt, the following examples for flag
MPOL_F_RELATIVE_NODES are incorrect.

For example, consider a task that is attached to a cpuset with
mems 2-5 that sets an Interleave policy over the same set with
MPOL_F_RELATIVE_NODES. If the cpuset's mems change to 3-7, the
interleave now occurs over nodes 3,5-6. If the cpuset's mems
then change to 0,2-3,5, then the interleave occurs over nodes
0,3,5.

According to the comment of the patch adding flag MPOL_F_RELATIVE_NODES,
the nodemasks the user specifies should be considered relative to the
current task's mems_allowed.

(https://lkml.org/lkml/2008/2/29/428)

And according to numa_memory_policy.txt, if the user's nodemask includes
nodes that are outside the range of the new set of allowed nodes, then
the remap wraps around to the beginning of the nodemask and, if not
already set, sets the node in the mempolicy nodemask.

So in the example, if the user specifies 2-5, for a task whose
mems_allowed is 3-7, the nodemasks should be remapped the third, fourth,
fifth, sixth node in mems_allowed. like the following:

mems_allowed: 3 4 5 6 7

relative index: 0 1 2 3 4
5

So the nodemasks should be remapped to 3,5-7, but not 3,5-6.

And for a task whose mems_allowed is 0,2-3,5, the nodemasks should be
remapped to 0,2-3,5, but not 0,3,5.

mems_allowed: 0 2 3 5

relative index: 0 1 2 3
4 5

Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Tang Chen and committed by
Linus Torvalds
8f28ed92 12c743eb

+2 -3
+2 -3
Documentation/vm/numa_memory_policy.txt
··· 174 174 allocation fails, the kernel will search other nodes, in order of 175 175 increasing distance from the preferred node based on information 176 176 provided by the platform firmware. 177 - containing the cpu where the allocation takes place. 178 177 179 178 Internally, the Preferred policy uses a single node--the 180 179 preferred_node member of struct mempolicy. When the internal ··· 274 275 For example, consider a task that is attached to a cpuset with 275 276 mems 2-5 that sets an Interleave policy over the same set with 276 277 MPOL_F_RELATIVE_NODES. If the cpuset's mems change to 3-7, the 277 - interleave now occurs over nodes 3,5-6. If the cpuset's mems 278 + interleave now occurs over nodes 3,5-7. If the cpuset's mems 278 279 then change to 0,2-3,5, then the interleave occurs over nodes 279 - 0,3,5. 280 + 0,2-3,5. 280 281 281 282 Thanks to the consistent remapping, applications preparing 282 283 nodemasks to specify memory policies using this flag should