Man page - move_pages(2)

Packages contains this manual

Available languages:

en fr ja ru

Manual

MOVE_PAGES

名 前
書 åŧ
čĒŦ 明
status 配 列 ãĢ æ ŧ į´ さ れ る ペ ãƒŧ ジ įŠļ 態
čŋ” り 値
エ ナ ãƒŧ
バ ãƒŧ ジ ョ ãƒŗ
æē– 拠
æŗ¨ 意
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

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 is the ID of the process in which pages are to be moved. If pid is 0, then move_pages () moves pages of the calling process.

To move pages in another process requires the following privileges:

*

Linux 4.12 äģĨ 前 ぎ ã‚Ģ ãƒŧ ネ ãƒĢ で は 、 å‘ŧ ãŗ å‡ē し 元 が į‰š 樊 ( CAP_SYS_NICE ) を 持 ãŖ ãĻ い る か 、 å‘ŧ ãŗ å‡ē し た プ ロ ã‚ģ ゚ ぎ 原 ãƒĻ ãƒŧ ã‚ļ ãƒŧ ID か 原 劚 ãƒĻ ãƒŧ ã‚ļ ãƒŧ ID が ペ ãƒŧ ジ į§ģ 動 寞 蹥 ぎ プ ロ ã‚ģ ゚ ぎ 原 ãƒĻ ãƒŧ ã‚ļ ãƒŧ ID か äŋ 存 set-user-ID ぎ お ãĄ ら か と 一 致 し ãĒ け れ ば ãĒ ら ãĒ い 。

*

The older rules allowed the caller to discover various virtual address choices made by the kernel that could lead to the defeat of address-space-layout randomization for a process owned by the same UID as the caller, the rules were changed starting with Linux 4.13. Since Linux 4.13, permission is governed by a ptrace access mode PTRACE_MODE_READ_REALCREDS check with respect to the target process; see ptrace (2).

count は į§ģ 動 す る ペ ãƒŧ ジ 数 で あ る 。 count ãĢ よ り pages , nodes , status ぎ 3 つ ぎ 配 列 ぎ 大 き さ が 厚 įžŠ さ れ る 。

pages は 、 į§ģ 動 す ず き ペ ãƒŧ ジ へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ ぎ 配 列 で あ り 、 各 ポ イ ãƒŗ ã‚ŋ ãƒŧ は ペ ãƒŧ ジ åĸƒ į•Œ ãĢ 揃 え た 値 を 指 厚 す ず き で あ る 。 pid で 指 厚 さ れ た プ ロ ã‚ģ ゚ で čĻ‹ え る ã‚ĸ ド ãƒŦ ゚ を 指 厚 す る 。

nodes は 、 各 ペ ãƒŧ ジ ぎ 希 望 ぎ į§ģ 動 å ´ 所 を į¤ē す 整 数 値 ぎ 配 列 で あ り 、 配 列 ぎ 各 čρ į´  は ノ ãƒŧ ド į•Ē åˇ で あ る 。 nodes ãĢ は NULL を 指 厚 す る こ と も で き 、 こ ぎ å ´ 合 ãĢ は move_pages () は お ぎ ペ ãƒŧ ジ も į§ģ 動 し ãĒ い が 、 各 ペ ãƒŧ ジ が įž 在 配 įŊŽ ã• れ ãĻ い る ノ ãƒŧ ド を 配 列 status ãĢ æ ŧ į´ し ãĻ čŋ” す 。 お ぎ ペ ãƒŧ ジ を į§ģ 動 す る åŋ… čρ が あ る か を 判 断 す る た め ãĢ 、 各 ペ ãƒŧ ジ ぎ įŠļ 態 ぎ 取 åž— が åŋ… čρ ãĒ å ´ 合 も あ る 。

status is an array of integers that return the status of each page. The array contains valid values only if move_pages () did not return an error. Preinitialization of the array to a value which cannot represent a real numa node or valid error of status array could help to identify pages that have been migrated.

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

そ ぎ ペ ãƒŧ ジ が zero page で あ る か 、 そ ぎ ãƒĄ ãƒĸ ãƒĒ ãƒŧ 領 域 は そ ぎ プ ロ ã‚ģ ゚ ãĢ よ り マ ッ プ さ れ ãĻ い ãĒ い 。

-EIO

ペ ãƒŧ ジ を 書 き æˆģ す (write back) こ と が で き ãĒ い 。 ペ ãƒŧ ジ が dirty で 、 フ ã‚Ą イ ãƒĢ ã‚ˇ ゚ テ ム が dirty ãĒ ペ ãƒŧ ジ を į§ģ 動 で き る よ う ãĒ į§ģ 動 抟 čƒŊ を 提 供 し ãĻ い ãĒ い た め 、 そ ぎ ペ ãƒŧ ジ を į§ģ 動 す る た め ãĢ は ペ ãƒŧ ジ を 書 き æˆģ さ ãĒ け れ ば ãĒ ら ãĒ い 。

-EINVAL

dirty ãĒ ペ ãƒŧ ジ を į§ģ 動 で き ãĒ い 。 フ ã‚Ą イ ãƒĢ ã‚ˇ ゚ テ ム が dirty ãĒ ペ ãƒŧ ジ を į§ģ 動 す る た め ぎ 抟 čƒŊ を 提 供 し ãĻ お ら ず 、 ペ ãƒŧ ジ を 書 き æˆģ す čƒŊ 力 も ãĒ い 。

-ENOENT

ペ ãƒŧ ジ が 存 在 し ãĒ い 。

-ENOMEM

į§ģ 動 先 ぎ ノ ãƒŧ ド で ãƒĄ ãƒĸ ãƒĒ ãƒŧ を įĸē äŋ す る こ と が で き ãĒ い 。

čŋ” り 値

On success move_pages () returns zero. On error, it returns -1, and sets errno to indicate the error. If positive value is returned, it is the number of nonmigrated pages.

エ ナ ãƒŧ

Positive value

The number of nonmigrated pages if they were the result of nonfatal reasons (since Linux 4.17). E2BIG Too many pages to move. Since Linux 2.6.29, the kernel no longer generates this error.

EACCES

į§ģ 動 先 ぎ ノ ãƒŧ ド ぎ い ず れ か が įž 在 ぎ CPU 集 合 で は 訹 可 さ れ ãĻ い ãĒ い 。

EFAULT

パ ナ ãƒĄ ãƒŧ ã‚ŋ ãƒŧ 配 列 ãĢ ã‚ĸ ク ã‚ģ ゚ で き ãĒ か ãŖ た 。

EINVAL

flags ãĢ MPOL_MF_MOVE で も MPOL_MF_MOVE_ALL で も ãĒ い 値 が 指 厚 さ れ た か 、 ã‚Ģ ãƒŧ ネ ãƒĢ ゚ ãƒŦ ッ ド ぎ ペ ãƒŧ ジ を į§ģ 動 さ せ よ う と し た 。

ENODEV

į§ģ 動 先 ぎ ノ ãƒŧ ド ぎ い ず れ か が ã‚Ē ãƒŗ ナ イ ãƒŗ で ãĒ い 。

EPERM

å‘ŧ ãŗ å‡ē し 元 は MPOL_MF_MOVE_ALL を 指 厚 し た が 、 十 分 ãĒ į‰š 樊 ( CAP_SYS_NICE ) を 持 ãŖ ãĻ い ãĒ い 。 ぞ た は 、 å‘ŧ ãŗ å‡ē し 元 が äģ– ãŽ ãƒĻ ãƒŧ ã‚ļ ãƒŧ ãĢ åąž す る プ ロ ã‚ģ ゚ ぎ ペ ãƒŧ ジ を į§ģ 動 し よ う と し た が 、 そ れ を 行 え る だ け ぎ į‰š 樊 ( CAP_SYS_NICE ) を 持 ãŖ ãĻ い ãĒ か ãŖ た 。

ESRCH

プ ロ ã‚ģ ゚ が 存 在 し ãĒ い 。

バ ãƒŧ ジ ョ ãƒŗ

move_pages () は 、 バ ãƒŧ ジ ョ ãƒŗ 2.6.18 で 初 め ãĻ Linux ãĢ į™ģ å ´ し た 。

æē– 拠

こ ぎ ã‚ˇ ゚ テ ム ã‚ŗ ãƒŧ ãƒĢ は Linux å›ē 有 で あ る 。

æŗ¨ 意

ナ イ ブ ナ ãƒĒ ãĢ よ る ã‚ĩ ポ ãƒŧ ト ãĢ つ い ãĻ は numa (7) を 参 į…§ 。

įž 在 ぎ CPU 集 合 で 訹 可 さ れ ãĻ い る ノ ãƒŧ ド ぎ 集 合 を 取 åž— す る ãĢ は 、 フ ナ グ MPOL_F_MEMS_ALLOWED を 指 厚 し ãĻ get_mempolicy (2) を äŊŋ ᔍ す れ ば よ い 。 取 åž— し た 情 å ą は 、 CPU 集 合 ぎ 手 動 ぞ た は č‡Ē 動 で ぎ 再 構 成 ãĢ よ り い つ äŊ• 時 変 化 し ãĻ し ぞ う か 分 か ら ãĒ い 。

こ ぎ é–ĸ 数 を äŊŋ ᔍ す る と 、 ペ ãƒŧ ジ ぎ äŊ įŊŽ (ノ ãƒŧ ド ) が 指 厚 さ れ た ã‚ĸ ド ãƒŦ ゚ ãĢ 寞 し ãĻ 設 厚 さ れ た ãƒĄ ãƒĸ ãƒĒ ãƒŧ ポ ãƒĒ ã‚ˇ ãƒŧ ( 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)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。