ПослС ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π»Π΅Ρ‚Π½Π΅ΠΉ ΠΏΠ°ΡƒΠ·Ρ‹ (см. Β«jemalloc всё») состоялся выпуск 5.3.1 Π°Π»Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π° jemalloc – Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ malloc(3), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Новый выпуск Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π±ΠΎΠ»Π΅Π΅ 390 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² с исправлСниСм ошибок, Π½ΠΎΠ²Ρ‹ΠΌΠΈ функциями, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ пСрСносимости.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ написан Π½Π° языкС Π‘ ΠΈ распространяСтся ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ 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 ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ runtime-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ