posix_fadvise(2) - wariua/manpages-ko GitHub Wiki
posix_fadvise - νμΌ λ°μ΄ν° μ κ·Ό λ°©μμ 미리 μ μΈνκΈ°
#include <fcntl.h>
int posix_fadvise(int fd, off_t offset, off_t len, int advice);
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
posix_fadvise()
: _POSIX_C_SOURCE >= 200112L
νλ‘κ·Έλ¨μμ posix_fadvise()
λ₯Ό μ¬μ©ν΄ ν₯ν νΉμ ν¨ν΄μΌλ‘ νμΌ λ°μ΄ν°μ μ κ·Όνκ² λ€λ μλλ₯Ό μ μΈν μ μλ€. κ·Έλ¬λ©΄ 컀λμ΄ μ μ ν μ΅μ νλ₯Ό μνν μ μκ² λλ€.
fd
κ° κ°λ¦¬ν€λ νμΌ λ΄μμ offset
μμ μμν΄ len
λ°μ΄νΈλ§νΌ (len
μ΄ 0μ΄λ©΄ νμΌ λκΉμ§) μ΄μ΄μ§λ (κΌ μ‘΄μ¬ν΄μΌ νλ κ²μ μλ) μμμ advice
λ₯Ό μ μ©νλ€. advice
μλ ꡬμλ ₯μ΄ μμΌλ©° κ·Έμ μμ© μ
μ₯μμμ μμμΌ λΏμ΄λ€.
advice
μ λ€μ κ°μ΄ κ°λ₯νλ€.
POSIX_FADV_NORMAL
- μ§μ ν λ°μ΄ν°μ λν μ κ·Ό ν¨ν΄μ κ΄ν΄ μμ©μμ ν΄ μ€ μ‘°μΈμ΄ μμμ λνλΈλ€. μ΄λ¦° νμΌμ μ무 μ‘°μΈλ μ£Όμ§ μμΌλ©΄ κΈ°λ³ΈμΌλ‘ μμ νλ κ°μ΄λ€.
POSIX_FADV_SEQUENTIAL
- μμ©μμ μ§μ ν λ°μ΄ν°μ μμ°¨μ μΌλ‘ (μ€νμ μ΄ μμ λ°μ΄ν°λ₯Ό λ¨Όμ μ½λ μμΌλ‘) μ κ·Όν μμ μ΄λ€.
POSIX_FADV_RANDOM
- μ§μ ν λ°μ΄ν°μ μμ μμλ‘ μ κ·Όνλ € νλ€.
POSIX_FADV_NOREUSE
-
μ§μ ν λ°μ΄ν°μ ν λ²λ§ μ κ·Όνλ € νλ€.
2.6.18 μ μ 컀λμμ
POSIX_FADV_NOREUSE
λPOSIX_FADV_WILLNEED
μ λμμ΄ κ°μλ€. λ²κ·Έμλ κ² κ°λ€. 컀λ 2.6.18λΆν° μ΄ νλκ·Έλ no-opμ΄λ€. POSIX_FADV_WILLNEED
-
μ§μ ν λ°μ΄ν°μ μ‘°λ§κ° μ κ·Όνλ € νλ€.
POSIX_FADV_WILLNEED
λ μ§μ ν μμμ νμ΄μ§ μΊμλ‘ μ½μ΄ λ€μ΄λ λ ΌλΈλ‘ λμμ κ°μνλ€. κ°μ λ©λͺ¨λ¦¬ λΆνμ λ°λΌ μ½λ λ°μ΄ν° μμ 컀λμ΄ μ€μΌ μλ μλ€. (λ³΄ν΅ λͺ λ©κ°λ°μ΄νΈ μ λλ μμ ν μΆ©μ‘±λκ³ κ·Έ μ΄μμΌλ‘λ μ μ°μ§ μλλ€.) POSIX_FADV_DONTNEED
-
μ§μ ν λ°μ΄ν°μ λΉλΆκ°μ μ κ·Όνμ§ μμ κ²μ΄λ€.
POSIX_FADV_DONTNEED
λ μ§μ ν μμκ³Ό μ°κ³λ μΊμ± λ νμ΄μ§λ€μ ν΄μ μλνλ€. μλ₯Ό λ€μ΄ ν° νμΌμ μ€νΈλ¦¬λ° ν λ μ μ©νλ€. νλ‘κ·Έλ¨μμ μ΄λ―Έ μ¬μ©ν λ°μ΄ν°λ₯Ό μΊμμμ ν΄μ νλΌκ³ μ£ΌκΈ°μ μΌλ‘ 컀λμκ² μμ²ν μ μκ³ , κ·Έλ¬λ©΄ μΊμ λ΄μ λ μ μ©ν νμ΄μ§λ€μ΄ νκΈ°λμ§ μμ μ μλ€.νμ΄μ§ μΌλΆλ§ νκΈ°νλ μμ²μ 무μνλ€. λΆνμν λ°μ΄ν°λ₯Ό νκΈ°νλ κ²λ³΄λ€ νμν λ°μ΄ν°λ₯Ό 보쑴νλ μͺ½μ΄ μ€μνλ€. λ°μ΄ν° νκΈ°λ₯Ό κ³ λ €νκ² νλ €λ©΄
offset
κ³Όlen
μ΄ νμ΄μ§μ μ λ ¬λμ΄ μμ΄μΌ νλ€.μ§μ μμ λ΄μ λ³κ²½λ νμ΄μ§λ€μ ꡬνμ²΄κ° κΈ°λ° μ₯μΉλ‘ κΈ°λ‘νλ € μλν μλ μλ€. νμ§λ§ μ΄λ₯Ό 보μ₯νμ§λ μλλ€. κΈ°λ‘ μ λ λ³κ²½ νμ΄μ§κ° μμΌλ©΄ ν΄μ λμ§ μμ κ²μ΄λ€. λ³κ²½λ νμ΄μ§κ° ν΄μ λκ² νκ³ μΆμΌλ©΄ μμ©μμ λ¨Όμ fsync(2)λ fdatasync(2)λ₯Ό νΈμΆν΄μΌ ν κ²μ΄λ€.
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ μ€λ₯ λ²νΈλ₯Ό λ°ννλ€.
EBADF
-
fd
μΈμκ° μ ν¨ν νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EINVAL
-
advice
μ μ ν¨νμ§ μμ κ°μ μ§μ νλ€. ESPIPE
- μ§μ ν νμΌ λμ€ν¬λ¦½ν°κ° νμ΄νλ FIFOλ₯Ό κ°λ¦¬ν€κ³ μλ€. (POSIXμμ λͺ
μΈνλ μ€λ₯λ
ESPIPE
μ΄μ§λ§ 컀λ λ²μ 2.6.16 μ μ 리λ μ€λ μ΄ κ²½μ°EINVAL
μ λ°ννλ€.)
리λ
μ€ 2.5.60μμ 컀λ μ§μμ΄ μ²μ λ±μ₯νλ€. κΈ°λ° μμ€ν
νΈμΆμ μ΄λ¦μ΄ fadvise64()
μλ€. glibc λ²μ 2.2λΆν° λνΌ ν¨μ posix_fadvise()
λ₯Ό ν΅ν΄ λΌμ΄λΈλ¬λ¦¬ μ§μμ΄ μ΄λ€μ‘λ€.
리λ
μ€ 3.18λΆν° κΈ°λ° μμ€ν
νΈμΆ μ§μμ΄ μ νμ μ΄λ€. CONFIG_ADVISE_SYSCALLS
κ΅¬μ± μ΅μ
μ€μ μ λ°λΌ μ ν΄μ§λ€.
POSIX.1-2001, POSIX.1-2008. μ°Έκ³ λ‘ POSIX.1-2003 TC1μμ len
μΈμμ νμ
μ΄ size_t
μμ off_t
λ‘ λ°λμλ€.
리λ
μ€μμ POSIX_FADV_NORMAL
μ 미리 μ½κΈ° μλλ₯Ό κΈ°λ° μ₯μΉλ³ κΈ°λ³Έκ°μΌλ‘ μ€μ νλ€. POSIX_FADV_SEQUENTIAL
μ λ λ°° ν¬κΈ°λ‘ λ§λ€κ³ POSIX_FADV_RANDOM
μ νμΌ λ―Έλ¦¬ μ½κΈ°λ₯Ό μμ ν λλ€. μ΄λ° λ³κ²½μ μ§μ ν μμλ§μ΄ μλλΌ νμΌ μ 체μ μν₯μ λΌμΉλ€. (λ¨, λμΌ νμΌμ λν λ€λ₯Έ μ΄λ¦° νμΌ νΈλ€μ μν₯μ λ°μ§ μλλ€.)
proc(5)μμ κΈ°μ νλ /proc/sys/vm/drop_caches
μΈν°νμ΄μ€λ₯Ό ν΅ν΄ 컀λ λ²νΌ μΊμ λ΄μ©μ λΉμΈ μ μλ€.
νμΌμ μ΄μ΄μ mmap(2)μΌλ‘ λ§΅ νκ³ μ κ·Έ λ§€νμ mincore(2)λ₯Ό μ μ©νλ©΄ νμΌμ μ΄λ νμ΄μ§λ€μ΄ λ²νΌ μΊμ μμ μμ£Όνκ³ μλμ§μ λν μ€λ μ·μ μ»μ μ μλ€.
C λΌμ΄λΈλ¬λ¦¬μ λνΌ ν¨μ μ΄λ¦μ΄ posix_fadvise()
μ΄λ€. κΈ°λ° μμ€ν
νΈμΆμ μ΄λ¦μ fadvise64()
μ΄λ€. (μΌλΆ μν€ν
μ²μμλ fadvise64_64()
μ΄λ€.) λ μμ€ν
νΈμΆμ μ°¨μ΄λ μ μμμ len
μΈμμ νμ
μ΄ size_t
λΌκ³ μμ νλ λ°λ©΄ νμμμλ loff_t
λ₯Ό κΈ°λνλ€λ μ μ΄λ€.
μ΄λ€ μν€ν
μ²μμλ 64λΉνΈ μΈμλ₯Ό μ μ ν λ μ§μ€ν° μμ λ§μΆ° λ£μ΄μΌ νλ€. (μμΈν λ΄μ©μ syscall(2) μ°Έκ³ .) κ·Έλ° μν€ν
μ²μμ SYNOPSISμ μλ posix_fadvise()
νΈμΆ μκ·Έλμ²λ fd
μ offset
μΈμ μ¬μ΄ ν¨λ©μΌλ‘ λ μ§μ€ν° νλλ₯Ό λλΉνκ² λ§λ€ κ²μ΄λ€. κ·Έλμ κ·Έλ° μν€ν
μ²λ€μμλ μΈμ μμλ₯Ό μ μ ν λ°κΎΈκ³ λλ¨Έμ§λ posix_fadvise()
μ μ ννκ² λμΌν λ²μ μ μ μνλ€.
μλ₯Ό λ€μ΄ 리λ μ€ 2.6.14λΆν° ARMμλ λ€μ μμ€ν νΈμΆμ΄ μλ€.
long arm_fadvise64_64(int fd, int advice,
loff_t offset, loff_t len);
μΌλ°μ μΌλ‘ μμ©μκ²λ μ΄λ° μν€ν
μ²λ³ μΈλΆ μ¬νμ΄ κ°μΆ°μ Έ μλ€. glibcμ posix_fadvise()
λνΌ ν¨μμμ μ μ ν μν€ν
μ²λ³ μμ€ν
νΈμΆμ λΆλ¬ μ€λ€.
컀λ 2.6.6 μ μμλ len
μ 0μΌλ‘ μ§μ νλ©΄ μ΄λ₯Ό "νμΌ λκΉμ§ μ 체 λ°μ΄νΈ"λ‘ ν΄μνμ§ μκ³ λ§ κ·Έλλ‘ "0λ°μ΄νΈ"λ‘ ν΄μνλ€.
fincore(1)
, mincore(2), readahead(2), sync_file_range(2), posix_fallocate(3), posix_madvise(3)
2018-03-06