ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ jemalloc 5.4.0, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ΅ΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ malloc, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π² jemalloc Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΄ΡΠ° CPU ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²ΠΎΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠΎΡΡΠ΅ ΡΠΈΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π ΠΈΡΠ½Π΅ 2025 Π³ΠΎΠ΄Π° Π°Π²ΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΠ» ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΡΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ jemalloc Π² Π°ΡΡ ΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π½ΠΎ Π² ΠΌΠ°ΡΡΠ΅ ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Meta, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠ°Ρ jemalloc Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π΄Π»Ρ FreeBSD ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΠ‘ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ 2005 Π³ΠΎΠ΄Π°. ΠΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π‘ΠΈ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ BSD.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:
- Π£ΠΏΡΠΎΡΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ±ΡΠΎΡΠ° tcache (Thread Local Cache), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
- Π£Π½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ PAC (Page Allocator Classic) ΠΈ HPA (Huge Page Allocator). Π£Π΄Π°Π»ΡΠ½ ΡΡΠ»ΠΎΠΆΠ½ΡΠ½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ΅ΡΠ΅Π· vtable (PAI vtable).
- ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ½Π΅ΡΠ΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
- Π£ΠΏΡΠΎΡΠ΅Π½Π° Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ mallctl, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ»Π°Π³ EXTENT_ALLOC_FLAG_PINNED, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π½Π΅Π²ΡΡΠ΅ΡΠ½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΈΡΡ HugeTLB, Π΄Π»Ρ ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»ΡΠ½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ mallctl: stats.pinned, stats.arenas.<i>.pinned, stats.arenas.<i>.extents.<j>.npinned, stats.arenas.<i>.extents..pinned_bytes ΠΈ stats.arenas.<i>.mutexes.extents_pinned.{counter} .
- Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ 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
