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

NAME

move_pages - ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ๋ณ„ ํŽ˜์ด์ง€๋“ค์„ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ

SYNOPSIS

#include <numaif.h>

long move_pages(int pid, unsigned long count, void **pages,
                const int *nodes, int *status, int flags);

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

DESCRIPTION

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 ๋ฐฐ์—ด์˜ ํŽ˜์ด์ง€ ์ƒํƒœ

status ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ์œผ๋กœ ๋‹ค์Œ ๊ฐ’๋“ค์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

0..MAX_NUMNODES
ํŽ˜์ด์ง€๊ฐ€ ์ž๋ฆฌํ•œ ๋…ธ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
-EACCES
ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งต ํ•˜๊ณ  ์žˆ์–ด์„œ MPOL_MF_MOVE_ALL์„ ์ง€์ •ํ•ด์•ผ๋งŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
-EBUSY
ํŽ˜์ด์ง€๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ด์–ด์„œ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋‹ค. ๋‚˜์ค‘์— ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ผ. ํŽ˜์ด์ง€๋กœ I/O๋ฅผ ํ•˜๋Š” ์ค‘์ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ปค๋„ ์„œ๋ธŒ์‹œ์Šคํ…œ์—์„œ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์žก๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
-EFAULT
์ œ๋กœ ํŽ˜์ด์ง€์ด๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งต ํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค.
-EIO
ํŽ˜์ด์ง€๋ฅผ ๋‚ด๋ ค ์“ธ ์ˆ˜ ์—†๋‹ค. ํŽ˜์ด์ง€๊ฐ€ ๋ณ€๊ฒฝ๋๋Š”๋ฐ ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ์ด์ „ ํ•จ์ˆ˜๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€๋ฅผ ์˜ฎ๊ธฐ๊ธฐ ์œ„ํ•ด์„  ์•„๋ž˜๋กœ ๊ธฐ๋กํ•ด์•ผ ํ•œ๋‹ค.
-EINVAL
๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์ด์ „ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŽ˜์ด์ง€๋ฅผ ๋‚ด๋ ค ์“ธ ์ˆ˜ ์—†๋‹ค.
-ENOENT
ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
-ENOMEM
๋Œ€์ƒ ๋…ธ๋“œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค.

RETURN VALUE

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

ERRORS

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
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

VERSIONS

๋ฆฌ๋ˆ…์Šค ๋ฒ„์ „ 2.6.18์—์„œ move_pages()๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ–ˆ๋‹ค.

CONFORMING TO

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

NOTES

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

get_mempolicy(2)๋ฅผ MPOL_F_MEMS_ALLOWED ํ”Œ๋ž˜๊ทธ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ cpuset์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๊ทธ ์ •๋ณด๋Š” ์ˆ˜๋™ ๋‚ด์ง€ ์ž๋™์œผ๋กœ ์ด๋ค„์ง€๋Š” cpuset ์žฌ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•ด ์–ธ์ œ๋“  ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽ˜์ด์ง€๋“ค์˜ ์œ„์น˜(๋…ธ๋“œ)๊ฐ€ ์ง€์ • ์ฃผ์†Œ(mbind(2)) ๋ฐ/๋˜๋Š” ์ง€์ • ํ”„๋กœ์„ธ์Šค(set_mempolicy(2))์— ๋Œ€ํ•ด ์„ค์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…๊ณผ ์–ด๊ธ‹๋‚˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…์ด move_pages()์—์„œ ์“ฐ๋Š” ๋ชฉ์ ์ง€ ๋…ธ๋“œ๋ฅผ ์ œ์•ฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

<numaif.h> ํ—ค๋”๋Š” glibc์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ libnuma-devel ๋‚ด์ง€ ๊ทธ์™€ ๋น„์Šทํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

SEE ALSO

get_mempolicy(2), mbind(2), set_mempolicy(2), numa(3), numa_maps(5), cpuset(7), numa(7), migratepages(8), numastat(8)


2017-09-15

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