migrate_pages(2) - wariua/manpages-ko GitHub Wiki
migrate_pages - ํ๋ก์ธ์ค์ ๋ชจ๋ ํ์ด์ง๋ค์ ๋ค๋ฅธ ๋ ธ๋๋ค๋ก ์ฎ๊ธฐ๊ธฐ
#include <numaif.h>
long migrate_pages(int pid, unsigned long maxnode,
const unsigned long *old_nodes,
const unsigned long *new_nodes);
-lnuma
๋ก ๋งํฌ.
migrate_pages()
๋ ํ๋ก์ธ์ค pid
์ ํ์ด์ง๋ค ์ค ๋ฉ๋ชจ๋ฆฌ ๋
ธ๋ old_nodes
์ ์๋ ๊ฒ๋ค์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ๋
ธ๋ new_nodes
๋ก ์ฎ๊ธฐ๋ ค๊ณ ์๋ํ๋ค. old_nodes
์ ์ด๋ ๋
ธ๋์๋ ์์นํด ์์ง ์์ ํ์ด์ง๋ ์ด๋ํ์ง ์๋๋ค. ์ปค๋์์๋ new_nodes
๋ก ์ด๋์ํค๋ ๋์ old_nodes
๋ด์ ์๋์ ์์ ๊ด๊ณ๋ฅผ ๊ฐ๊ธ์ ์ ์งํ๋ค.
old_nodes
๋ฐ new_nodes
์ธ์๋ ๋
ธ๋ ๋ฒํธ๋ค์ ๋นํธ ๋ง์คํฌ์ ๋ํ ํฌ์ธํฐ์ด๋ฉฐ, ๊ฐ ๋ง์คํฌ์ ์ต๋ maxnode
๊ฐ ๋นํธ๊ฐ ์๋ค. ๊ทธ ๋ง์คํฌ๋ค์ ๋ถํธ ์๋ long
์ ์๋ค์ ๋ฐฐ์ด ํํ๋ก ์ ์งํ๋ค. (๋ง์ง๋ง long
์ ์์์ maxnode
๋ก ์ง์ ํ ๊ฒ ๋๋จธ์ ๋นํธ๋ค์ ๋ฌด์ํ๋ค.) maxnode
์ธ์๋ ๋นํธ ๋ง์คํฌ ๋ด์ ๊ฐ์ฅ ํฐ ๋
ธ๋ ๋ฒํธ์ 1์ ๋ํ ๊ฒ์ด๋ค. (mbind(2)์๋ ๊ฐ์ง๋ง select(2)์๋ ๋ค๋ฅด๋ค.)
pid
์ธ์๋ ์ด๋ํ ํ์ด์ง๋ค์ ์์ ํ ํ๋ก์ธ์ค์ ID์ด๋ค. ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ์ด์ง๋ค์ ์ฎ๊ธฐ๋ ค๋ฉด ํธ์ถ์์๊ฒ ํน๊ถ(CAP_SYS_NICE
)์ด ์๊ฑฐ๋ ํธ์ถ ํ๋ก์ธ์ค์ ์ค์ ๋ด์ง ์คํจ ์ฌ์ฉ์ ID๊ฐ ๋์ ํ๋ก์ธ์ค์ ์ค์ ๋ด์ง saved-set ์ฌ์ฉ์ ID์ ์ผ์นํด์ผ ํ๋ค. pid
๊ฐ 0์ด๋ฉด migrate_pages()
๋ ํธ์ถ ํ๋ก์ธ์ค์ ํ์ด์ง๋ฅผ ์ฎ๊ธด๋ค.
๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ํ๋ ํ์ด์ง๋ค์ ๊ฐ์ ํ๋ก์ธ์ค์๊ฒ CAP_SYS_NICE
ํน๊ถ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ฎ๊ธด๋ค.
์ฑ๊ณต ์ migrate_pages()
๋ ์ฎ๊ธธ ์ ์์๋ ํ์ด์ง ๊ฐ์๋ฅผ ๋ฐํํ๋ค. (์ฆ 0์ด ๋ฐํ๋๋ฉด ๋ชจ๋ ํ์ด์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฎ๊ฒผ๋ค๋ ๋ป์ด๋ค.) ์ค๋ฅ ์ -1์ ๋ฐํํ๋ฉฐ ์ค๋ฅ๋ฅผ ๋ํ๋ด๋๋ก errno
๋ฅผ ์ค์ ํ๋ค.
EFAULT
-
old_nodes
/new_nodes
์maxnode
๋ก ์ง์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์์ ์ผ๋ถ ๋ด์ง ์ ์ฒด๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ ์ฃผ์ ๊ณต๊ฐ ๋ฐ์ ๊ฐ๋ฆฌํจ๋ค. EINVAL
-
maxnode
์ ์ง์ ํ ๊ฐ์ด ์ปค๋์์ ๋๋ ์ ํ์น๋ฅผ ์ด๊ณผํ๋ค. ๋๋ ์ง์ํ๋ ๊ฐ์ฅ ํฐ ๋ ธ๋๋ณด๋ค ํฐ ๋ ธ๋ ID๋ฅผold_nodes
๋new_nodes
์ ํ ๊ฐ ์ด์ ์ง์ ํ๋ค. ๋๋new_nodes
๋ก ์ง์ ํ ๋ ธ๋ ID๋ค ์ค์์ ์จ๋ผ์ธ์ด๊ณ ํ๋ก์ธ์ค์ ํ์ฌ cpuset ๋ฌธ๋งฅ์์ ํ์ฉ๋๋ ๊ฒ ์๊ฑฐ๋, ์ง์ ํ ๋ ธ๋๋ค ์ค์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ด๊ณ ์๋ ๊ฒ ์๋ค. EPERM
-
pid
๋ก ์ง์ ํ ํ๋ก์ธ์ค์ ํ์ด์ง๋ฅผ ์ฎ๊ธธ ํน๊ถ(CAP_SYS_NICE
)์ด ๋ถ์กฑํ๊ฑฐ๋, ์ง์ ํ ๋์ ๋ ธ๋์ ์ ๊ทผํ๊ธฐ ์ํ ํน๊ถ(CAP_SYS_NICE
)์ด ๋ถ์กฑํ๋ค. ESRCH
-
pid
์ ์ผ์นํ๋ ํ๋ก์ธ์ค๋ฅผ ์ฐพ์ ์ ์๋ค.
๋ฆฌ๋
์ค ๋ฒ์ 2.6.16์์ migrate_pages()
์์คํ
ํธ์ถ์ด ์ฒ์ ๋ฑ์ฅํ๋ค.
์ด ์์คํ ํธ์ถ์ ๋ฆฌ๋ ์ค ์ ์ฉ์ด๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์์ ๋ํ ์ ๋ณด๋ numa(7)๋ฅผ ๋ณด๋ผ.
get_mempolicy(2)๋ฅผ MPOL_F_MEMS_ALLOWED
ํ๋๊ทธ๋ก ์ฌ์ฉํ๋ฉด ํธ์ถ ํ๋ก์ธ์ค์ cpuset์์ ํ์ฉํ๋ ๋
ธ๋๋ค์ ์งํฉ์ ์ป์ ์ ์๋ค. ์ฐธ๊ณ ๋ก ๊ทธ ์ ๋ณด๋ ์๋ ๋ด์ง ์๋์ผ๋ก ์ด๋ค์ง๋ cpuset ์ฌ๊ตฌ์ฑ์ผ๋ก ์ธํด ์ธ์ ๋ ๋ฐ๋ ์ ์๋ค.
migrate_pages()
๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ง๋ค์ ์์น(๋
ธ๋)๊ฐ ์ง์ ์ฃผ์(mbind(2)) ๋ฐ/๋๋ ์ง์ ํ๋ก์ธ์ค(set_mempolicy(2))์ ๋ํด ์ค์ ํ ๋ฉ๋ชจ๋ฆฌ ์ ์ฑ
๊ณผ ์ด๊ธ๋๊ฒ ๋ ์๋ ์๋ค. ๋ค์ ๋งํด ๋ฉ๋ชจ๋ฆฌ ์ ์ฑ
์ด migrate_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)
๋ฆฌ๋
์ค ์ปค๋ ์์ค ํธ๋ฆฌ์ Documentation/vm/page_migration.rst
2019-03-06