get_mempolicy(2) - wariua/manpages-ko GitHub Wiki
get_mempolicy - μ€λ λμ NUMA λ©λͺ¨λ¦¬ μ μ± κ°μ Έμ€κΈ°
#include <numaif.h>
long get_mempolicy(int *mode, unsigned long *nodemask,
unsigned long maxnode, void *addr,
unsigned long flags);
-lnuma
λ‘ λ§ν¬.
get_mempolicy()
λ flags
μ€μ μ λ°λΌμ νΈμΆ μ€λ λ λλ λ©λͺ¨λ¦¬ μ£Όμμ NUMA μ μ±
μ κ°μ Έμ¨λ€.
NUMA λ¨Έμ μλ CPUλ€κ³Ό κ±°λ¦¬κ° λ€λ₯Έ μ¬λ¬ κ°μ λ©λͺ¨λ¦¬ 컨νΈλ‘€λ¬κ° μλ€. λ©λͺ¨λ¦¬ μ μ± μ μ€λ λλ₯Ό μν λ©λͺ¨λ¦¬λ₯Ό μ΄λ λ Έλμμ ν λΉν μ§ κ·μ νλ€.
flags
λ₯Ό 0μΌλ‘ μ§μ νλ©΄ νΈμΆ μ€λ λμ (set_mempolicy(2)λ‘ μ€μ ν) κΈ°λ³Έ μ μ±
μ λν μ 보λ₯Ό mode
λ° nodemask
κ° κ°λ¦¬ν€λ λ²νΌλ‘ λ°ννλ€. μ΄ μΈμλ€λ‘ λ°νλλ κ°μΌλ‘ set_mempolicy(2) νλ©΄ get_mempolicy()
νΈμΆ μμ μ μνλ‘ μ€λ λμ μ μ±
μ 볡μν μ μλ€. flags
κ° 0μΌ λ addr
μ NULLλ‘ μ§μ ν΄μΌ νλ€.
flags
μ MPOL_F_MEMS_ALLOWED
λ₯Ό μ§μ νλ©΄ (리λ
μ€ 2.6.24λΆν° μ¬μ© κ°λ₯) mode
μΈμλ 무μνλ©° λ
Έλ(λ©λͺ¨λ¦¬)λ€μ μ§ν©μ nodemask
λ‘ λ°ννλλ°, κ·Έ λ
Έλλ€μ μ€λ λμμ μ΄ν mbind(2)λ (λͺ¨λ νλκ·Έ μλ) set_mempolicy(2) νΈμΆμμ μ§μ ν μ μλ€. MPOL_F_MEMS_ALLOWED
λ₯Ό MPOL_F_ADDR
μ΄λ MPOL_F_NODE
μ ν¨κ» μΈ μ μλ€.
flags
μ MPOL_F_ADDR
μ μ§μ νλ©΄ addr
μ μ€ λ©λͺ¨λ¦¬ μ£Όμμ μ μ©λλ μ μ±
μ λν μ 보λ₯Ό λ°ννλ€. mbind(2)λ numa(3)μμ μ€λͺ
νλ ν¬νΌ ν¨μλ€ μ€ νλλ₯Ό μ¬μ©ν΄ addr
μ ν¬ν¨ν λ©λͺ¨λ¦¬ λ²μμ μ μ±
μ μ€μ νλ€λ©΄ κ·Έ μ μ±
μ΄ μ€λ λμ κΈ°λ³Έ μ μ±
κ³Ό λ€λ₯Ό μ μλ€.
mode
μΈμκ° NULLμ΄ μλ κ²½μ° get_mempolicy()
λ μμ² λ°μ NUMA μ μ±
μ μ μ±
λͺ¨λμ μ νμ μΈ λͺ¨λ νλκ·Έλ₯Ό κ·Έ μΈμκ° κ°λ¦¬ν€λ μμΉμ μ μ₯νκ² λλ€. nodemask
κ° NULLμ΄ μλλ©΄ μ μ±
μ μ°κ³λ λ
Έλ λ§μ€ν¬λ₯Ό κ·Έ μΈμκ° κ°λ¦¬ν€λ μμΉμ μ μ₯νκ² λλ€. maxnode
λ nodemask
μ μ μ₯ν μ μλ λ
Έλ ID μλ₯Ό λνλΈλ€. μ¦ κ°μ₯ ν° λ
Έλ ID λνκΈ° 1μ΄λ€. maxnode
λ‘ μ§μ ν κ°μ νμ sizeof(unsigned long)*8
μ λ°°μλ‘ μ¬λ¦Ό νλ€.
flags
μ MPOL_F_NODE
μ MPOL_F_ADDR
μ λͺ¨λ μ§μ ν κ²½μ° get_mempolicy()
λ μ£Όμ addr
μ΄ ν λΉλ λ
Έλμ λ
Έλ IDλ₯Ό mode
κ° κ°λ¦¬ν€λ μμΉλ‘ λ°ννλ€. μ§μ ν μ£Όμμ λν΄ ν λΉλ νμ΄μ§κ° μμ§ μμΌλ©΄ μ€λ λμμ κ·Έ μ£Όμμ μ½κΈ° (μ μ¬) μ κ·Όμ μνν κ²μ²λΌ νμ΄μ§λ₯Ό ν λΉνκ³ μ κ·Έ νμ΄μ§κ° ν λΉλ λ
Έλμ IDλ₯Ό λ°ννλ€.
flags
μ MPOL_F_NODE
λ μ§μ νκ³ MPOL_F_ADDR
μ μ§μ νμ§ μμμΌλ©° μ€λ λμ νμ¬ μ μ±
μ΄ MPOL_INTERLEAVE
μΈ κ²½μ°μλ μ€λ λλ₯Ό μν΄ ν λΉλ λ΄λΆ 컀λ νμ΄μ§λ€μ μΈν°λ¦¬λΉμ μ°μΌ λ€μ λ
Έλμ λ
Έλ IDλ₯Ό NULL μλ mode
μΈμκ° κ°λ¦¬ν€λ μμΉμ λ°ννκ² λλ€. mmap(2) νΈμΆμ MAP_PRIVATE
νλκ·Έλ‘ μ¬μ©ν΄ μ½κΈ° μ κ·Όμ©μΌλ‘ λ§΅ ν νλ‘μΈμ€ λ©λͺ¨λ¦¬ λ²μλ€κ³Ό MAP_SHARED
νλκ·Έλ‘ μ¬μ©ν΄ λͺ¨λ μ κ·Όμ©μΌλ‘ λ§΅ ν λ©λͺ¨λ¦¬ λ²μλ€ λ΄μ λ©λͺ¨λ¦¬ λ§΅ νμΌλ€μ λν νμ΄μ§λ€μ΄ κ±°κΈ° ν¬ν¨λλ€.
λ€λ₯Έ νλκ·Έ κ°λ€μ μμ½λΌ μλ€.
κ°λ₯ν μ μ± λ€μ λν μκ°λ set_mempolicy(2)λ₯Ό 보λΌ.
μ±κ³΅ μ get_mempolicy()
λ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° μ€λ₯λ₯Ό λνλ΄λλ‘ errno
λ₯Ό μ€μ νλ€.
EFAULT
-
nodemask
μmaxnode
λ‘ μ§μ ν λ©λͺ¨λ¦¬ λ²μμ μΌλΆ λ΄μ§ μ μ²΄κ° μ κ·Ό κ°λ₯ν μ£Όμ κ³΅κ° λ°μ κ°λ¦¬ν¨λ€. EINVAL
-
maxnode
λ‘ μ§μ ν κ°μ΄ μμ€ν μμ μ§μνλ λ Έλ ID μλ³΄λ€ μλ€. λλflags
μMPOL_F_NODE
μMPOL_F_ADDR
μΈμ κ°μ μ§μ νλ€. λλflags
μMPOL_F_ADDR
μ μ§μ νκ³addr
μ΄ NULLμ΄κ±°λ,flags
μMPOL_F_ADDR
μ μ§μ νμ§ μμκ³addr
μ΄ NULLμ΄ μλλ€. λλflags
μMPOL_F_ADDR
μ΄ μλλΌMPOL_F_NODE
λ₯Ό μ§μ νκ³ νμ¬ μ€λ λ μ μ± μ΄MPOL_INTERLEAVE
κ° μλλ€. λλflags
μMPOL_F_MEMS_ALLOWED
λ₯ΌMPOL_F_ADDR
μ΄λMPOL_F_NODE
μ ν¨κ» μ§μ νλ€. (λ λ€λ₯ΈEINVAL
κ²½μ°λ€μ΄ μλ€.)
리λ
μ€ μ»€λ λ²μ 2.6.7μμ get_mempolicy()
μμ€ν
νΈμΆμ΄ μΆκ°λμλ€.
μ΄ μμ€ν νΈμΆμ 리λ μ€ μ μ©μ΄λ€.
λΌμ΄λΈλ¬λ¦¬ μ§μμ λν μ 보λ numa(7)λ₯Ό 보λΌ.
getcpu(2), mbind(2), mmap(2), set_mempolicy(2), numa(3), numa(7), numactl(8)
2017-09-15