RSS DEV ์ปค๋ฎค๋‹ˆํ‹ฐ

๐ŸŒ _Network_IO_Performance_Optimization[20260102074107]

๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์—”์ง€๋‹ˆ์–ด์ธ ์ €์ž๋Š” ์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ ํ”„๋กœ์ ํŠธ์—์„œ ์–ป์€ ์‹ค์งˆ์ ์ธ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ IO ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ ์š”์†Œ๋Š” TCP ์—ฐ๊ฒฐ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”, ์••์ถ•์ž…๋‹ˆ๋‹ค. ์ €์ž๋Š” ์†Œ๋Ÿ‰(1KB) ๋ฐ ๋Œ€๋Ÿ‰(1MB) ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋น„๊ตํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์‹œํ•˜๋ฉฐ, ์ฒ˜๋ฆฌ๋Ÿ‰, ์ง€์—ฐ ์‹œ๊ฐ„, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๋„คํŠธ์›Œํฌ IO ์ตœ์ ํ™” ๊ธฐ์ˆ ๋กœ๋Š” ์ œ๋กœ ์นดํ”ผ( `sendfile` ์‚ฌ์šฉ), ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘( `mmap` ), TCP ํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹, ๋น„๋™๊ธฐ IO๊ฐ€ ๋…ผ์˜๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Node.js, Go, Rust์˜ ๋„คํŠธ์›Œํฌ IO ๊ตฌํ˜„์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. Node.js๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ๋ฐ ๋ธ”๋กœํ‚น ํŒŒ์ผ IO๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค. Go๋Š” ํšจ์œจ์ ์ธ ๊ณ ๋ฃจํ‹ด๊ณผ ํ›Œ๋ฅญํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ๋ฐ GC ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Rust๋Š” `mmap` ๋ฐ `sendfile`์„ ํ†ตํ•œ ์ œ๋กœ ์นดํ”ผ ์ง€์›, ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ, ๋น„๋™๊ธฐ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‘๊ฐ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋น„๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์‹ค์งˆ์ ์ธ ์ตœ์ ํ™” ์กฐ์น˜๋กœ๋Š” ์ฒญํฌ ์ „์†ก ๋ฐ ์—ฐ๊ฒฐ ์žฌ์‚ฌ์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ, ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์œ„ํ•ด UDP ์ตœ์ ํ™” ๋ฐ ์ผ๊ด„ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ž˜ ํŠธ๋ Œ๋“œ๋Š” DPDK ๋ฐ RDMA์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•œ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋„คํŠธ์›Œํฌ IO, ๊ทธ๋ฆฌ๊ณ  ์ ์‘ํ˜• ์••์ถ•๊ณผ ๊ฐ™์€ ์ง€๋Šฅํ˜• ์ตœ์ ํ™” ๊ธฐ์ˆ ์„ ํ–ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์ž๋Š” ๋„คํŠธ์›Œํฌ IO ์ตœ์ ํ™”๊ฐ€ ๋ณต์žกํ•˜๊ณ  ๋‹ค๋‹จ๊ณ„์˜ ์—”์ง€๋‹ˆ์–ด๋ง ์ž‘์—…์ด๋ฉฐ, ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์ ์ ˆํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ „๋žต์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๊ฒฐ๋ก ์ง“์Šต๋‹ˆ๋‹ค.
favicon
dev.to
๐ŸŒ_Network_IO_Performance_Optimization[20260102074107]
Create attached notes ...