move_pages(2) - wariua/manpages-ko GitHub Wiki
move_pages - ํ๋ก์ธ์ค์ ๊ฐ๋ณ ํ์ด์ง๋ค์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ฎ๊ธฐ๊ธฐ
#include <numaif.h>
long move_pages(int pid, unsigned long count, void **pages,
const int *nodes, int *status, int flags);-lnuma๋ก ๋งํฌ.
move_pages()๋ ํ๋ก์ธ์ค pid์ ์ง์ ํ pages๋ฅผ nodes๋ก ์ง์ ํ ๋ฉ๋ชจ๋ฆฌ ๋
ธ๋๋ค๋ก ์ฎ๊ธด๋ค. ์ด๋ ๊ฒฐ๊ณผ๊ฐ status์ ๋ฐ์๋๋ค. flags๋ ์ด๋ํ ํ์ด์ง๋ค์ ๋ํ ์ ์ฝ์ ๋ํ๋ธ๋ค.
pid๋ ์ด๋ํ ํ์ด์ง๋ค์ด ์๋ ํ๋ก์ธ์ค์ ID์ด๋ค. pid๊ฐ 0์ด๋ฉด move_pages()๋ ํธ์ถ ํ๋ก์ธ์ค์ ํ์ด์ง๋ฅผ ์ฎ๊ธด๋ค.
๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ์ด์ง๋ฅผ ์ฎ๊ธฐ๋ ค๋ฉด ๋ค์ ํน๊ถ์ด ํ์ํ๋ค.
-
4.12๊น์ง์ ์ปค๋: ํธ์ถ์์๊ฒ ํน๊ถ(
CAP_SYS_NICE)์ด ์๊ฑฐ๋ ํธ์ถ ํ๋ก์ธ์ค์ ์ค์ ๋ด์ง ์คํจ ์ฌ์ฉ์ ID๊ฐ ๋์ ํ๋ก์ธ์ค์ ์ค์ ๋ด์ง saved-set ์ฌ์ฉ์ ID์ ์ผ์นํด์ผ ํ๋ค. -
์ด์ ๊ท์น ํ์์๋ ์ปค๋์์ ์ ์ ํ ์ฌ๋ฌ ๊ฐ์ ์ฃผ์๋ค์ ํธ์ถ์๊ฐ ์์๋ผ ์ ์์ด์ ํธ์ถ์์ ๊ฐ์ UID๊ฐ ์์ ํ๋ ํ๋ก์ธ์ค์ ์ฃผ์ ๊ณต๊ฐ ๋ฐฐ์น ๋์ํ๊ฐ ๋ฌด๋ ฅํ ๋ ์ ์์๊ณ , ๊ทธ๋์ ๋ฆฌ๋ ์ค 4.13๋ถํฐ ๊ท์น์ด ๋ฐ๋์๋ค. ๋ฆฌ๋ ์ค 4.13๋ถํฐ๋ ๋์ ํ๋ก์ธ์ค์ ๋ํ ptrace ์ ๊ทผ ๋ชจ๋
PTRACE_MODE_READ_REALCREDS๊ฒ์ฌ๋ก ํ๊ฐ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค. ptrace(2) ์ฐธ๊ณ .
count๋ ์ฎ๊ธธ ํ์ด์ง ๊ฐ์์ด๋ค. ์ธ ๋ฐฐ์ด pages, nodes, status์ ํฌ๊ธฐ๋ฅผ ๊ท์ ํ๋ค.
pages๋ ์ฎ๊ฒจ์ผ ํ ํ์ด์ง๋ค์ ๋ํ ํฌ์ธํฐ๋ค์ ๋ฐฐ์ด์ด๋ค. ์ด ํฌ์ธํฐ๋ค์ ํ์ด์ง ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ผ ์์ด์ผ ํ๋ค. pid๋ก ์ง์ ํ ํ๋ก์ธ์ค์๊ฒ ๋ณด์ด๋ ์ฃผ์๋ก ์ง์ ํ๋ค.
nodes๋ ๊ฐ ํ์ด์ง์ ๋ํด ์ํ๋ ์์น๋ฅผ ์ง์ ํ ์ ์๋ค์ ๋ฐฐ์ด์ด๋ค. ๋ฐฐ์ด์ ๊ฐ ํญ๋ชฉ์ ๋
ธ๋ ๋ฒํธ์ด๋ค. nodes๊ฐ NULL์ผ ์๋ ์๋๋ฐ, ๊ทธ ๊ฒฝ์ฐ move_pages()๋ ํ์ด์ง๋ฅผ ์ฎ๊ธฐ์ง ์๊ณ ๋์ ๊ฐ ํ์ด์ง๊ฐ ํ์ฌ ์๋ฆฌํ ๋
ธ๋๋ฅผ status ๋ฐฐ์ด๋ก ๋ฐํํ๋ค. ์ฎ๊ฒจ์ผ ํ ํ์ด์ง๋ค์ ์์๋ด๊ธฐ ์ํด ๊ฐ ํ์ด์ง์ ์ํ๋ฅผ ์ป์ด์ผ ํ ์ ์๋ค.
status๋ ์ ์๋ค์ ๋ฐฐ์ด์ด๋ฉฐ ๊ฐ ํ์ด์ง์ ์ํ๋ฅผ ๋ฐํํ๋ค. move_pages()๊ฐ ์ค๋ฅ๋ฅผ ๋ฐํํ์ง ์์ ๊ฒฝ์ฐ์๋ง ๋ฐฐ์ด์ด ์ ํจํ ๊ฐ๋ค์ ๋ด๊ณ ์๋ค.
flags๋ ์ฎ๊ธธ ํ์ด์ง์ ์ข
๋ฅ๋ฅผ ์ง์ ํ๋ค. MPOL_MF_MOVE๋ ํ๋ก์ธ์ค์์ ๋ฐฐํ์ ์ผ๋ก ์ฌ์ฉ ์ค์ธ ํ์ด์ง๋ค๋ง ์ฎ๊ธฐ๋ผ๋ ๋ป์ด๋ค. MPOL_MF_MOVE_ALL์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค๋ผ๋ฆฌ ๊ณต์ ํ๋ ํ์ด์ง๋ค๋ ์ฎ๊ธธ ์ ์๋ค๋ ๋ป์ด๋ค. MPOL_MF_MOVE_ALL์ ์ฐ๋ ค๋ฉด ํ๋ก์ธ์ค๊ฐ ํน๊ถ(CAP_SYS_NICE)์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
status ๋ฐฐ์ด์ ๊ฐ ํญ๋ชฉ์ผ๋ก ๋ค์ ๊ฐ๋ค์ ๋ฐํํ ์ ์๋ค.
0..MAX_NUMNODES- ํ์ด์ง๊ฐ ์๋ฆฌํ ๋ ธ๋๋ฅผ ๋ํ๋ธ๋ค.
-EACCES- ํ์ด์ง๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋งต ํ๊ณ ์์ด์
MPOL_MF_MOVE_ALL์ ์ง์ ํด์ผ๋ง ์ฎ๊ธธ ์ ์๋ค. -EBUSY- ํ์ด์ง๊ฐ ํ์ฌ ์ฌ์ฉ ์ค์ด์ด์ ์ฎ๊ธธ ์ ์๋ค. ๋์ค์ ๋ค์ ์๋ํ๋ผ. ํ์ด์ง๋ก I/O๋ฅผ ํ๋ ์ค์ด๊ฑฐ๋ ๋ค๋ฅธ ์ปค๋ ์๋ธ์์คํ ์์ ํ์ด์ง์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ก๊ณ ์๋ ๊ฒฝ์ฐ์ด๋ค.
-EFAULT- ์ ๋ก ํ์ด์ง์ด๊ฑฐ๋ ํ๋ก์ธ์ค๊ฐ ๋งต ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
-EIO- ํ์ด์ง๋ฅผ ๋ด๋ ค ์ธ ์ ์๋ค. ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋๋๋ฐ ๋ณ๊ฒฝ๋ ํ์ด์ง๋ฅผ ์ฎ๊ธธ ์ ์๊ฒ ํด ์ฃผ๋ ์ด์ ํจ์๋ฅผ ํ์ผ ์์คํ ์์ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ ํ์ด์ง๋ฅผ ์ฎ๊ธฐ๊ธฐ ์ํด์ ์๋๋ก ๊ธฐ๋กํด์ผ ํ๋ค.
-EINVAL- ๋ณ๊ฒฝ๋ ํ์ด์ง๋ฅผ ์ด๋ํ ์ ์๋ค. ํ์ผ ์์คํ ์์ ์ด์ ํจ์๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉฐ ํ์ด์ง๋ฅผ ๋ด๋ ค ์ธ ์ ์๋ค.
-ENOENT- ํ์ด์ง๊ฐ ์กด์ฌํ์ง ์๋๋ค.
-ENOMEM- ๋์ ๋ ธ๋์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ์ ์๋ค.
์ฑ๊ณต ์ move_pages()๋ 0์ ๋ฐํํ๋ค. ์ค๋ฅ ์ -1์ ๋ฐํํ๋ฉฐ ์ค๋ฅ๋ฅผ ๋ํ๋ด๋๋ก errno๋ฅผ ์ค์ ํ๋ค.
E2BIG- ์ฎ๊ธธ ํ์ด์ง๊ฐ ๋๋ฌด ๋ง๋ค.
EACCES- ํ ๋์ ๋ ธ๋๋ฅผ ํ์ฌ cpuset์์ ํ์ฉํ์ง ์๋๋ค.
EFAULT- ๋งค๊ฐ๋ณ์ ๋ฐฐ์ด์ ์ ๊ทผํ ์ ์๋ค.
EINVAL-
MPOL_MF_MOVE๋ฐMPOL_MF_MOVE_ALL์ธ์ ํ๋๊ทธ๋ฅผ ์ง์ ํ๊ฑฐ๋ ์ปค๋ ์ค๋ ๋์ ํ์ด์ง๋ฅผ ์ด๋ํ๋ ค๋ ์๋๊ฐ ์ด๋ค์ก๋ค. ENODEV- ํ ๋์ ๋ ธ๋๊ฐ ์จ๋ผ์ธ์ด ์๋๋ค.
ENOENT- ์ด๋์ด ํ์ํ ํ์ด์ง๋ฅผ ์ฐพ์ง ๋ชปํ๋ค. ๋ชจ๋ ํ์ด์ง๊ฐ ์ด๋ฏธ ๋์ ๋ ธ๋์ ์๊ฑฐ๋, ์กด์ฌํ์ง ์๊ฑฐ๋, ์ฃผ์๊ฐ ์ ํจํ์ง ์๊ฑฐ๋, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋งต ํ๊ณ ์์ด์ ์ฎ๊ธธ ์ ์๋ค.
EPERM- ํธ์ถ์๊ฐ ์ถฉ๋ถํ ํน๊ถ(
CAP_SYS_NICE) ์์ดMPOL_MF_MOVE_ALL์ ์ง์ ํ๋ค. ๋๋ ํธ์ถ์๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ์ํ ํ๋ก์ธ์ค์ ํ์ด์ง๋ฅผ ์ฎ๊ธฐ๋ ค๊ณ ์๋ํ๋๋ฐ ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํ ํน๊ถ(CAP_SYS_NICE)์ ๊ฐ์ง๊ณ ์์ง ์์๋ค. ESRCH- ํ๋ก์ธ์ค๊ฐ ์กด์ฌํ์ง ์๋๋ค.
๋ฆฌ๋
์ค ๋ฒ์ 2.6.18์์ move_pages()๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ค.
์ด ์์คํ ํธ์ถ์ ๋ฆฌ๋ ์ค ์ ์ฉ์ด๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์์ ๋ํ ์ ๋ณด๋ numa(7)๋ฅผ ๋ณด๋ผ.
get_mempolicy(2)๋ฅผ MPOL_F_MEMS_ALLOWED ํ๋๊ทธ๋ก ์ฌ์ฉํ๋ฉด ํ์ฌ cpuset์์ ํ์ฉํ๋ ๋
ธ๋๋ค์ ์งํฉ์ ์ป์ ์ ์๋ค. ์ฐธ๊ณ ๋ก ๊ทธ ์ ๋ณด๋ ์๋ ๋ด์ง ์๋์ผ๋ก ์ด๋ค์ง๋ cpuset ์ฌ๊ตฌ์ฑ์ผ๋ก ์ธํด ์ธ์ ๋ ๋ฐ๋ ์ ์๋ค.
์ด ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ง๋ค์ ์์น(๋
ธ๋)๊ฐ ์ง์ ์ฃผ์(mbind(2)) ๋ฐ/๋๋ ์ง์ ํ๋ก์ธ์ค(set_mempolicy(2))์ ๋ํด ์ค์ ํ ๋ฉ๋ชจ๋ฆฌ ์ ์ฑ
๊ณผ ์ด๊ธ๋๊ฒ ๋ ์๋ ์๋ค. ๋ค์ ๋งํด ๋ฉ๋ชจ๋ฆฌ ์ ์ฑ
์ด move_pages()์์ ์ฐ๋ ๋ชฉ์ ์ง ๋
ธ๋๋ฅผ ์ ์ฝํ์ง ์๋๋ค.
<numaif.h> ํค๋๋ glibc์ ํฌํจ๋์ด ์์ง ์์ผ๋ฉฐ libnuma-devel ๋ด์ง ๊ทธ์ ๋น์ทํ ํจํค์ง๋ฅผ ์ค์นํด์ผ ํ๋ค.
get_mempolicy(2), mbind(2), set_mempolicy(2), numa(3), numa_maps(5), cpuset(7), numa(7), migratepages(8), numastat(8)
2017-09-15