mbind(2) - wariua/manpages-ko GitHub Wiki

NAME

mbind - ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์— ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ… ์„ค์ •ํ•˜๊ธฐ

SYNOPSIS

#include <numaif.h>

long mbind(void *addr, unsigned long len, int mode,
           const unsigned long *nodemask, unsigned long maxnode,
           unsigned flags);

-lnuma๋กœ ๋งํฌ.

DESCRIPTION

mbind()๋Š” addr์—์„œ ์‹œ์ž‘ํ•ด์„œ len ๋ฐ”์ดํŠธ๋งŒํผ ์ด์–ด์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์— ๋Œ€ํ•ด NUMA ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์„ ์„ค์ •ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์€ ์ •์ฑ… ๋ชจ๋“œ์™€ 0๊ฐœ ์ด์ƒ์˜ ๋…ธ๋“œ๋กœ ์ด๋ค„์ง€๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ด๋А ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ํ• ๋‹นํ•˜๋Š”์ง€ ๊ทœ์ •ํ•œ๋‹ค.

addr ๋ฐ len ์ธ์ž๋กœ ์ง€์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์— "์ต๋ช…" ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(์ฆ‰ mmap(2) ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ MAP_ANONYMOUS๋กœ ์จ์„œ ๋งŒ๋“  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ)์ด๋‚˜ (mmap(2) ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ MAP_PRIVATE ํ”Œ๋ž˜๊ทธ๋กœ ์จ์„œ ๋งต ํ•œ) ๋ฉ”๋ชจ๋ฆฌ ๋งต ํŒŒ์ผ์ด ํฌํ•จ๋ผ ์žˆ์œผ๋ฉด ์‘์šฉ์—์„œ ๊ทธ ํŽ˜์ด์ง€์— ์“ฐ๊ธฐ(์ €์žฅ)๋ฅผ ํ•  ๋•Œ ์ง€์ • ์ •์ฑ…์— ๋”ฐ๋ผ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ์ต๋ช… ์˜์—ญ์—์„œ ์ฒ˜์Œ ์ฝ๊ธฐ ์ ‘๊ทผ์„ ํ•˜๋ฉด 0์œผ๋กœ ์ฑ„์›Œ์ง„ ์ปค๋„ ๋‚ด ๊ณต์œ  ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค. 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_PREFERRED, MPOL_LOCAL (์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•จ) ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. MPOL_DEFAULT๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ •์ฑ… ๋ชจ๋“œ์—์„œ ํ˜ธ์ถœ์ž๊ฐ€ nodemask ์ธ์ž๋ฅผ ํ†ตํ•ด ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•  ๋…ธ๋“œ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

mode ์ธ์ž์— ์„ ํƒ์ ์œผ๋กœ ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ์ง€์›ํ•˜๋Š” ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

MPOL_F_STATIC_NODES (๋ฆฌ๋ˆ…์Šค 2.6.26๋ถ€ํ„ฐ)
๋น„์–ด ์žˆ์ง€ ์•Š์€ nodemask๊ฐ€ ๋ฌผ๋ฆฌ์  ๋…ธ๋“œ ID๋“ค์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ cpuset ๋ฌธ๋งฅ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ์˜ ํ˜„์žฌ cpuset ๋ฌธ๋งฅ์ด ํ—ˆ์šฉํ•˜๋Š” ๋…ธ๋“œ ์ง‘ํ•ฉ์ด ๋ฐ”๋€” ๋•Œ ๋ฆฌ๋ˆ…์Šค์—์„œ nodemask๋ฅผ ์žฌ์‚ฌ์ƒ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
MPOL_F_RELATIVE_NODES (๋ฆฌ๋ˆ…์Šค 2.6.26๋ถ€ํ„ฐ)
๋น„์–ด ์žˆ์ง€ ์•Š์€ nodemask๊ฐ€ ์Šค๋ ˆ๋“œ์˜ ํ˜„์žฌ cpuset์ด ํ—ˆ์šฉํ•˜๋Š” ๋…ธ๋“œ ID ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ƒ๋Œ€์ ์ธ ๋…ธ๋“œ ID๋“ค์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

nodemask๋Š” ๋…ธ๋“œ๋“ค์˜ ๋น„ํŠธ ๋งˆ์Šคํฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ๊ทธ ๋น„ํŠธ ๋งˆ์Šคํฌ์—๋Š” ์ตœ๋Œ€ maxnode ๊ฐœ๊นŒ์ง€์˜ ๋น„ํŠธ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋‹ค. ๋น„ํŠธ ๋งˆ์Šคํฌ ํฌ๊ธฐ๋ฅผ sizeof(unsigned long)์˜ ๋‹ค์Œ ๋ฐฐ์ˆ˜๋กœ ์˜ฌ๋ฆผ ํ•˜์ง€๋งŒ ์ปค๋„์—์„œ๋Š” maxnode ๊ฐœ๊นŒ์ง€์˜ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. nodemask ๊ฐ’์ด NULL์ด๊ฑฐ๋‚˜ maxnode ๊ฐ’์ด 0์ด๋ฉด ๋นˆ ๋…ธ๋“œ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. maxnode์˜ ๊ฐ’์ด 0์ด๋ฉด nodemask ์ธ์ž๋ฅผ ๋ฌด์‹œํ•œ๋‹ค. nodemask๊ฐ€ ํ•„์ˆ˜์ธ ๊ฒฝ์šฐ์— ๊ทธ ์ธ์ž๋Š” ์˜จ๋ผ์ธ์ด๊ณ , (MPOL_F_STATIC_NODES ๋ชจ๋“œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์œผ๋ฉด) ์Šค๋ ˆ๋“œ์˜ ํ˜„์žฌ cpuset ๋ฌธ๋งฅ์ด ํ—ˆ์šฉํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์ ์–ด๋„ ํ•œ ๊ฐœ๋Š” ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

mode ์ธ์ž์— ๋‹ค์Œ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋ผ์•ผ ํ•œ๋‹ค.

MPOL_DEFAULT
์ด ๋ชจ๋“œ๋Š” ๊ธฐ๋ณธ๊ณผ ๋‹ค๋ฅธ ์ •์ฑ…์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด์„œ ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹์„ ๋ณต์›ํ•˜๋„๋ก ์š”์ฒญํ•œ๋‹ค. mbind()๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์— ์ ์šฉ ์‹œ ์ด๋Š” set_mempolicy(2)๋กœ ์„ค์ •ํ•œ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ๋Š” ์Šค๋ ˆ๋“œ ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๋œป์ด๋‹ค. ์Šค๋ ˆ๋“œ ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์˜ ๋ชจ๋“œ๋„ MPOL_DEFAULT์ด๋ฉด ์‹œ์Šคํ…œ ์ „์—ญ ๊ธฐ๋ณธ ์ •์ฑ…์„ ์“ฐ๊ฒŒ ๋œ๋‹ค. ์‹œ์Šคํ…œ ์ „์—ญ ๊ธฐ๋ณธ ์ •์ฑ…์€ ํ• ๋‹น์„ ์ด‰๋ฐœํ•œ CPU์˜ ๋…ธ๋“œ์—์„œ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. MPOL_DEFAULT์—์„œ nodemask ๋ฐ maxnode ์ธ์ž๋Š” ๋นˆ ๋…ธ๋“œ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค.
MPOL_BIND
์ด ๋ชจ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ nodemask์— ์ง€์ •ํ•œ ๋…ธ๋“œ๋“ค๋กœ ์ œ์•ฝํ•˜๋Š” ์—„๊ฒฉํ•œ ์ •์ฑ…์„ ์ง€์ •ํ•œ๋‹ค. nodemask์— ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•œ ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ํ• ๋‹น์ด ์ด๋ค„์ง€๋Š” ๋…ธ๋“œ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ์—์„œ ํŽ˜์ด์ง€ ํ• ๋‹น์„ ํ•œ๋‹ค. nodemask์— ์ง€์ •ํ•˜์ง€ ์•Š์€ ์–ด๋–ค ๋…ธ๋“œ์—์„œ๋„ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋ฆฌ๋ˆ…์Šค 2.6.26 ์ „์—์„œ๋Š” ๋…ธ๋“œ ID์˜ ์ˆซ์ž ๊ฐ’์ด ๊ฐ€์žฅ ๋‚ฎ์€ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ํŽ˜์ด์ง€ ํ• ๋‹น์„ ํ–ˆ๋‹ค. ๊ทธ ๋…ธ๋“œ์— ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†์–ด์ง€๋ฉด nodemask์— ์ง€์ •ํ•œ ๋‹ค์Œ์œผ๋กœ ๋‚ฎ์€ ID์˜ ๋…ธ๋“œ์—์„œ ํ• ๋‹น์„ ํ•˜๊ณ , ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ง€์ •ํ•œ ๋…ธ๋“œ๋“ค ์–ด๋””์—๋„ ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋‹ค.)
MPOL_INTERLEAVE
์ด ๋ชจ๋“œ์—์„œ๋Š” nodemask์— ์ง€์ •ํ•œ ๋…ธ๋“œ ์ง‘ํ•ฉ ๋‚ด์—์„œ ๊ต๋Œ€๋กœ ํŽ˜์ด์ง€ ํ• ๋‹น์„ ํ•œ๋‹ค. ํŽ˜์ด์ง€๋“ค๊ณผ ๊ทธ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋กœ ๋ถ„์‚ฐ์‹œํ‚ด์œผ๋กœ์จ ์ง€์—ฐ๋ณด๋‹ค๋Š” ๋Œ€์—ญํญ์„ ์ตœ์ ํ™” ํ•œ๋‹ค. ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ๊ฝค ์ปค์•ผ ํ•œ๋‹ค. ์ตœ์†Œ 1MB๋Š” ๋ผ์•ผ ๊ฝค ๊ท ์ผํ•œ ์ ‘๊ทผ ํŒจํ„ด์ด ๋‚˜์˜จ๋‹ค. ๋‹จ์ผ ํŽ˜์ด์ง€ ์˜์—ญ์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ ์—ฌ์ „ํžˆ ๋‹จ์ผ ๋…ธ๋“œ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ์œผ๋กœ ์ œํ•œ๋œ๋‹ค.
MPOL_PREFERRED
์ด ๋ชจ๋“œ๋Š” ํ• ๋‹น ์„ ํ˜ธ ๋…ธ๋“œ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์ปค๋„์ด ๋จผ์ € ๊ทธ ๋…ธ๋“œ์—์„œ ํŽ˜์ด์ง€๋ฅผ ํ• ๋‹นํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ ๊ทธ ์„ ํ˜ธ ๋…ธ๋“œ์— ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ํ›„ํ‡ดํ•œ๋‹ค. nodemask์— ๋…ธ๋“œ ID๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•˜๋ฉด ๋งˆ์Šคํฌ์˜ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์„ ํ˜ธ ๋…ธ๋“œ๋กœ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค. nodemask ๋ฐ maxnode ์ธ์ž๊ฐ€ ๋นˆ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ์šฐ์—๋Š” ํ• ๋‹น์„ ์ด‰๋ฐœํ•œ CPU์˜ ๋…ธ๋“œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
MPOL_LOCAL (๋ฆฌ๋ˆ…์Šค 3.8๋ถ€ํ„ฐ)
์ด ๋ชจ๋“œ๋Š” "์ง€์—ญ ํ• ๋‹น"์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰ ํ• ๋‹น์„ ์ด‰๋ฐœํ•œ CPU์˜ ๋…ธ๋“œ("์ง€์—ญ ๋…ธ๋“œ")์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. nodemask ๋ฐ maxnode ์ธ์ž๊ฐ€ ๋นˆ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค. "์ง€์—ญ ๋…ธ๋“œ"์— ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ์ปค๋„์€ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‹œ๋„ํ•˜๊ฒŒ ๋œ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ปค๋„์ด ํ•ญ์ƒ "์ง€์—ญ ๋…ธ๋“œ"์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ํ˜„์žฌ cpuset ๋ฌธ๋งฅ์ด "์ง€์—ญ ๋…ธ๋“œ"๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ปค๋„์ด ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‹œ๋„ํ•˜๊ฒŒ ๋œ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ํ˜„์žฌ cpuset ๋ฌธ๋งฅ์—์„œ ํ—ˆ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ปค๋„์ด ํ•ญ์ƒ "์ง€์—ญ ๋…ธ๋“œ"์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ์ด์™€ ๋‹ฌ๋ฆฌ MPOL_DEFAULT๋Š” (set_mempolicy(2)๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•œ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ๋Š”) ์Šค๋ ˆ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์œผ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค. ๊ทธ ์ •์ฑ…์€ "์ง€์—ญ ํ• ๋‹น" ์•„๋‹Œ ์–ด๋–ค ์ •์ฑ…์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

flags์— MPOL_MF_STRICT๋ฅผ ์ฃผ๊ณ  mode๊ฐ€ MPOL_DEFAULT๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„ ๋‚ด์˜ ๊ธฐ์กด ํŽ˜์ด์ง€๋“ค์ด ์ •์ฑ…์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ˜ธ์ถœ์ด EIO ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•œ๋‹ค.

flags์— MPOL_MF_MOVE๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„ ๋‚ด์˜ ๊ธฐ์กด ํŽ˜์ด์ง€๋“ค์ด ๋ชจ๋‘ ์ •์ฑ…์„ ๋”ฐ๋ฅด๊ฒŒ ๋˜๋„๋ก ํŽ˜์ด์ง€๋ฅผ ์˜ฎ๊ธฐ๋ ค๊ณ  ์ปค๋„์ด ์‹œ๋„ํ•˜๊ฒŒ ๋œ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•˜๋Š” ํŽ˜์ด์ง€๋Š” ์˜ฎ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. MPOL_MF_STRICT๋ฅผ ํ•จ๊ป˜ ์ง€์ •ํ•˜๋ฉด ์ผ๋ถ€ ํŽ˜์ด์ง€๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ˜ธ์ถœ์ด EIO ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•œ๋‹ค.

flags์— MPOL_MF_MOVE_ALL์„ ์ฃผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„ ๋‚ด์˜ ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ๋ชจ๋‘๋ฅผ ์˜ฎ๊ธฐ๋ ค๊ณ  ์ปค๋„์ด ์‹œ๋„ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์“ฐ๋ ค๋ฉด ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ๊ฐ€ ํŠน๊ถŒ(CAP_SYS_NICE)์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. MPOL_MF_STRICT๋ฅผ ํ•จ๊ป˜ ์ง€์ •ํ•˜๋ฉด ์ผ๋ถ€ ํŽ˜์ด์ง€๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ˜ธ์ถœ์ด EIO ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•œ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ mbind()๋Š” 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

EFAULT
nodemask์™€ maxnode๋กœ ์ง€์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์˜ ์ผ๋ถ€ ๋‚ด์ง€ ์ „์ฒด๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฐ–์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋˜๋Š” addr๊ณผ len์œผ๋กœ ์ง€์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์— ๋งต ์•ˆ ๋œ ๊ตฌ๋ฉ์ด ์žˆ๋‹ค.
EINVAL
flags๋‚˜ mode์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์„ ์ง€์ •ํ–ˆ๋‹ค. ๋˜๋Š” addr + len์ด addr๋ณด๋‹ค ์ž‘๋‹ค. ๋˜๋Š” addr์ด ์‹œ์Šคํ…œ ํŽ˜์ด์ง€ ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋˜๋Š” mode๊ฐ€ MPOL_DEFAULT์ธ๋ฐ nodemask๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋˜๋Š” mode๊ฐ€ MPOL_BIND๋‚˜ MPOL_INTERLEAVE์ด๊ณ  nodemask๊ฐ€ ๋น„์–ด ์žˆ๋‹ค. ๋˜๋Š” maxnode๊ฐ€ ์ปค๋„์—์„œ ๋‘๋Š” ์ œํ•œ์น˜๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค. ๋˜๋Š” ์ง€์›ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋…ธ๋“œ ID๋ณด๋‹ค ํฐ ๋…ธ๋“œ ID๋ฅผ nodemask์— ํ•œ ๊ฐœ ์ด์ƒ ์ง€์ •ํ–ˆ๋‹ค. ๋˜๋Š” nodemask๋กœ ์ง€์ •ํ•œ ๋…ธ๋“œ ID๋“ค ์ค‘์—์„œ ์˜จ๋ผ์ธ์ด๊ณ  ์Šค๋ ˆ๋“œ์˜ ํ˜„์žฌ 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 ํŠน๊ถŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

VERSIONS

๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋ฒ„์ „ 2.6.7์—์„œ mbind() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

CONFORMING TO

์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ๋ฆฌ๋ˆ…์Šค ์ „์šฉ์ด๋‹ค.

NOTES

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์›์— ๋Œ€ํ•œ ์ •๋ณด๋Š” numa(7)๋ฅผ ๋ณด๋ผ.

MAP_SHARED ํ”Œ๋ž˜๊ทธ๋กœ ๋งต ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋งต ํŒŒ์ผ ๋ฒ”์œ„์—์„œ๋Š” NUMA ์ •์ฑ…์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

MPOL_DEFAULT ๋ชจ๋“œ์˜ ํšจ๊ณผ๊ฐ€ mbind()์™€ set_mempolicy(2)์—์„œ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. set_mempolicy(2)์—์„œ MPOL_DEFAULT๋ฅผ ์ง€์ •ํ•˜๋ฉด ์Šค๋ ˆ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์ด ์‹œ์Šคํ…œ ๊ธฐ๋ณธ ์ •์ฑ…์ธ ์ง€์—ญ ํ• ๋‹น์œผ๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค. ๋ฐ˜๋ฉด mbind()๋ฅผ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์— MPOL_DEFAULT๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ทธ ๋ฒ”์œ„์—์„œ ์ดํ›„ ํ• ๋‹นํ•˜๋Š” ํŽ˜์ด์ง€๋“ค์ด set_mempolicy(2)๋กœ ์„ค์ •ํ•œ ์Šค๋ ˆ๋“œ ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์ง€์ •ํ•œ ๋ฒ”์œ„์—์„œ ๋ช…์‹œ์  ์ •์ฑ…์„ ์—†์• ์„œ ๊ธฐ๋ณธ๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜๋„ ์žˆ๋Š” ์ •์ฑ…์œผ๋กœ "ํ›„ํ‡ด"์‹œํ‚ค๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„์—์„œ ๋ช…์‹œ์ ์œผ๋กœ "์ง€์—ญ ํ• ๋‹น"์„ ์„ ํƒํ•˜๋ ค๋ฉด ๋นˆ ๋…ธ๋“œ ์ง‘ํ•ฉ์œผ๋กœ mode์— MPOL_LOCAL์ด๋‚˜ MPOL_PREFERRED๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. set_mempolicy(2)์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ๋ฐฉ๋ฒ•์ด ํ†ตํ•œ๋‹ค.

๊ฑฐ๋Œ€ ํŽ˜์ด์ง€ ์ •์ฑ… ์ง€์›์€ 2.6.16์—์„œ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๊ฑฐ๋Œ€ ํŽ˜์ด์ง€ ๋งคํ•‘์—์„œ ๊ต๋Œ€ ์ •์ฑ…์ด ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ ค๋ฉด ์ •์ฑ… ๋Œ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ˆ˜์‹ญ ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ์ด์ƒ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

๊ฑฐ๋Œ€ ํŽ˜์ด์ง€ ๋งคํ•‘์—์„œ๋Š” MPOL_MF_STRICT๋ฅผ ๋ฌด์‹œํ•œ๋‹ค.

MPOL_MF_MOVE์™€ MPOL_MF_MOVE_ALL์€ ๋ฆฌ๋ˆ…์Šค 2.6.16 ๋ฐ ์ดํ›„์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

SEE ALSO

get_mempolicy(2), getcpu(2), mmap(2), set_mempolicy(2), shmat(2), shmget(2), numa(3), cpuset(7), numa(7), numactl(8)


2017-09-15

โš ๏ธ **GitHub.com Fallback** โš ๏ธ