jemalloc ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 5.4.0 ๋ฒ์ ์ด ์ถ์๋์์ต๋๋ค. ์ด ๋ฒ์ ์ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ฅผ ์ค์ด๊ณ ๋ฉํฐํ๋ก์ธ์ ์์คํ ์์ ์ํํ๊ฒ ์๋ํ๋๋ก ์ต์ ํ๋ malloc ํจ์์ ๋์ฒด ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค. ๋ฉํฐ์ฝ์ด ์์คํ ์์ ๋ฐ์ํ๋ ๋ฝํน ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด jemalloc์ ๊ฐ CPU ์ฝ์ด์ ๋ํด ์์ฒด์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ญ์ ์ฌ์ฉํ๋ฏ๋ก ์ค๋ ๋ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ ํ์ ์ธ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
2025๋ 6์, ํ๋ก์ ํธ ๊ฐ๋ฐ์๋ ์ ์ง๋ณด์๋ฅผ ์ค๋จํ๊ณ jemalloc ์ ์ฅ์๋ฅผ ์์นด์ด๋ธ ๋ชจ๋๋ก ์ ํํ์ง๋ง, ์ฌํด 3์, jemalloc์ ์ธํ๋ผ์ ์ฌ์ฉํ๋ Meta์์ ๊ฐ๋ฐ์ ์ฌ๊ฐํ์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ FreeBSD์ฉ์ผ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ 2005๋ ๋ถํฐ ํด๋น ์ด์ ์ฒด์ ์์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉ๋์ด ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ C ์ธ์ด๋ก ์์ฑ๋์์ผ๋ฉฐ BSD ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
๋ณ๊ฒฝ ์ฌํญ:
- tcache(์ค๋ ๋ ๋ก์ปฌ ์บ์)๋ฅผ ์ฑ์ฐ๊ณ ์ง์ฐ๋ ๋ก์ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋์คํจ์นญ ๋ก์ง์ด ๊ฐ์ํ๋์์ต๋๋ค.
- PAC(Page Allocator Classic) ๋ฐ HPA(Huge Page Allocator) ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง ํ ๋น์๊ฐ ํตํฉ๋์์ต๋๋ค. vtable(PAI vtable)์ ํตํ ๊ฐ์ ํธ์ถ์ด๋ผ๋ ๋ณต์กํ ๋ฉ์ปค๋์ฆ์ด ์ ๊ฑฐ๋์์ต๋๋ค.
- ์ ์ง๋ณด์ ๋ฐ ํ๋ซํผ ํ์ฅ์ ๊ฐ์ํํ๊ธฐ ์ํด ๋ชจ๋ ํ๋ซํผ ์ข ์์ ์ธ ์์ ์ ๋ณ๋์ ํค๋ ํ์ผ๋ก ์ด๋๋์์ต๋๋ค.
- mallctl ๋ช ๋ น์ ์ ๋ฌ ๋ฐฉ์์ด ๊ฐ์ํ๋์์ผ๋ฉฐ, ํต๊ณ ์์ฑ ๋ฐ ํ์๋ฅผ ์ํ ์ธํ๋ผ๊ฐ ์ฌ์ค๊ณ๋์์ต๋๋ค.
- EXTENT_ALLOC_FLAG_PINNED ํ๋๊ทธ๊ฐ ์ถ๊ฐ๋์ด HugeTLB ํ์ด์ง์ ๊ฐ์ด ์ ์ ๋ถ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ๋งคํ ์์ญ์ ์ฐ์ ์ฌ์ฌ์ฉ ๋์์ผ๋ก ํ์ํ ์ ์๊ฒ ๋์์ต๋๋ค. ๊ณ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํต๊ณ๋ฅผ ์ป๊ธฐ ์ํ ์๋ก์ด mallctl ์ธํฐํ์ด์ค์ธ stats.pinned, stats.arenas..pinned
- malloc ํต๊ณ ์ฝํ ์ธ ๋ฅผ ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ํ์๊ณผ JSON ํ์์ผ๋ก ๋๊ธฐํํฉ๋๋ค.
- ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋งค๊ฐ๋ณ์ lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div ๋ฐ lg_tcache_flush_large_div๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru
