ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•
์–ด๋А๋ง 26๋…„์ด ์‹œ์ž‘๋œ ์ง€ ํ•œ ๋‹ฌ์ด๋ผ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ฐ”๋‹ค. 25๋…„์—๋„ ํ•˜๋˜ ์—…๋ฌด๋ฅผ ๊ณ„์† ์ด์–ด์„œ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ข‹์€ ์„ /ํ›„๋ฐฐ๋ถ„๋“ค๊ณผ ํ•จ๊ป˜ ์˜ค๋Š˜๋„ ์—ด์‹ฌํžˆ ์ผ์„ ํ•˜๊ณ  ์™”๋‹ค. ๋” ๋Šฆ์–ด์ง€๋ฉด ํฌ์ŠคํŒ…ํ•˜๊ธฐ ์‹ซ๋‹ค๊ณ  ๋ฏธ๋ฃจ์–ด๋’€๋‹ค๊ฐ€ ์ •๋ง ์•ˆ ์“ฐ๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํ•œ ํŽ˜์ด์ง€ ์จ๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

์ฃผ๋œ ์—…๋ฌด ์™ธ์— ์ถ”๊ฐ€์ ์ธ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๊ฑฐ๋‚˜ ์–ด์ฉ” ์ˆ˜ ์—†์ด ํ•ด์•ผํ•˜๋Š” ์ผ๋“ค์„ ์ง๋ฉดํ•˜๋ฉด ๋˜‘๊ฐ™์€ ์‹œ๊ฐ„์„ ์“ฐ๋”๋ผ๋„ ๋‹ค์Œ์— ๋™์ผํ•œ ์ผ์„ ํ•  ๋•Œ ๋ณด๋‹ค ํšจ์œจํ™”๋˜๋Š” ๊ด€์ ์œผ๋กœ ์—…๋ฌด์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•œ๋‹ค. ํ•œ๋ฒˆ ์‹œ์ž‘ํ•˜๋ฉด ๋์„ ๋ด์•ผ ํ•˜๋Š” ์ง‘๋…์ด ์—…๋ฌด์— ๋งŽ์ด ๋„์›€์ด ๋˜๊ธฐ๋„ ํ•˜๊ณ  ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šฐ๋Š”๋ฐ ๊ธฐ๋ฐ˜์ด ๋˜์—ˆ๋‹ค.

 

๋‹ค์–‘ํ•œ ๊ด€์ ์˜ ์ œํ’ˆ์— ๋Œ€ํ•œ ์ดํ•ด

 ํšŒ์‚ฌ ๋‚ด์—์„œ๋งŒ ์žˆ๋‹ค๋ณด๋ฉด ๋งŒ๋“œ๋Š” ์ œํ’ˆ์— ๋Œ€ํ•œ ๊ณ ๊ฐ์˜ ์š”๊ตฌ๊ฐ€ ์ด์ƒํ•˜๊ฒŒ ๋А๊ปด์งˆ ๋•Œ๊ฐ€ ๋งŽ๋‹ค. NVMe SSD์˜ ๊ฒฝ์šฐ 10๋…„ ์ „๊ณผ ๋น„๊ตํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์šฉ๋Ÿ‰ ๋Œ€๋น„ ๊ฐ€๊ฒฉ๋„ ๋‚ฎ์•„์กŒ์„ ๋ฟ ์•„๋‹ˆ๋ผ ์„ฑ๋Šฅ๋„ ์ƒ๋‹นํžˆ ์ฆ๊ฐ€ํ•˜์˜€๋‹ค. ์ด์— ๊ณ ๊ฐ๋“ค์ด ์š”๊ตฌํ•˜๋Š” ์กฐ๊ฑด์ด๋‚˜ NVMe Spec์ด ๋‹ค์–‘ํ•˜๊ฒŒ ๋ณ€ํ™”๋˜๊ณ  ์žˆ๋‹ค. ์ด์— `์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ NVMe SSD๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ €๋Ÿฐ ๊ธฐ๋Šฅ๋“ค์ด ํ•„์š”ํ• ๊นŒ?`, `์–ด๋–ค Workload๊ฐ€ ์žˆ์„๊นŒ?`ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ณ ๋ฏผ์„ ํ•ด๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๋‹ค์–‘ํ•œ ๊ด€์ ์—์„œ ์ œํ’ˆ์„ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋˜์—ˆ๊ณ  ์—ฌ์ „ํžˆ ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค.

 

๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์‚ฐ์—…์„ ๋Œ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

 Nvidia๊ฐ€ AI Server ๊ณต๊ธ‰์— ์„ ๋‘์— ๋‚˜์„œ๊ฒŒ ๋˜๋ฉด์„œ ์ „๋ก€ ์—†๋˜ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค. DRAM, SSD ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•˜๊ณ  ์žˆ๊ณ  ์—…๋ฌด์—์„œ๋„ ๋ณ€ํ™”ํ•˜๋Š” ์‹œ์žฅ ํŠธ๋ Œ๋“œ์— ๋งž๊ฒŒ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ํŒ๋‹จํ•˜์—ฌ์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ฒผ๋‹ค. ์ด๋ฅผ ๋ถˆ๋งŒ์„ ๊ฐ€์ง€๊ณ  ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค๋ฉด, ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ํšจ์œจ์ด ๋–จ์–ด์ง€๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์ด์— AI์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ง€์‹์„ ํ™•์žฅํ•˜๊ณ  ์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ๋”ํ•˜๋ฉด์„œ `์™œ ์ดํ† ๋ก ์‹œ์žฅ์—์„œ AI Server ํ™•๋ณด์— ๋ชฉ์ˆจ์„ ๊ฑธ๊นŒ?`๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ฒดํ—˜ํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๋˜ํ•œ NVMe SSD์— AI Workload๊ฐ€ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์›Œํฌ๋กœ๋“œ๋ฅผ eBPF๋กœ Trace ํ•˜์—ฌ Synthetic Workload๋กœ ๋งŒ๋“ค๊ธฐ๋„ ํ•ด ๋ณด์•˜๋‹ค.

 

Kernel I/O Stack์— ๋Œ€ํ•œ ํ™•์žฅ

 ๊ณผ๊ฑฐ์—๋Š” Multi-Queue Block Layer์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ๊ฐ์ด ๋ฉˆ์ถฐ์žˆ์—ˆ๋‹ค. ์—…๋ฌด ์ง„ํ–‰์„ ์œ„ํ•ด Kernel์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญ๋Ÿ‰์„ ์Œ“๊ฒŒ ๋˜์—ˆ๋‹ค.

  1. NVMe SSD Driver์˜ Code-Level์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ดํ•ด
  2. PCIe Prove - NVMe SSD์™€ PCIe remove - NVMe SSD์— ๋Œ€ํ•œ ์ดํ•ด
  3. 1, 2๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•„์š”ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ Custom ์ง„ํ–‰
  4. eBPF๋ฅผ ํ†ตํ•œ Debugging ๋ฐ I/O Trace

 ๋‹จ์ˆœํžˆ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค๋ฉด ์—ฌ๊ธฐ๊นŒ์ง€ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜์˜€๊ฒ ์ง€๋งŒ ๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„์•ผ์ด๊ธฐ์— ์ง€์†์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์•Œ์•„๊ฐ€๋‹ค ๋ณด๋‹ˆ NVMe SSD Driver๋ฅผ Custom ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋„คํŠธ์›Œํฌ์™€ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด์— ๋Œ€ํ•œ ํฅ๋ฏธ

 ๋„คํŠธ์›Œํฌ๋„ ๋”ฐ์ง€๊ณ  ๋ณด๋ฉด I/O๋ผ๋Š” ๊ด€์ ์—์„œ ๋„คํŠธ์›Œํฌ๋„ ๋งŽ์€ ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์—…๋ฌด๋ฅผ ํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„์„ ๋‚จ์„ ๋•Œ๋ฉด ๋„คํŠธ์›Œํฌ ์ง€์‹์ด ๋ถ€์กฑํ•˜์—ฌ ํšจ์œจํ™”๋˜์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜์˜€๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋Š” ์ฃผ๋กœ C/C++, Python์ด์ง€๋งŒ Frontend, Backend๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” go, js ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ฝ”๋”ฉ์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์—…๋ฌด์— ๋Œ€ํ•œ ํฅ๋ฏธ๊ฐ€ ๋–จ์–ด์ง€๋ฉด ์—…๋ฌด ํšจ์œจํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์„ ๋ณ‘ํ–‰ํ•˜๋ฉด์„œ ํšŒ์‚ฌ๋ฅผ ๋ณด๋‹ค ์žฌ๋ฐŒ๊ฒŒ ๋‹ค๋‹ ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜๊ธฐ๋„ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ธ€์„ ๋งˆ์น˜๋ฉฐ

 

 ์ด์ œ๋Š” 7๋…„ ์ฐจ ์—”์ง€๋‹ˆ์–ด๋กœ์จ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์–ด๋А๋ง ์ง„๊ธ‰์‹œ๊ธฐ๋„ ๊ฐ€๊นŒ์›Œ์กŒ๋‹ค. ํšŒ์‚ฌ๋ฅผ ์—ด์‹ฌํžˆ ๋‹ค๋‹ˆ๋‹ค๋ณด๋‹ˆ ์—…๋ฌด์— ๋Œ€ํ•œ ๋‘๋ ค์›€์ด๋‚˜ ๋ง‰์—ฐํ•จ์€ ์–ด๋А ๋ง ์‚ฌ๋ผ์ง„ ์ง€ ์˜ค๋ž˜์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ณด๋‹ค๋Š” ํšŒ์‚ฌ์˜ ์—…๋ฌด๋ฅผ ์–ด๋–ป๊ฒŒ ์ž˜ ํ•ด๋‚ด๊ณ  ์กฐ๊ธˆ ์—ฌ์œ ๊ฐ€ ์žˆ์„ ๋•Œ ๋‚˜์˜ ์„ฑ์žฅ๋„ ์ด๋Œ์–ด ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ ํ•ญ์ƒ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ํ•˜๋ฃจํ•˜๋ฃจ๋ฅผ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค. ์˜ฌํ•ด๋„ ๋‹ค์–‘ํ•œ ์—…๋ฌด์—์„œ ์ง‘๋…์„ ๊ฐ€์ง€๊ณ  ์ตœ์„ ์„ ๋‹คํ•˜๋‹ค ๋ณด๋ฉด ์ข‹์€ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ ๊ธฐ๋Œ€ํ•ด ๋ณธ๋‹ค.

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€