Microsoft๋Š” mimalloc ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ง๋ก ์›๋ž˜ ์–ธ์–ด์˜ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„์—์„œ ์ฝ”์šฐ ะธ ๋ฆฐ. Mimalloc์€ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ‘œ์ค€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์กฐ์ •๋˜์—ˆ์œผ๋ฉฐ malloc ๊ธฐ๋Šฅ์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows, macOS, Linux, BSD ๋ฐ ๊ธฐํƒ€ Unix ๊ณ„์—ด ์‹œ์Šคํ…œ์—์„œ์˜ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

mimalloc์˜ ์ฃผ์š” ํŠน์ง•์€ ์ปดํŒฉํŠธํ•œ ๊ตฌํ˜„(3500์ค„ ๋ฏธ๋งŒ์˜ ์ฝ”๋“œ)๊ณผ ๋งค์šฐ ๋†’์€ ์„ฑ๋Šฅ์ž…๋‹ˆ๋‹ค. ์•ˆ์— ์ˆ˜ํ–‰๋œ ํ…Œ์ŠคํŠธ mimalloc์€ ๋‹ค์Œ์„ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒฝ์Ÿ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ œ๋ง ๋ก, tcmalloc, snmalloc, rpmalloc ะธ ๋น„์žฅ.

์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์˜ ์„ธํŠธ ํ‘œ์ค€ ํ…Œ์ŠคํŠธ ์ผ๋ถ€ ํ…Œ์ŠคํŠธ์—์„œ๋Š” mimalloc์ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋ณด๋‹ค ๋ช‡ ๋ฐฐ ๋” ๋น ๋ฅด๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ๊ฐœ์ฒด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ…Œ์ŠคํŠธ์—์„œ mimalloc์€ tcmalloc ๋ฐ jemalloc๋ณด๋‹ค 2.5๋ฐฐ ์ด์ƒ ๋น ๋ฅธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ๋Œ€๋ถ€๋ถ„์˜ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ฐ์†Œํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์œผ๋ฉฐ ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด 25%๊นŒ์ง€ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” mimalloc ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—ฐ๊ฒฐ ๋‹จ๊ณ„์— ํฌํ•จ๋˜๊ฑฐ๋‚˜ ์ด๋ฏธ ์กฐ๋ฆฝ๋œ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(โ€œLD_PRELOAD=/usr/bin/libmimalloc.so myprogramโ€). ๋„์„œ๊ด€์—์„œ๋Š” ๋˜ํ•œ API ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์œผ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ํ•ธ๋“ค๋Ÿฌ ์—ฐ๊ฒฐ ๋ฐ ๋‹จ์กฐ๋กญ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ์ฐธ์กฐ ์นด์šดํ„ฐ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋Ÿฐํƒ€์ž„ ๋ฐ ์„ธ๋ถ„ํ™”๋œ ๋™์ž‘ ์ œ์–ด์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—ฌ๋Ÿฌ "ํž™"์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํž™์— ๋ฐฐ์น˜๋œ ๊ฐœ์ฒด๋ฅผ ๊ฑฐ์น˜๊ฑฐ๋‚˜ ๋ณ„๋„๋กœ ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ํž™์„ ์™„์ „ํžˆ ํ•ด์ œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋ก ๊ฒฝ๊ณ„์—์„œ ํŠน์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์‚ฌ ํŽ˜์ด์ง€(๊ฐ€๋“œ ํŽ˜์ด์ง€)๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ๋ธ”๋ก ๋ฐฐํฌ์˜ ๋ฌด์ž‘์œ„ํ™”์™€ ํ•ด์ œ๋œ ๋ธ”๋ก ๋ชฉ๋ก์˜ ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•ˆ์ „ ๋ชจ๋“œ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ์น˜๋ฅผ ํ†ตํ•ด ํž™ ๊ธฐ๋ฐ˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์•…์šฉํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ธฐ์ˆ ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ˆ์ „ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์•ฝ 3% ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

mimalloc์˜ ํŠน์ง• ์ค‘ ํฐ ์กฐ๊ฐํ™”๋กœ ์ธํ•œ ํŒฝ๋งŒ๊ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ๋„ ์ฃผ๋ชฉ๋ฉ๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ 0.2% ์ฆ๊ฐ€ํ•˜๊ณ  ๋ถ„์‚ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฒฝ์šฐ 16.7%์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ถฉ๋Œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด mimalloc์€ ์›์ž์„ฑ ์ž‘์—…๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€