https://github.com/h2o/h2o/blob/master/lib/common/memory.c#L272
μ‘μΈμ€ν λ€λ₯Έ νλ‘μΈμ€κ° μμ΅λκΉ? κ·Έλ μ§ μμ κ²½μ° MAP_PRIVATE
μ€μ νμ§ μλ μ΄μ λ 무μμ
λκΉ?
λν mremapμ μ§μνλ νλ«νΌμμ mmap(2) λ° munmap(2) λμ mremap(2)μ μ¬μ©ν μ μμ΅λκΉ?
μ‘μΈμ€ν λ€λ₯Έ νλ‘μΈμ€κ° μμ΅λκΉ? κ·Έλ μ§ μμ κ²½μ° MAP_PRIVATEλ₯Ό μ€μ νμ§ μλ μ΄μ
mktemps + fallocate + mmapμ μ¬μ©νλ λͺ©μ μ λ°μ΄ν° λ²νΌλ§μ μ¬μ©ν μ μλ μ΅λ 곡κ°μ΄ swap_ λμ _λμ€ν¬μ μ¬μ 곡κ°μ μν΄ μ νλλλ‘ νμΌ μ§μ λ²νΌλ₯Ό λ§λλ κ²μ
λλ€. MAP_PRIVATE
μ΄ λͺ©νμ μΆ©λν©λλ€.
λν mremapμ μ§μνλ νλ«νΌμμ mmap(2) λ° munmap(2) λμ mremap(2)μ μ¬μ©ν μ μμ΅λκΉ?
μΆκ°λ νμ΄μ§κ° μ΅λͺ
μ΄ μλλΌλ κ°μ νμ κ°λ₯ν©λλ€. λν mremap
μ¬μ©νμ¬ μ±λ₯μ΄ λμ λκ² λ³κ²½λλ©΄ 맀νλ νμ΄μ§λ₯Ό 맀ν ν΄μ (μꡬμ μΌλ‘ λλ λ€μ 맀νμ μΌλΆλ‘)ν ν νμ΄μ§κ° μ΄λλ κ°λ₯μ±μ μ΅μννλ λ°©λ²μ μμμΌ ν©λλ€. κ°μ₯ λΉμ©μ΄ λ§μ΄ λλ μμ
μ
λλ€. κ·Έλ¦¬κ³ μ΄κ²μ΄ λ°λμ mremap
μ¬μ©ν΄μΌ νλ€λ μλ―Έλ μλλλ€.
μ΄μ¨λ λ§μ μμ λ°μ΄ν°λ₯Ό λ²νΌλ§νλ κ²μ λΆμ°¨μ μΈ μ λ΅μ΄λ©° μ±λ₯ ν₯μμ λ Έλ ₯μ κΈ°μΈμ΄λ κ²μ μ’μ§ μλ€κ³ μκ°ν©λλ€. νλ‘μ μ²λ¦¬κΈ° μ΄μΈμ μ²λ¦¬κΈ°μ μ€νΈλ¦¬λ° μμ²(#1357 μ°Έμ‘°)μ μ±ννλ μμ μ μ νΈν©λλ€.
buffering large amount of data is a secondary strategy
κ° ν¬μΈνΈμ
λλ€.
νλ‘κ·Έλ¨μ΄ mktemps + fallocate + mmap
κ±°μ λΉ μ§μ§ μλλ€κ³ μΆμΈ‘νμμμ€.
ν° λ²νΌκ° νμνμ§ μμ νΈλ€λ¬μμ μ²λ¦¬νλ μ€νΈλ¦¬λ° μμ², λ§μ΅λκΉ?
μ μκ°μλ 곡μ λλ λΉκ³΅κ° mmap 리μμ€(μμ μ λ‘λ μ리 νμμμΌμ§λΌλ)λ₯Ό μ¬μ©νλ κ²μ λμ μκ°μ λλ€. $TMP λλ $TMPDIR μμΉλ μ¬μ©μ νκ²½μ λͺ¨λ κ²μ΄ λ μ μμΌλ©°, μλ₯Ό λ€μ΄ HDDκ° λ μ μμ΅λλ€. κ΄λ¦¬μκ° κΈ°μ΅ν΄μΌ νλ μΆκ° λ¨κ³μΌ λΏμ λλ€. $TMPκ° ramdisk λ§μ΄νΈμΈ κ²½μ° λμ©λ νμΌμ λμ μ λ‘λλ λ©λͺ¨λ¦¬ μλ ₯μ μ½κ² μμ±ν μ μλ€λ κ²μ λ§ν κ²λ μμ΅λλ€.
λΉ νλ‘μ μ²λ¦¬κΈ°λ‘ μ€νΈλ¦¬λ° μμ² μμ μ μννλ λ° μμ΄ κ·νμ μ μκ³Ό λ°©ν₯μ΄ λ§€μ° λ§μμ λλλ€. κΈ°λνκ³ ν μ€νΈν μ€λΉκ° λμμ΅λλ€!
κ°μ₯ μ μ©ν λκΈ
mktemps + fallocate + mmapμ μ¬μ©νλ λͺ©μ μ λ°μ΄ν° λ²νΌλ§μ μ¬μ©ν μ μλ μ΅λ 곡κ°μ΄ swap_ λμ _λμ€ν¬μ μ¬μ 곡κ°μ μν΄ μ νλλλ‘ νμΌ μ§μ λ²νΌλ₯Ό λ§λλ κ²μ λλ€.
MAP_PRIVATE
μ΄ λͺ©νμ μΆ©λν©λλ€.μΆκ°λ νμ΄μ§κ° μ΅λͺ μ΄ μλλΌλ κ°μ νμ κ°λ₯ν©λλ€. λν
mremap
μ¬μ©νμ¬ μ±λ₯μ΄ λμ λκ² λ³κ²½λλ©΄ 맀νλ νμ΄μ§λ₯Ό 맀ν ν΄μ (μꡬμ μΌλ‘ λλ λ€μ 맀νμ μΌλΆλ‘)ν ν νμ΄μ§κ° μ΄λλ κ°λ₯μ±μ μ΅μννλ λ°©λ²μ μμμΌ ν©λλ€. κ°μ₯ λΉμ©μ΄ λ§μ΄ λλ μμ μ λλ€. κ·Έλ¦¬κ³ μ΄κ²μ΄ λ°λμmremap
μ¬μ©ν΄μΌ νλ€λ μλ―Έλ μλλλ€.μ΄μ¨λ λ§μ μμ λ°μ΄ν°λ₯Ό λ²νΌλ§νλ κ²μ λΆμ°¨μ μΈ μ λ΅μ΄λ©° μ±λ₯ ν₯μμ λ Έλ ₯μ κΈ°μΈμ΄λ κ²μ μ’μ§ μλ€κ³ μκ°ν©λλ€. νλ‘μ μ²λ¦¬κΈ° μ΄μΈμ μ²λ¦¬κΈ°μ μ€νΈλ¦¬λ° μμ²(#1357 μ°Έμ‘°)μ μ±ννλ μμ μ μ νΈν©λλ€.