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

NAME

get_mempolicy - μŠ€λ ˆλ“œμ˜ NUMA λ©”λͺ¨λ¦¬ μ •μ±… κ°€μ Έμ˜€κΈ°

SYNOPSIS

#include <numaif.h>

long get_mempolicy(int *mode, unsigned long *nodemask,
                   unsigned long maxnode, void *addr,
                   unsigned long flags);

-lnuma둜 링크.

DESCRIPTION

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)λ₯Ό 보라.

RETURN VALUE

성곡 μ‹œ get_mempolicy()λŠ” 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° 였λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄λ„λ‘ errnoλ₯Ό μ„€μ •ν•œλ‹€.

ERRORS

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 κ²½μš°λ“€μ΄ μžˆλ‹€.)

VERSIONS

λ¦¬λˆ…μŠ€ 컀널 버전 2.6.7μ—μ„œ get_mempolicy() μ‹œμŠ€ν…œ 호좜이 μΆ”κ°€λ˜μ—ˆλ‹€.

CONFORMING TO

이 μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ λ¦¬λˆ…μŠ€ μ „μš©μ΄λ‹€.

NOTES

라이브러리 지원에 λŒ€ν•œ μ •λ³΄λŠ” numa(7)λ₯Ό 보라.

SEE ALSO

getcpu(2), mbind(2), mmap(2), set_mempolicy(2), numa(3), numa(7), numactl(8)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️