ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•
짧닀면 짧고, κΈΈλ‹€λ©΄ κΈ΄ λŒ€ν•™μ› μƒν™œμ΄ 였늘 λΆ€λ‘œ λλ‚œλ‹€. μ‚¬νšŒλ‘œ λ‚˜κ°€ 일을 ν•˜λ‹€ 보면, μ§€κΈˆ λŠλ‚€ 생각듀 λ˜λŠ” κ°νšŒλ“€μ΄ 잊히고 λ¬΄λŽŒμ§€κΈ° λ§ˆλ ¨μ΄λ‹€. μžŠμ–΄λ²„λ¦¬κΈ° 전에 좔얡듀을 κΈ°μ–΅ν•΄λ³΄κ³ μž ν•œλ‹€.

 

μ™œ λŒ€ν•™μ›μ„ κ°€κ³ μž ν–ˆλŠ”κ°€?

 λ‚΄κ°€ λŒ€ν•™μ›μ„ κ°€κ³ μž ν–ˆλ˜ μ΄μœ λŠ” λ§Žμ€ λŒ€ν•™μ›μƒλ“€μ΄ μž…ν•™μ„ κ²°μ‹¬ν•˜λŠ” μ΄μœ μ™€ λΉ„μŠ·ν•  거라고 μƒκ°ν•œλ‹€. 막상 ν•™λΆ€μƒμœΌλ‘œ 쑸업을 ν•˜λ‹ˆ, ν•œ 뢄야에 λŒ€ν•΄ λͺ…ν™•νžˆ μ•„λŠ” 것도 μ•„λ‹ˆκ³  전문성이 μ—†λ‹€κ³  λŠκ»΄μ‘Œλ‹€. ν•™λΆ€ κ³Όμ • 쀑에 λΆ„μ‚°μ²˜λ¦¬, μŠ€ν† λ¦¬μ§€μ— λŒ€ν•œ 관심이 μ¦κ°€ν•˜λ©΄μ„œ λŒ€ν•™μ› μž…ν•™μ„ κ²°μ •ν•˜μ˜€λ‹€.


μ–΄μ œλŠ” λŒ€μ‘Έ, μ˜€λŠ˜λΆ€ν„° λŒ€ν•™μ›μƒ

 λŒ€ν•™μ›μ„ κ°€μ•Όν•˜λŠ”κ°€μ— λŒ€ν•΄, ν•œ ν•™κΈ° μ •λ„ 고민을 ν•œ 후에 2018년도 2ν•™κΈ°λΆ€ν„° μ„μ‚¬λ‘œμ¨ 연ꡬ싀 μƒν™œμ„ μ‹œμž‘ν•˜μ˜€λ‹€. ν•™κΈ°κ°€ μ‹œμž‘ν•˜κΈ° μ „ λ¦¬λˆ…μŠ€ 컀널 μΊ ν”„λ₯Ό μ°Έκ°€ν•˜κ³ , λ¦¬λˆ…μŠ€ 컀널 심측 λΆ„μ„μ΄λΌλŠ” 책을 읽고 κ΅μˆ˜λ‹˜κ³Ό ν•¨κ»˜ λ¦¬λ·°ν•˜λ©΄μ„œ 컀널에 λŒ€ν•œ 배경지식을 μŒ“μ•„ μ˜¬λ Έλ‹€.


연ꡬ싀에 마련된 λ‚΄ 자리

연ꡬ싀에 마련된 λ‚΄ 자리.

 μ²˜μŒ 연ꡬ싀에 왔을 λ•ŒλŠ” 컴퓨터가 μ—†μ–΄, λ…ΈνŠΈλΆμ„ κ°€μ Έμ™€μ„œ μž‘μ—…μ„ ν•˜κ³€ ν–ˆμ—ˆλ‹€. μ–Όλ§ˆ μ§€λ‚˜μ§€ μ•Šμ•„, κ΅μˆ˜λ‹˜κ»˜μ„œ μ£Όλ¬Έν•˜μ‹  PC와 λͺ¨λ‹ˆν„°κ°€ λ„μ°©ν•˜μ—¬ μžλ¦¬κ°€ μ„ΈνŒ…λœ λ‚΄ μ±…μƒμ˜ λͺ¨μŠ΅μ΄λ‹€. 이 사진은 ν•™κΈ° μ΄ˆμ— μ΄¬μ˜ν•œ 것은 μ•„λ‹ˆκ³ , ν•™κΈ° 말에 μ΄¬μ˜ν•œ 것인데 λ“€μ–Ό λͺ¨λ‹ˆν„°λ‘œ μ„ΈνŒ…ν•œ κΈ°λ…μœΌλ‘œ μ΄¬μ˜ν•œ 것이닀.

 

λ…Όλ¬Έ 리뷰

Single queue Linux block layer
Multi queue Linux block layer

 κ°€μž₯ λ¨Όμ € λ¦¬λ·°ν•˜κ²Œ 된 논문은 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λ²ˆμ”© 직접 μ‹€μŠ΅ν•΄λ³΄κ³ , μ–΄λ–€ 점을 κΆκΈˆν•΄ν• κΉŒ? μƒκ°ν•˜κ³  λ“€μ–΄κ°€κ²Œ λ˜μ—ˆλ‹€. κ΅μˆ˜λ‹˜λ“€μ΄ λ§μ”€ν•˜μ‹œκΈΈ, λ‹¨μˆœνžˆ μˆ˜μ—…μ„ λ“£λŠ” 것보닀 λˆ„κ΅°κ°€μ—κ²Œ 지식을 μ „λ‹¬ν•˜λŠ” κ³Όμ •μ—μ„œλ„ λ§Žμ€ 곡뢀가 λœλ‹€κ³  λ§μ”€ν•˜μ…¨λŠ”λ° 이 말이 μ–΄λ–€ 것을 μ˜λ―Έν•˜λŠ”μ§€ μ•Œκ²Œ 된 κ³„κΈ°μ˜€λ˜ κ±° κ°™λ‹€.

 

λŒ€ν•™μ› κ°•μ˜

쀑간고사 μ „ μ΄ν•΄ν•œ λ‚΄μš©μ„ ν™”μ΄νŠΈλ³΄λ“œμ— μ •λ¦¬ν•œ 것.

 ν•™λΆ€ κ³Όμ •κ³Ό 달리, λŒ€ν•™μ›μ—μ„œλŠ” 쑰금 더 깊이 μžˆλŠ” κ°•μ˜λ“€μ΄ λ§Žμ•˜λ‹€. 그쀑 연ꡬ 뢄야에 κ°€μž₯ 도움이 된 것은 μ§€λ„κ΅μˆ˜λ‹˜μ΄ κ°•μ˜ν•˜μ‹ , 운영체제 νŠΉλ‘ μ΄μ—ˆλ‹€. ν•΄λ‹Ή κ°•μ˜λ₯Ό μˆ˜κ°•ν•˜κ³  λ‚˜μ„œ 컀널 μ½”λ“œλ₯Ό λΆ„μ„ν•˜λ‹ˆ, λ‘λ£¨λ­‰μˆ ν•˜κ²Œ μ΄ν•΄λ˜λ˜ 것듀이 λͺ…ν™•νžˆ μ΄ν•΄λ˜μ—ˆλ‹€. λ˜ν•œ 곡룑책에 머물러 있던 μš΄μ˜μ²΄μ œμ— κ΄€ν•œ 지식을 쑰금 더 ν™•μž₯ν•  수 μžˆμ–΄μ„œ μ’‹μ•˜λ˜ 것 κ°™λ‹€.

 

μ»€λ„μ—μ„œ λ™μž‘ν•˜λŠ” λ‚˜μ˜ μ½”λ“œ

처리된 IOλ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μž‘μ„±ν•œ μ½”λ“œ

 λŒ€ν•™μ› κ³Όμ • 쀑, ν˜„μž¬ λ¦¬λˆ…μŠ€ μ»€λ„μ˜ 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
    • 컀널 μ½”λ“œλ₯Ό λΆ„μ„ν•˜κ³  이해할 수 μžˆλŠ” λŠ₯λ ₯

 

  •  

  λ‚˜μ—΄ν•œ 것은 연ꡬλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ„±μ·¨ν•œ 것듀이닀. 이외에도 CS에 λŒ€ν•œ 이해가 μ „λ°˜μ μœΌλ‘œ 넓어지고, ν•™λΆ€μƒλ•Œ ν•˜μ§€ λͺ»ν•œ κ²½ν—˜λ“€μ„ ν•˜κ²Œ λ˜λ©΄μ„œ λŒ€μ‘Έμ΄μ˜€μ„ λ•Œ λ‚˜μ™€ λΉ„κ΅ν•œλ‹€λ©΄, ν•œ 도메인에 λŒ€ν•œ 연ꡬ 동ν–₯을 이해할 수 있고, 컀널 μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κ³  λ‚΄κ°€ κ΅¬ν˜„ν•˜κ³ μž ν•˜λŠ” 것을 컀널에 κ΅¬ν˜„ ν•  수 μžˆλŠ” μ—­λŸ‰μ΄ λ§Œλ“€μ–΄ 진 것 κ°™λ‹€. 

 

 μ΄μ œ λͺ¨λ“  과정을 끝내고 였늘 λΆ€λ‘œ 쑸업생이 되고, 취쀀생이 λœλ‹€. μ§€κΈˆμ€ 빨리 μ·¨μ§ν•΄μ„œ 학ꡐλ₯Ό λ²—μ–΄λ‚˜κ³  μ‹Άλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, 막상 νšŒμ‚¬μ— λ“€μ–΄κ°€κ³  일을 ν•˜λ‹€ 보면 "학ꡐ에 μžˆμ„ λ•Œκ°€ μ’‹μ•˜λ„€...πŸ˜₯"라고 생각할지도 λͺ¨λ₯΄κ² λ‹€.

 

 

728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€