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

NAME

getcpu - 호좜 μŠ€λ ˆλ“œκ°€ ν˜„μž¬ 돌고 μžˆλŠ” CPU 및 NUMA λ…Έλ“œ μ•Œμ•„λ‚΄κΈ°

SYNOPSIS

#include <linux/getcpu.h>

int getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache);

주의: 이 μ‹œμŠ€ν…œ ν˜ΈμΆœμ— λŒ€ν•œ glibc λž˜νΌκ°€ μ—†λ‹€. NOTES μ°Έκ³ .

DESCRIPTION

getcpu() μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ 호좜 μŠ€λ ˆλ“œ λ‚΄μ§€ ν”„λ‘œμ„ΈμŠ€κ°€ ν˜„μž¬ 돌고 μžˆλŠ” ν”„λ‘œμ„Έμ„œ 및 λ…Έλ“œλ₯Ό ν™•μΈν•˜μ—¬ 이λ₯Ό cpu 및 node μΈμžκ°€ κ°€λ¦¬ν‚€λŠ” μ •μˆ˜λ“€μ— μ¨λ„£λŠ”λ‹€. ν”„λ‘œμ„Έμ„œλŠ” CPUλ₯Ό 식별해 μ£ΌλŠ” μœ μΌν•œ μž‘μ€ μ •μˆ˜μ΄λ‹€. λ…Έλ“œλŠ” NUMA λ…Έλ“œλ₯Ό 식별해 μ£ΌλŠ” μœ μΌν•œ μž‘μ€ μ‹λ³„μžμ΄λ‹€. cpuλ‚˜ node 쀑 ν•œμͺ½μ΄ NULL이면 ν•΄λ‹Ή ν¬μΈν„°λ‘œλŠ” 써넣지 μ•ŠλŠ”λ‹€.

이 μ‹œμŠ€ν…œ 호좜의 μ„Έ 번째 μΈμžλŠ” μš”μ¦˜ μ“°μ§€ μ•ŠμœΌλ©° λ¦¬λˆ…μŠ€ 2.6.23 λ‚΄μ§€ 이전 버전에 λŒ€ν•œ 이식성이 ν•„μš”ν•œ κ²½μš°κ°€ μ•„λ‹ˆλ©΄ NULL둜 μ§€μ •ν•˜λŠ” 게 μ’‹λ‹€. (NOTES μ°Έκ³ .)

cpu에 λ“€μ–΄κ°€λŠ” 정보가 μ΅œμ‹ μ΄λΌκ³  보μž₯λ˜λŠ” 것은 호좜 μ‹œμ λ§Œμ΄λ‹€. sched_setaffinity(2)λ₯Ό μ΄μš©ν•΄ CPU μΉœν™”μ„±μ„ κ³ μ •ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ 컀널이 μ–Έμ œλ“  CPUλ₯Ό λ°”κΎΈμ—ˆμ„ 수 μžˆλ‹€. (μŠ€μΌ€μ€„λŸ¬μ—μ„œ μΊμ‹œ μ˜¨λ„ μœ μ§€λ₯Ό μœ„ν•΄ CPU 사이 이동을 μ΅œμ†Œν™”ν•˜λ € ν•˜κΈ° λ•Œλ¬Έμ— 보톡은 그런 일이 μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ κ°€λŠ₯ν•˜λ‹€.) ν˜ΈμΆœμžλŠ” cpu 및 node둜 λ°˜ν™˜λœ 정보가 호좜 λ°˜ν™˜ μ‹œμ μ—λŠ” 더 이상 μ΅œμ‹ μ΄ 아닐 κ°€λŠ₯성을 κ°μ•ˆν•΄μ•Ό ν•œλ‹€.

RETURN VALUE

성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EFAULT
μΈμžκ°€ 호좜 ν”„λ‘œμ„ΈμŠ€μ˜ μ£Όμ†Œ 곡간 밖을 가리킀고 μžˆλ‹€.

VERSIONS

x86-64 및 i386μ—μ„œλŠ” 컀널 2.6.19μ—μ„œ getcpu()κ°€ μΆ”κ°€λ˜μ—ˆλ‹€. glibc 2.29μ—μ„œ 라이브러리 지원이 μΆ”κ°€λ˜μ—ˆλ‹€. (κ·Έ μ „ glibc λ²„μ „μ—μ„œλŠ” 이 μ‹œμŠ€ν…œ 호좜의 래퍼λ₯Ό μ œκ³΅ν•˜μ§€ μ•Šμ•„μ„œ syscall(2)을 써야 ν–ˆλ‹€.)

CONFORMING TO

getcpu()λŠ” λ¦¬λˆ…μŠ€ μ „μš©μ΄λ‹€.

NOTES

λ¦¬λˆ…μŠ€μ—μ„œλŠ” 이 ν˜ΈμΆœμ„ 가급적 λΉ λ₯΄κ²Œ λ§Œλ“€λ €κ³  λ…Έλ ₯ν•œλ‹€. (일뢀 μ•„ν‚€ν…μ²˜μ—μ„œλŠ” vdso(7) λ‚΄ κ΅¬ν˜„μ„ 톡해 κ·Έλ¦¬ν•œλ‹€.) getcpu()의 λͺ©μ μ€ ν”„λ‘œκ·Έλž¨μ—μ„œ CPU별 데이터 κ΄€λ ¨ μ΅œμ ν™”λ‚˜ NUMA μ΅œμ ν™”λ₯Ό ν•  수 있게 ν•˜λŠ” 것이닀.

tcache μΈμžλŠ” λ¦¬λˆ…μŠ€ 2.6.24λΆ€ν„° μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έ μ „ μ»€λ„μ—μ„œλŠ” 이 μΈμžκ°€ NULL이 μ•„λ‹ˆλ©΄ μŠ€λ ˆλ“œ 둜컬 μ €μž₯μ†Œ 내에 ν˜ΈμΆœμžκ°€ ν• λ‹Ήν•œ 버퍼에 λŒ€ν•œ 포인터λ₯Ό λ‚˜νƒ€λƒˆμœΌλ©° getcpu()λ₯Ό μœ„ν•œ 캐싱 λ©”μ»€λ‹ˆμ¦˜μ— κ·Έ 버퍼λ₯Ό μ‚¬μš©ν–ˆλ‹€. μΊμ‹œλ₯Ό μ‚¬μš©ν•˜λ©΄ getcpu() ν˜ΈμΆœμ„ λΉ λ₯΄κ²Œ λ§Œλ“€ 수 μžˆμ—ˆμ§€λ§Œ 그에 λŒ€ν•œ λΉ„μš©μ€ λ°˜ν™˜λœ 정보가 ꡬ식이 될 κ°€λŠ₯성이 μ•„μ£Ό 쑰금 μžˆλ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€. CPU μ‚¬μ΄μ—μ„œ μŠ€λ ˆλ“œλ₯Ό 이전할 λ•Œ 캐싱 λ©”μ»€λ‹ˆμ¦˜μ΄ 문제λ₯Ό μœ λ°œν•œλ‹€κ³  λ³΄μ•„μ„œ μ§€κΈˆμ€ κ·Έ 인자λ₯Ό λ¬΄μ‹œν•œλ‹€.

SEE ALSO

mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7), vdso(7)


2019-03-06

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