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

NAME

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

SYNOPSIS

#include <numaif.h>

long migrate_pages(int pid, unsigned long maxnode,
                   const unsigned long *old_nodes,
                   const unsigned long *new_nodes);

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

DESCRIPTION

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 ํŠน๊ถŒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์˜ฎ๊ธด๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ migrate_pages()๋Š” ์˜ฎ๊ธธ ์ˆ˜ ์—†์—ˆ๋˜ ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (์ฆ‰ 0์ด ๋ฐ˜ํ™˜๋˜๋ฉด ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์˜ฎ๊ฒผ๋‹ค๋Š” ๋œป์ด๋‹ค.) ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

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์— ์ผ์น˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.

VERSIONS

๋ฆฌ๋ˆ…์Šค ๋ฒ„์ „ 2.6.16์—์„œ migrate_pages() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์ฒ˜์Œ ๋“ฑ์žฅํ–ˆ๋‹ค.

CONFORMING TO

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

NOTES

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์›์— ๋Œ€ํ•œ ์ •๋ณด๋Š” 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 ๋‚ด์ง€ ๊ทธ์™€ ๋น„์Šทํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

SEE ALSO

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

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