mbind(2) System Calls Manual mbind(2) mbind - NUMA ( ) (libnuma -lnuma) #include long mbind(unsigned long size, unsigned long maxnode; void addr[size], unsigned long size, int mode, const unsigned long nodemask[(maxnode + ULONG_WIDTH - 1) / ULONG_WIDTH], unsigned long maxnode, unsigned int flags); mbind() NUMA addr size . . addr size ""-- mmap(2) MAP_ANONYMOUS-- mmap(2) MAP_PRIVATE () . . MAP_PRIVATE . mbind(). MAP_SHARED . . mbind(). shmget(2) shmat(2) . SHM_HUGETLB mbind() . mbind() . MPOL_MF_MOVE MPOL_MF_MOVE_ALL . mode MPOL_DEFAULT MPOL_BIND MPOL_INTERLEAVE MPOL_WEIGHTED_INTERLEAVE MPOL_PREFERRED MPOL_PREFERRED_MANY MPOL_LOCAL ( ). MPOL_DEFAULT nodemask. mode . : MPOL_F_NUMA_BALANCING ( 5.15) mode MPOL_BIND NUMA . mode MPOL_BIND -1 errno EINVAL. MPOL_F_STATIC_NODES ( -2.6.26) nodemask . nodemask cpuset cpuset . MPOL_F_RELATIVE_NODES ( -2.6.26) nodemask cpuset . nodemask maxnode . sizeof(unsigned long) maxnode. NULL nodemask maxnode . maxnode nodemask. nodemask cpuset ( MPOL_F_STATIC_NODES) . mode : MPOL_DEFAULT . mbind() set_mempolicy(2). MPOL_DEFAULT . . MPOL_DEFAULT nodemask maxnode . MPOL_BIND nodemask. nodemask . nodemask. ( 2.6.26 . nodemask .) MPOL_INTERLEAVE nodemask. . 1 . . MPOL_WEIGHTED_INTERLEAVE ( 6.9) nodemask /sys/kernel/mm/mempolicy/weighted_interleave. 0 2 5 nodemask /sys/kernel/mm/mempolicy/weighted_interleave/node0 /sys/.../node2 /sys/.../node5 4 7 9 0 2 5 4:7:9. MPOL_PREFERRED . . nodemask . nodemask maxnode . MPOL_PREFERRED_MANY ( 5.15) set_mempolicy(2). MPOL_LOCAL ( 3.8) " " (" "). nodemask maxnode . " " . " " . " " . " " . MPOL_DEFAULT ( set_mempolicy(2)) " ". MPOL_MF_STRICT flags mode MPOL_DEFAULT EIO . MPOL_MF_MOVE flags . . MPOL_MF_STRICT EIO . MPOL_INTERLEAVE . MPOL_MF_MOVE_ALL flags . (CAP_SYS_NICE) . MPOL_MF_STRICT EIO . MPOL_INTERLEAVE . mbind() 0 -1 errno . EFAULT nodemask maxnode . addr size. EINVAL flags mode addr + size addr addr . mode MPOL_DEFAULT nodemask mode MPOL_BIND MPOL_INTERLEAVE nodemask . maxnode . nodemask . nodemask cpuset . mode MPOL_F_STATIC_NODES MPOL_F_RELATIVE_NODES. EIO MPOL_MF_STRICT MPOL_MF_MOVE MPOL_MF_MOVE_ALL . ENOMEM . EPERM flags MPOL_MF_MOVE_ALL CAP_SYS_NICE. . 2.6.7. 2.6.16. . 5.7. MPOL_MF_STRICT . MPOL_MF_MOVE MPOL_MF_MOVE_ALL 2.6.16 . numa(7). NUMA MAP_SHARED. MPOL_DEFAULT mbind() set_mempolicy(2). MPOL_DEFAULT set_mempolicy(2) . MPOL_DEFAULT mbind() set_mempolicy(2). "" . " " mode MPOL_LOCAL MPOL_PREFERRED . set_mempolicy(2). get_mempolicy(2), getcpu(2), mmap(2), set_mempolicy(2), shmat(2), shmget(2), numa(3), cpuset(7), numa(7), numactl(8) 3 . . : . 6.18 8 2026 mbind(2)