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