Π‘Π»Π΅Π΄ Π±Π»ΠΈΠ·ΠΎ ΡΠ΅ΡΠΈΡΠΈΠ³ΠΎΠ΄ΠΈΡΠ½Π° ΠΏΠ°ΡΠ·Π° (Π²ΠΈΠΆΡΠ΅ βjemalloc Π²ΡΠΈΡΠΊΠΎβ) Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 5.3.1 Π½Π° Π°Π»ΠΎΠΊΠ°ΡΠΎΡΠ°, jemalloc β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° malloc(3), ΠΊΠΎΡΡΠΎ ΠΏΠΎΡΡΠ°Π²Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΡ.
ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π° Π½Π°Π΄ 390 ΠΊΠΎΠΌΠΈΡΠ° Ρ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΠ°.
ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· BSD.
ΠΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° pvalloc(3).
- ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π΄Π²ΠΎΠΉΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΎΡΠ»Π°Π΄ΡΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ βenable-pageid Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ.
- Π΄ΠΎΠ±Π°Π²Π΅Π½ runtime ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ prof_bt_max Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° Π½Π° ΡΡΠ΅ΠΊΠ° Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ βenable-force-getenv Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° getenv Π²ΠΌΠ΅ΡΡΠΎ secure_getenv;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ βdisable-dss Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° sbrk(2);
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ tcache_ncached_max Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±ΡΠΎΡ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² ΠΊΠ΅ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΈΡΠ΅.
- Π΄ΠΎΠ±Π°Π²Π΅Π½ runtime ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ calloc_madvise_threshold Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΎΠ²Π°, Π΄Π°Π»ΠΈ ΡΠ΄ΡΠΎΡΠΎ ΠΈΠ»ΠΈ memset ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΏΠ°ΠΌΠ΅Ρ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° calloc;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ βdisable-user-config Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΎΡ ΡΠ°ΠΉΠ»Π° /etc/malloc.conf ΠΈΠ»ΠΈ ΠΎΡ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° MALLOC_CONF;
- Π΄ΠΎΠ±Π°Π²Π΅Π½ runtime ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ disable_large_size_classes Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π½ΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΡΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΏΠ°ΠΌΠ΅Ρ, Ρ.Π΅. Ρ ΡΠ°Π·ΠΌΠ΅Ρ >= 4 * PAGE;
- Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° process_madvise ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° process_madvise_max_batch Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² Π²ΡΡΠΊΠ° βΠΏΠΎΡΡΠ°Π²ΠΊΠ°β madvise;
- Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ mallctl:
- opt.prof_bt_max;
- arena.<i>.name Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° βΠ°ΡΠ΅Π½ΠΈΡΠ΅β;
- thread.tcache.max Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° tcache_max Π·Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π½ΠΈΡΠΊΠ°;
- thread.tcache.ncached_max.write ΠΈ thread.tcache.ncached_max.read_sizeclass Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ncached_max Π·Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π½ΠΈΡΠΊΠ°;
- arenas.hugepage Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ hugepage, ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½ Π² ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π° malloc;
- approximate_stats.active Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΎΠ±Π΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΠΈ Π±Π°ΠΉΡΠΎΠ²Π΅, ΠΊΠΎΡΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π° Ρ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ.
- ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
