Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Опубликована библиотека управления памятью jemalloc 5.3

18.09.2026 22:02 (MSK)

Представлен релиз библиотеки управления памятью 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.


  1. Главная ссылка к новости (https://github.com/jemalloc/je...)
  2. OpenNews: Доступна библиотека управления памятью jemalloc 5.3.1
  3. OpenNews: Facebook возобновил разработку библиотеки управления памятью jemalloc
  4. OpenNews: Прекращена разработка библиотеки управления памятью jemalloc
  5. OpenNews: Miсrosoft открыл код системы распределения памяти mimalloc
  6. OpenNews: Google опубликовал новый вариант системы распределения памяти TCMalloc
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66304-jemalloc
Ключевые слова: jemalloc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, нах. (?), 22:16, 18/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Фейсбук за все берется смело... боюсь получится как с memcache.

     

  • 1.2, жявамэн (ok), 22:24, 18/09/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     

  • 1.3, Ivan_83 (ok), 22:33, 18/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ни одной буквы о том как изменилась производительность.
    Подозреваю что там никаких улучшений нет уже лет 10, а автор перевёл его в архив потому что делать там больше нечего, всё и так прекрано работает.
     
     
  • 2.5, Аноним (4), 22:41, 18/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что mimalloc быстрее и эффективнее, конкурировать с ним пустое дело. Сабж позволяет решать специфические задачи специфического оборудования. В кластерах, да. Если рассматривать сабж на примере жырнолиса, можно ему зажать пиковую память, но тогда тормозит очень сильно. Почему каждые 3 секунды выделяет и удаляет по гигабайту памяти на твиче, никто так и не объяснил. Иногда просто начинает течь. Если поменять на mimalloc (требует перекомпиляция), не течёт.
     
     
  • 3.9, Аноним (9), 23:47, 18/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что mimalloc быстрее и эффективнее

    Только память освобождать не умеет, лол.

     
  • 3.10, Аноним (10), 23:49, 18/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Huge pages отключи, шkoлoтpoн.
     
     
  • 4.11, Аноним (4), 00:04, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В mimalloc тоже huge pages.
     
  • 3.12, вымя (?), 00:20, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > mimalloc
    > конкурировать с ним пустое дело

    ...по части багов. В одном только solvespace с ним постоянная возня и необходимость прибивать конкретные версии:

    > Confirmed that going back to the vendored mimalloc fixes it
    > This is fixed in v2.2.4, but we unfortunately can't use it due to another issue (microsoft/mimalloc#1124), so we have to downgrade for now until it is fixed.
    > mimalloc has been the least reliable dependency

     
  • 3.13, Ivan_83 (ok), 00:24, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Без понятия как там быстрее или нет mimalloc, я не замечал чтобы у меня что либо тормозило.
    Нормально написанный софт аллокатор лишний раз не дёргает.
    В случае браузера - возможно, там же джава внутри может какой угодно какакод запускать.

    Лису я тоже память на уровне системы ограничил, но так чтобы он меня часто не беспокоил своим перееданием и тормозами.
    Твич не юзал, вероятно какахокодеры на жабаскрипте там что то учудили.

     
  • 3.14, Ivan_83 (ok), 00:29, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Я как бы целом имел ввиду что аллокатору развиватся особо некуда.

    Один раз выбрали стратегию, выбрали свой баланс и всё.
    За все годы разве что huge pages отрасли и ещё очень по мелочи всякие флаги для mmap(), и sbrk() выкинули. На этом всё развитие и кончается. Раз в 5 лет только поглядывать что по мелочи подкорректировать под текущие стандарты языка С, и специфики системы.

    Если кто то там до сих пор каждую неделю или месяц релизит свой аллокатор - я бы от такого держался по дальше - люди явно эксперементируют и там процесс ради процесса а не для результата.

     
  • 2.15, вымя (?), 00:31, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Ни одной буквы о том как изменилась производительность.
    > This release contains over 160 commits, focusing on the technical debts cleaning including refactorings, bug fixes, test coverage improvement, and option cleanups.

    Все ускорения они ещё в 5.3 обещали. Но смысла никакого верить красивым чиселкам нет, надо тестировать каждое приложение отдельно, потому что паттерн выделения памяти у всех разный. Бывает даже так:

    > Using jemalloc as Ruby’s default is a bit problematic. There was a heated discussion in the Ruby bug tracker about this, but in the end no decision was made. The main issue raised is the fact that memory usage only reduces when using jemalloc 3; memory usage is still high when using jemalloc 5. Nobody knows why, so that makes the choice of defaulting to jemalloc very dodgy.

     

  • 1.8, Аноним (8), 23:33, 18/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ненужно. Если требуется специальное управление памятью, то сам напишу. Функциями ос никто ещё пользоваться не запрещал, не все правда про них знают почему-то.
     
     
  • 2.16, Аноним (7), 00:43, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А как быть кударастам, им же что-то надо делать...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить новость, Поддержать