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

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

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

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 обязательно


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

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

     
     
  • 4.63, нах. (?), 08:35, 20/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> Потому что mimalloc быстрее и эффективнее
    > Только память освобождать не умеет, лол.

    ну вот же ж - быстро и эффективно!

     
     
  • 5.78, _hide_ (ok), 15:19, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Тут можно сказать только одно: из-за того, что первоначально цель была не быстро выделить, а выделить как можно меньше, то никакой непрямой адресации предусмотрено не было. Сейчас же, релокация (дефрагментация) и оптимизация можно реализовать только существенно замедлив из-за неконтролируемых блокировок в момент релокации.
     
  • 3.12, вымя (?), 00:20, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > 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

     
     
  • 4.58, Аноним (58), 19:13, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > В одном только solvespace с ним постоянная возня

    А им-то зачем нестандартный malloc, для wasm что ли?
    Как тогда всё остальное emscripten собирает, так же через жопу?

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

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

     
     
  • 4.18, Сладкая булочка (?), 01:53, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > вероятно какахокодеры на жабаскрипте там что то учудили

    Проблемы негров ширифа не волнуют или зачем в языке с гц думать об аллокациях? Вот они и не думают.

     
  • 4.23, timur.davletshin (ok), 07:26, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Лиса же и так свой аллокатор использует. Если память не изменяет, то это jemalloc и есть.
     
  • 3.14, Ivan_83 (ok), 00:29, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я как бы целом имел ввиду что аллокатору развиватся особо некуда.

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

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

     
  • 2.15, вымя (?), 00:31, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Все ускорения они ещё в 5 3 обещали Но смысла никакого верить красивым чиселкам... большой текст свёрнут, показать
     
     
  • 3.17, Сладкая булочка (?), 01:51, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > потому что паттерн выделения памяти у всех разный.

    Нужен адаптивный аллокатор с ЫЫ.

     
     
  • 4.22, Аноним (22), 05:55, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тухло с этим. Пока самый лучший результат у Fable 5.1 с оценкой 7% при попытке написать бинарник в машинных кодах без посредника в виде языков программирования. Но начало положено, авось лет через 5 будет что-то внятное (если государства и корпорасты не придушат ИИ).
     
  • 2.21, Аноним (22), 05:52, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Ни одной буквы о том как изменилась производительность.

    Там просто нечего улучшать при всём желании

     
  • 2.70, onanim (?), 09:48, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    очень давно использовал, версии 2.х превращали тележку в ракету, начиная с вроде бы, точно уже не помню, версии 3.1, jemalloc сломали и она стала такой же медленной, как обычный malloc. недавно сравнивал дефолтную дебиановску 5.3 с какой-то 3.х, самой последней которая конпельнулась, разницы в производительности не заметил. 2.х в свежем дебиане уже не конпеляются.
     

  • 1.8, Аноним (8), 23:33, 18/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Ненужно. Если требуется специальное управление памятью, то сам напишу. Функциями ос никто ещё пользоваться не запрещал, не все правда про них знают почему-то.
     
     
  • 2.19, Абра (?), 04:51, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А после таких деятелей месяцами ловим случайные мютексы, потому что не научились читать документацию до конца...
     
     
  • 3.35, Аноним (35), 11:40, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не надо брать кого не попадя.
     
     
  • 4.79, _hide_ (ok), 15:24, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну для таких есть Раст.
     
  • 2.40, Фембойчик (?), 12:31, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > специальное управление памятью

    Это как, а главное зачем?

     
     
  • 3.41, Аноним (41), 13:08, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Я понимаю что ты не настоящий сварщик, но почитай немного про кеш, выравнивание, доступ к памяти и тп и удивись насколько можно убыстрить программу просто грамотно работая с памятью.
     
     
  • 4.44, Аноним (22), 13:17, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > убыстрить программу

    Не стоит оно того, ради "убыстрения" на 0.01%. Лучше просто купить новое железо.

     
     
  • 5.47, Аноним (47), 14:33, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Цифры у тебя конечно же высосаны.
     
     
  • 6.49, Аноним (49), 15:33, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Цифры у тебя конечно же высосаны.

    То ли дело "цифры" в "насколько", ога. Кстати, очередной (к)експерт не в курсе, что malloc в современных либах обычно отдает уже выровненную память (а если нужно, то можно и запросить: valloc, posix_memalloc, aligned_alloc) ...

     
     
  • 7.52, Аноним (8), 17:04, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Дурачок ты, ии тебе ответ подсказал, но смысла ты не понимаешь того что написал
     
     
  • 8.54, Аноним (49), 17:30, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Теперь ясно, откуда взял свою к экспертизу 128580 Ну куда уж мне, велосипеди... текст свёрнут, показать
     

  • 1.24, DEF (?), 08:01, 19/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –18 +/
    Смеялся. C настолько крут, что ему нужна аж целая отдельная библиотека для выделения памяти.
     
     
  • 2.29, Аноним (29), 09:22, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Любителя Rust видно из далека. Вера в безопасную работу с памятью есть, а знаний работы ОС нет.
     
     
  • 3.50, DEF (?), 16:28, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У тебя есть знания ОС? Покажи свои коммиты в проект любой ОС.
     
     
  • 4.53, Аноним (29), 17:20, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >У тебя есть знания ОС?

    Есть.
    >Покажи свои коммиты в проект любой ОС.

    Не покажу, не хочу спойлерить.

     
  • 2.31, Ivan_83 (ok), 09:39, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да как бы можешь в виде .h файла заинлайнить, тебя же никто не заставляет.

    Но в целом, судя по коменту, вы похоже из тех кто думает что электричество из розетки берётся а память язык магическим образом у ОС забирает и программе отдаёт %)

     
     
  • 3.38, Фембойчик (?), 12:14, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > электричество из розетки берётся

    Ты смеешь спорить?

     
  • 3.51, DEF (?), 16:37, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Зачем я должен инлайнить лишний .h файл какой-то либы, которая не делает ничего, кроме как выделяет память? Выделение памяти - это стандартная, вшитая в язык операция. Если C не способен нормально выделить память своими собственными средствами без посторонних либ - его место на свалке истории.
     
     
  • 4.55, Аноним (29), 17:31, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя бы нейронку спросили бы, чем писать такое. ОС выделяет страницу памяти, с которой уже работает аллокатор стандартной библиотеки, когда программист вызывает malloc.
    >Выделение памяти - это стандартная, вшитая в язык операция.

    Попробуйте в Rust флаг no_std, вы будете в шоке.

     
  • 4.61, Ivan_83 (ok), 05:58, 20/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    С это вам не модные языки со злой гопожой или ещё какой фигнёй.
    Тут можно почти всё переопределить/заменить своим.
     
  • 4.74, Аноним (74), 12:31, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Назови хоть один высокоуровневый язык, который под капотом не использует библиотеки для выделения памяти
     
     
  • 5.80, Аноним (80), 15:47, 21/09/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.37, Аноним (37), 11:48, 19/09/2026 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 2.57, Сладкая булочка (?), 18:49, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > C настолько крут, что ему нужна аж целая отдельная библиотека для выделения памяти.

    ...которую используют в расте

     
  • 2.65, Аноним (37), 11:54, 20/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не нужна. Можешь sbrk()'ем двигать, можешь mmap'ить. Зачем тебе библиотека для этого?
     
     
  • 3.83, фф (?), 12:42, 22/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    как будто mmap не из библиотеки
     
  • 2.66, warlock66613 (ok), 20:53, 20/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Эта целая отдельная библиотека была глобальным аллокатором в Rust и перестала быть таковым не потому, что стала не нужна, а потому что повилась возможность кастомизации глобального аллокатора и возможность оформить её как и положено — как подключаемую библиотеку.
     

  • 1.25, Аноним (25), 09:06, 19/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Объясните мне простому зачем нужная такая библиотека, если такой механизм предоставляется самой ОС через системные вызовы? Он что типо в обход системных вызовов работает?
     
     
  • 2.28, Аноним (29), 09:20, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это функционал библиотеки Си, а ОС представляет только функционал POSIX по типу mmap и munmap.
     
  • 2.30, anonymousI (?), 09:28, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    То что предоставляет ОС вам очень не понравится.
     
  • 2.32, Ivan_83 (ok), 09:41, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И что же предоставляется самой ОС?
    sbrk задепрекейтили, остался только mmap(), минимальная аллокация = PAGE_SIZE = 4кб на AMD64.
    Без аллокатора на прямых mmap() мало того что память будет излишне расходоватся так ещё и в сисколы упрётесь в некоторых задачах.
     
     
  • 3.36, Аноним (35), 11:41, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Т.е по-твоему эта "чудная" библиотека работает в обход вызовов ОС. Эксперты опеннета они такие.
     
     
  • 4.48, Аноним (49), 15:24, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Эксперты опеннета они такие.

    Особенно в чтении этим-самым-местом. Он тебе все правильно описал. В проектах чуть больше laba3.c ты будешь неизменно переизобретать вариации этой самой "чудной" библиотеки, причем со всеми граблями, грабельками и граблищами (многопоточность передает привет).
    Но конечно, вариант что все вокруг д'Биллы и неосиляторы и лишь ты - непризнанный гений, нельзя совсем уж исключать, да 🙄

     
  • 4.76, Аноним (76), 13:43, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Т.е по-твоему эта "чудная" библиотека работает в обход вызовов ОС.

    Она разок дергает mmap чтобы запросить большой кусок памяти у ОС, а потом нарезает из того куска кусочки поменьше, которые просит твоя программа через вызов malloc, вот и всё.
    Это если говорить очень упрощенно и опустить существование арен и многопоточности.

     
  • 2.39, Фембойчик (?), 12:18, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тоже нефига не понял, зачем, если в стандартной библиотеке уже все есть. Правда я не сишник и вообще не погромист.
     
     
  • 3.46, Аноним (47), 14:32, 19/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что ты не знаешь как это всё работает, поэтому и не понял.
     
  • 3.75, Аноним (74), 12:33, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что версия в стандартной библиотеке рассчитана под одни условия эксплуатации и виды нагрузки (как правило усредненные), а эта - под другие, уже более специфические условия
     
  • 3.77, Аноним (76), 13:49, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В glibc стандартный аллокатор достаточно медленный, особенно на освобождении памяти через вызов free.
    А так "если в стандартной библиотеке уже все есть" в таком случае лучше всем перелезть на FreeBSD, там jemalloc действительно уже есть по умолчанию в libc и во многих кейсах он лучше того, что в glibc.
     
  • 2.64, ИмяХ (ok), 09:57, 20/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>механизм предоставляется самой ОС

    Ну а ОС, конечно же, сделана из магии, а не написана на языке программирования.

     

  • 1.69, Sm0ke85 (ok), 07:20, 21/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >Изначально библиотека была разработана для FreeBSD и используется в данной ОС по умолчанию с 2005 года. Код библиотеки написан на Си и распространяется под лицензией BSD.

    Как додумаются до ГПЛ - пусть приходят, а так "Ненужна"...

     
     
  • 2.71, 1 (??), 10:07, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Перелицензируй под GPL - делов-то. Лицензия позволяет.
    И что, сразу станет "Нужна" ?
     
     
  • 3.72, Sm0ke85 (ok), 12:07, 21/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Перелицензируй под GPL - делов-то. Лицензия позволяет.

    Ага, оно ж так обычно и происходит... [сарказм]

    >И что, сразу станет "Нужна" ?

    да

     
     
  • 4.81, Аноним (80), 15:51, 21/09/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 5.82, Sm0ke85 (ok), 07:26, 22/09/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

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



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

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