Π‘Π»Π΅Π΄ Π±Π»ΠΈΠ·ΠΎ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡˆΠ½Π° ΠΏΠ°ΡƒΠ·Π° (Π²ΠΈΠΆΡ‚Π΅ β€ž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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster