ν°μ€ν 리 λ·°
짧λ€λ©΄ μ§§κ³ , κΈΈλ€λ©΄ κΈ΄ λνμ μνμ΄ μ€λ λΆλ‘ λλλ€. μ¬νλ‘ λκ° μΌμ νλ€ λ³΄λ©΄, μ§κΈ λλ μκ°λ€ λλ κ°νλ€μ΄ μνκ³ λ¬΄λμ§κΈ° λ§λ ¨μ΄λ€. μμ΄λ²λ¦¬κΈ° μ μ μΆμ΅λ€μ κΈ°μ΅ν΄λ³΄κ³ μ νλ€.
μ λνμμ κ°κ³ μ νλκ°?
λ΄κ° λνμμ κ°κ³ μ νλ μ΄μ λ λ§μ λνμμλ€μ΄ μ νμ κ²°μ¬νλ μ΄μ μ λΉμ·ν κ±°λΌκ³ μκ°νλ€. λ§μ νλΆμμΌλ‘ μ‘Έμ μ νλ, ν λΆμΌμ λν΄ λͺ νν μλ κ²λ μλκ³ μ λ¬Έμ±μ΄ μλ€κ³ λκ»΄μ‘λ€. νλΆ κ³Όμ μ€μ λΆμ°μ²λ¦¬, μ€ν 리μ§μ λν κ΄μ¬μ΄ μ¦κ°νλ©΄μ λνμ μ νμ κ²°μ νμλ€.
μ΄μ λ λμ‘Έ, μ€λλΆν° λνμμ
λνμμ κ°μΌνλκ°μ λν΄, ν νκΈ° μ λ κ³ λ―Όμ ν νμ 2018λ λ 2νκΈ°λΆν° μμ¬λ‘μ¨ μ°κ΅¬μ€ μνμ μμνμλ€. νκΈ°κ° μμνκΈ° μ 리λ μ€ μ»€λ μΊ νλ₯Ό μ°Έκ°νκ³ , 리λ μ€ μ»€λ μ¬μΈ΅ λΆμμ΄λΌλ μ± μ μ½κ³ κ΅μλκ³Ό ν¨κ» 리뷰νλ©΄μ 컀λμ λν λ°°κ²½μ§μμ μμ μ¬λ Έλ€.
μ°κ΅¬μ€μ λ§λ ¨λ λ΄ μ리
μ²μ μ°κ΅¬μ€μ μμ λλ μ»΄ν¨ν°κ° μμ΄, λ ΈνΈλΆμ κ°μ Έμμ μμ μ νκ³€ νμλ€. μΌλ§ μ§λμ§ μμ, κ΅μλκ»μ μ£Όλ¬Ένμ PCμ λͺ¨λν°κ° λμ°©νμ¬ μλ¦¬κ° μΈν λ λ΄ μ± μμ λͺ¨μ΅μ΄λ€. μ΄ μ¬μ§μ νκΈ° μ΄μ 촬μν κ²μ μλκ³ , νκΈ° λ§μ 촬μν κ²μΈλ° λμΌ λͺ¨λν°λ‘ μΈν ν κΈ°λ μΌλ‘ 촬μν κ²μ΄λ€.
λ Όλ¬Έ 리뷰
κ°μ₯ λ¨Όμ 리뷰νκ² λ λ Όλ¬Έμ Linux Block IO: Introducing Multi-queue SSD Access on Multi-core SystemsλΌλ λ Όλ¬Έμ΄λ€. λ Όλ¬Έμ μ£Ό λ΄μ©μ κΈ°μ‘΄μ Single-Queue Block Layerκ° NVMe SSDμ κ°μ Multi-queue SSDλ₯Ό μ¬μ©νλ λ° μμ΄ λ³λͺ©νμμΌλ‘ μμ©νλ©°, μ΄λ₯Ό ν΄κ²°νκΈ° μν κΈ°λ²μ μ μνλ κ²μ΄λ€.
κ°λ¨ν μ€λͺ νμλ©΄ κΈ°μ‘΄μ Single queueλ CPUμ Multi-coreλ₯Ό νμ©νμ§λ, μ μ₯μ₯μΉμ Multi-queueλ₯Ό νμ©νμ§λ λͺ»νλ λ¨μ μ κ°μ§κ³ μλ€. λ°λΌμ Multi-queue block layerκ° λ¦¬λ μ€ μ»€λμ μ μ©λκΈ° μ κΉμ§λ NVMe SSDλ₯Ό μ¬μ©νλ λ° μμ΄, Block layerλ₯Ό bypass(μ¬μ©νμ§ μμ.)νλ λ°©μμ μ μ©νμλ€. λ°λΌμ μ΄λ₯Ό ν΄κ²°νκ³ μ, CPUμ Multi-coreλ₯Ό νμ©νκ³ , λλΌμ΄λ² λ¨μ Multi-queueμ λ§€μΉ λλ νμμ Block layerλ₯Ό μ μν κ²μ΄λ€.
(Block layerμ λν κ°μ λ°©μκ³Ό κΈ°μ‘΄μ λ³λͺ©νμλΏ μλλΌ, μ΄ λ Όλ¬Έμ μ½μΌλ©΄μ μ²μμΌλ‘ NUMA, AffinityλΌλ κ°λ μ λν΄ μκ³ , μ΄ν΄ν μ μμλ€.)
μ΄μΈμλ μ°κ΅¬ λΆμΌμ κ΄λ ¨νμ¬, λ€μν λ Όλ¬Έλ€μ 리뷰νμλ€. λ Όλ¬Έμ λ°λΌ μ μ΄ν΄λμ§ μλ λ Όλ¬Έλ€λ μμμ§λ§ μ½λ€ 보면 "μ΄λ»κ² μκ°νκ² λ¬μκΉ?"λΌλ μλ¬Έμ μ΄ λ¨κΈ°λ νκ³ , ν λΆμΌμ λν λ°°κ²½μ§μμ΄ μ°¨κ³‘μ°¨κ³‘ μμλ€.
μ‘°κ΅
νκΈ° μ€ μ‘°κ΅ νλμ νμμ§λ§, κ°μ₯ κΈ°μ΅μ λ¨λ κ²μ 첫 νκΈ°μ 맑μ μ€μ΅ κ°μ μ‘°κ΅λ€. μ²μ μ‘°κ΅λ₯Ό νλ κ²μ΄λΌμ, μ΄ μ λλ‘ μ€λͺ νλ©΄ νμλ€λ μκ² μ§λΌκ³ μμΌνκ² μκ°νκ³ μμ μ μ€λΉν΄ κ° μ μ΄ μμλ€. νμ§λ§ ν° μ€μ°μ΄μλ€. νμλ€μ΄ μ΄ν΄ν λ₯λ ₯μ΄ λΆμ‘±ν κ²μ΄ μλ, λ΄κ° μ€λͺ μ 맀λλ½κ² μνμ§ λͺ»νμ¬, νμλ€μ΄ μ΄ν΄λ₯Ό μνμ§ λͺ»νλ μν©μ΄μλ€. λν, λ΄κ° μμνμ§ λͺ»ν λΆλΆμμ κΆκΈν΄ νλ κ²μ΄ μμ΄ λΉν©μ€λ½κΈ°λ νλ€.
μ΄λ° μΌμ κ²ͺμ νμλ κ°μ μλ£λ μ€μ΅ λ΄μ©μ 2~3λ²μ© μ§μ μ€μ΅ν΄λ³΄κ³ , μ΄λ€ μ μ κΆκΈν΄ν κΉ? μκ°νκ³ λ€μ΄κ°κ² λμλ€. κ΅μλλ€μ΄ λ§μνμκΈΈ, λ¨μν μμ μ λ£λ κ²λ³΄λ€ λκ΅°κ°μκ² μ§μμ μ λ¬νλ κ³Όμ μμλ λ§μ 곡λΆκ° λλ€κ³ λ§μνμ ¨λλ° μ΄ λ§μ΄ μ΄λ€ κ²μ μλ―Ένλμ§ μκ² λ κ³κΈ°μλ κ±° κ°λ€.
λνμ κ°μ
νλΆ κ³Όμ κ³Ό λ¬λ¦¬, λνμμμλ μ‘°κΈ λ κΉμ΄ μλ κ°μλ€μ΄ λ§μλ€. κ·Έμ€ μ°κ΅¬ λΆμΌμ κ°μ₯ λμμ΄ λ κ²μ μ§λκ΅μλμ΄ κ°μνμ , μ΄μ체μ νΉλ‘ μ΄μλ€. ν΄λΉ κ°μλ₯Ό μκ°νκ³ λμ 컀λ μ½λλ₯Ό λΆμνλ, λ루λμ νκ² μ΄ν΄λλ κ²λ€μ΄ λͺ νν μ΄ν΄λμλ€. λν κ³΅λ£‘μ± μ λ¨Έλ¬Όλ¬ μλ μ΄μ체μ μ κ΄ν μ§μμ μ‘°κΈ λ νμ₯ν μ μμ΄μ μ’μλ κ² κ°λ€.
컀λμμ λμνλ λμ μ½λ
λνμ κ³Όμ μ€, νμ¬ λ¦¬λ μ€ μ»€λμ Proportional I/O Schedulingμ λν λ¬Έμ μ μ λΆμνκ³ λμμ± μ μ°Ύκ³ μ νμλ€. λ΄κ° μ μνλ κΈ°λ²μ 리λ μ€ μ»€λμ ꡬννμλλ°, λ¨μν μ μ -λ 벨μμ λμνλ μ½λκ° μλλΌ μ»€λ-λ 벨μμ λ΄ μ½λκ° λμνλ€λ κ²μ μλΉν 맀λ ₯μ μ΄κ³ , μ¬λ°λ μμ μ΄μλ€.
컀λμμ μ λμνλ μ½λλ₯Ό λ§λ€λ €λ©΄, λ΄κ° νμν κΈ°λ₯μ λ§λ€λ κΈ°μ‘΄μ μ½λλ€μ λΆμνκ³ κΈ°μ‘΄μ νλ¦μ λμ μ½λλ₯Ό μΆκ°νλ κ²μ΄ κ°μ₯ μ’λ€. μλνλ©΄, κΈ°μ‘΄ μ½λλ€μ μ΅κ·Όμ μΆκ°λ κΈ°λ₯λ€μ΄ μλλΌλ©΄ λλΆλΆ κ²¬κ³ νκ³ λ€μν μμΈλ€μ μκ°νκ³ μμ±ν μ½λμ΄κΈ° λλ¬Έμ΄λ€.
νμ§λ§ κΈ°μ‘΄ μ½λμ λν λͺ νν μ΄ν΄κ° μλ€λ©΄, μ½λλ₯Ό μμ±νλ©΄μ ꡬ쑰체 μ κ·Ό, λ©λͺ¨λ¦¬ ν λΉ/ν΄μ , μ΄κΈ°ν κ³Όμ λ± λ€μν μνμ°©μ€λ₯Ό κ²ͺκ² λλ€.
μ°κ΅¬ λΆμΌμ κ΄λ ¨λ νν
μ§κΈμ μ½λ‘λλ‘ μΈν΄ λ§μ ννλ€μ΄ μ¨λΌμΈμΌλ‘ λ체νκ±°λ, μΌμ μ μ°κΈ°νλ€. νμ§λ§ μλ κΉμ§λ§ νλλΌλ μ°κ΅¬ λΆμΌμ κ΄λ ¨λ λ€μν ννλ€μ κ° μ μμλ€. 2~3μΌμ κΈ°κ° λμ, μμ€ν κ³Ό κ΄λ ¨λ μ¬λ¬ μ£Όμ λ€μ μ ν μ μκ³ ν΄μΈλ₯Ό λκ° λ³Ό μ μλ κΈ°νκ° λκΈ°λ νλ€. 겨μΈμλ κ΅λ΄μμ κ°μλ μͺ½μμ ννκ° λ§μ΄ μ΄λ €, μ€ν€μ₯μ κ° μ μλ λͺ λͺ©μ΄ μκΈ°κΈ°λ νλ€.
μμ¬ κ³Όμ μ€ ν΄μΈμμ κ°μ΅λλ ννλ₯Ό μ°Έκ°ν μΌμ΄ μμλλ°, λ΄κ° "μ... λ Όλ¬Έλ§ μ μ°λ©΄ ν΄μΈλ κ°κ³ λνμ μνν λ§νλ€~"λΌκ³ λ§νλλ°, μ°κ΅¬μ€ μ¬λλ€μ΄ "λ Όλ¬Έμ μ°λ κ² μ½λμ...", "λ Όλ¬Έμ΄ μ λμ€μμμ..."λΌκ³ λ§νλ€. λλ κ·Έ λ§μ λ£κ³ μ‘°μ©ν μ μ λ«μ μλ°μ μμλ€.π
μ λλ₯μ΄
μ°κ΅¬μ€μ΄ μλ κ±΄λ¬Όμ΄ ν κ³ μμ΄μ μμμΈλ°, μ μ μκ±°λ λ°₯μ λ¨Ήκ³ μΆμΌλ©΄ μ°Ύμμ¨λ€. 건물 μ΄λ¦μ΄ μ λκ΄μ΄κ³ μ¬κΈ°μ μμ£Ό λνλμ μ λλ₯μ΄λΌκ³ λΆλ¦°λ€. λ μ΄ λμ°λ©΄ μ΄λμ μλμ§ μ λͺ¨λ₯΄κ² λλ°, λ μ΄ μ’ μ μ ν΄μ§κ³ νλνκΈ° μ’μμ§λ λ μ¨κ° λλ©΄ μ λκ΄μμ μμ£Ό 보μΈλ€.
κΈμ λ§μΉλ©°
λκ΅°κ° μμ¬ κ³Όμ λμ μ΄λ€ κ²μ μ±μ·¨νμλκ³ , 묻λ λ€λ©΄ λ€μκ³Ό κ°μ΄ λ§ν΄μ£Όκ³ μΆλ€.
- SSD, NVMe SSDμ κ΄λ ¨λ μ°κ΅¬ λν₯ μ΄ν΄
- SSD λ΄λΆ ꡬ쑰μ λμ κ³Όμ μ λν μ΄ν΄
- ν΄λΉ μ μ₯μ₯μΉμμ λ°μν μ μλ λ³λͺ©νμμ λν μ΄ν΄
- VM, 컨ν μ΄λμμ νλμ μ μ₯μ₯μΉλ₯Ό 곡μ ν κ²½μ°μ λ¬Έμ μ
- μ΅μ 리λ
μ€ μ»€λμ λν μ΄ν΄
- Multi-Queue Block Layer
- MQ-Block Layer Scheduler : BFQ, Kyber
- Cgroups
- blkio
- PCI Driver
- NVMe SSD
- 컀λ μ½λλ₯Ό λΆμνκ³ μ΄ν΄ν μ μλ λ₯λ ₯
- Multi-Queue Block Layer
λμ΄ν κ²μ μ°κ΅¬λ₯Ό μ§ννλ©΄μ μ±μ·¨ν κ²λ€μ΄λ€. μ΄μΈμλ CSμ λν μ΄ν΄κ° μ λ°μ μΌλ‘ λμ΄μ§κ³ , νλΆμλ νμ§ λͺ»ν κ²½νλ€μ νκ² λλ©΄μ λμ‘Έμ΄μμ λ λμ λΉκ΅νλ€λ©΄, ν λλ©μΈμ λν μ°κ΅¬ λν₯μ μ΄ν΄ν μ μκ³ , 컀λ μ½λλ₯Ό μ΄ν΄νκ³ λ΄κ° ꡬννκ³ μ νλ κ²μ 컀λμ ꡬν ν μ μλ μλμ΄ λ§λ€μ΄ μ§ κ² κ°λ€.
μ΄μ λͺ¨λ κ³Όμ μ λλ΄κ³ μ€λ λΆλ‘ μ‘Έμ μμ΄ λκ³ , μ·¨μ€μμ΄ λλ€. μ§κΈμ 빨리 μ·¨μ§ν΄μ νκ΅λ₯Ό λ²μ΄λκ³ μΆλ€κ³ μκ°νμ§λ§, λ§μ νμ¬μ λ€μ΄κ°κ³ μΌμ νλ€ λ³΄λ©΄ "νκ΅μ μμ λκ° μ’μλ€...π₯"λΌκ³ μκ°ν μ§λ λͺ¨λ₯΄κ² λ€.
'π νκ³ λ‘' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νκ³ λ‘: Goodbye Ahnlab, Hello Samsung (4) | 2021.06.22 |
---|---|
νκ³ λ‘: λ©΄μ μ μ€λΉνλ©° (0) | 2021.06.10 |
νκ³ λ‘: κ²½κΈ°λμ λ΄ μμ·¨λ°©μ ꡬν΄λ³΄μ (20) | 2020.12.25 |
νκ³ λ‘: 2020 νλ°κΈ° μ·¨μ€μ λ§λ¬΄λ¦¬ νλ©° (8) | 2020.12.12 |
νκ³ λ‘: μλ©μ μ΅μ’ ν©κ²©νλ©° (69) | 2020.10.29 |