getcpu(2) - wariua/manpages-ko GitHub Wiki
getcpu - νΈμΆ μ€λ λκ° νμ¬ λκ³ μλ CPU λ° NUMA λ Έλ μμλ΄κΈ°
#include <linux/getcpu.h>
int getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache);
μ£Όμ: μ΄ μμ€ν νΈμΆμ λν glibc λνΌκ° μλ€. NOTES μ°Έκ³ .
getcpu()
μμ€ν
νΈμΆμ νΈμΆ μ€λ λ λ΄μ§ νλ‘μΈμ€κ° νμ¬ λκ³ μλ νλ‘μΈμ λ° λ
Έλλ₯Ό νμΈνμ¬ μ΄λ₯Ό cpu
λ° node
μΈμκ° κ°λ¦¬ν€λ μ μλ€μ μ¨λ£λλ€. νλ‘μΈμλ CPUλ₯Ό μλ³ν΄ μ£Όλ μ μΌν μμ μ μμ΄λ€. λ
Έλλ NUMA λ
Έλλ₯Ό μλ³ν΄ μ£Όλ μ μΌν μμ μλ³μμ΄λ€. cpu
λ node
μ€ νμͺ½μ΄ NULLμ΄λ©΄ ν΄λΉ ν¬μΈν°λ‘λ μ¨λ£μ§ μλλ€.
μ΄ μμ€ν νΈμΆμ μΈ λ²μ§Έ μΈμλ μμ¦ μ°μ§ μμΌλ©° 리λ μ€ 2.6.23 λ΄μ§ μ΄μ λ²μ μ λν μ΄μμ±μ΄ νμν κ²½μ°κ° μλλ©΄ NULLλ‘ μ§μ νλ κ² μ’λ€. (NOTES μ°Έκ³ .)
cpu
μ λ€μ΄κ°λ μ λ³΄κ° μ΅μ μ΄λΌκ³ 보μ₯λλ κ²μ νΈμΆ μμ λ§μ΄λ€. sched_setaffinity(2)λ₯Ό μ΄μ©ν΄ CPU μΉνμ±μ κ³ μ νμ§ μμλ€λ©΄ 컀λμ΄ μΈμ λ CPUλ₯Ό λ°κΎΈμμ μ μλ€. (μ€μΌμ€λ¬μμ μΊμ μ¨λ μ μ§λ₯Ό μν΄ CPU μ¬μ΄ μ΄λμ μ΅μννλ € νκΈ° λλ¬Έμ 보ν΅μ κ·Έλ° μΌμ΄ μΌμ΄λμ§ μλλ€. νμ§λ§ κ°λ₯νλ€.) νΈμΆμλ cpu
λ° node
λ‘ λ°νλ μ λ³΄κ° νΈμΆ λ°ν μμ μλ λ μ΄μ μ΅μ μ΄ μλ κ°λ₯μ±μ κ°μν΄μΌ νλ€.
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EFAULT
- μΈμκ° νΈμΆ νλ‘μΈμ€μ μ£Όμ κ³΅κ° λ°μ κ°λ¦¬ν€κ³ μλ€.
x86-64 λ° i386μμλ 컀λ 2.6.19μμ getcpu()
κ° μΆκ°λμλ€. glibc 2.29μμ λΌμ΄λΈλ¬λ¦¬ μ§μμ΄ μΆκ°λμλ€. (κ·Έ μ glibc λ²μ μμλ μ΄ μμ€ν
νΈμΆμ λνΌλ₯Ό μ 곡νμ§ μμμ syscall(2)μ μ¨μΌ νλ€.)
getcpu()
λ 리λ
μ€ μ μ©μ΄λ€.
리λ
μ€μμλ μ΄ νΈμΆμ κ°κΈμ λΉ λ₯΄κ² λ§λ€λ €κ³ λ
Έλ ₯νλ€. (μΌλΆ μν€ν
μ²μμλ vdso(7) λ΄ κ΅¬νμ ν΅ν΄ 그리νλ€.) getcpu()
μ λͺ©μ μ νλ‘κ·Έλ¨μμ CPUλ³ λ°μ΄ν° κ΄λ ¨ μ΅μ νλ NUMA μ΅μ νλ₯Ό ν μ μκ² νλ κ²μ΄λ€.
tcache
μΈμλ 리λ
μ€ 2.6.24λΆν° μ¬μ©νμ§ μλλ€. κ·Έ μ 컀λμμλ μ΄ μΈμκ° NULLμ΄ μλλ©΄ μ€λ λ λ‘컬 μ μ₯μ λ΄μ νΈμΆμκ° ν λΉν λ²νΌμ λν ν¬μΈν°λ₯Ό λνλμΌλ©° getcpu()
λ₯Ό μν μΊμ± λ©μ»€λμ¦μ κ·Έ λ²νΌλ₯Ό μ¬μ©νλ€. μΊμλ₯Ό μ¬μ©νλ©΄ getcpu()
νΈμΆμ λΉ λ₯΄κ² λ§λ€ μ μμμ§λ§ κ·Έμ λν λΉμ©μ λ°νλ μ λ³΄κ° κ΅¬μμ΄ λ κ°λ₯μ±μ΄ μμ£Ό μ‘°κΈ μλ€λ κ²μ΄μλ€. CPU μ¬μ΄μμ μ€λ λλ₯Ό μ΄μ ν λ μΊμ± λ©μ»€λμ¦μ΄ λ¬Έμ λ₯Ό μ λ°νλ€κ³ 보μμ μ§κΈμ κ·Έ μΈμλ₯Ό 무μνλ€.
mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7), vdso(7)
2019-03-06