Автор библиотеки управления памятью jemalloc объявил о прекращении разработки проекта и перевёл GitHub-репозиторий в архивный режим, допускающий доступ только для чтения. Библиотека jemalloc предлагала альтернативную реализацию функций malloc, оптимизированную для снижения фрагментации и работы на многопроцессорных системах. В 2005 году библиотека была включена в состав FreeBSD, а в 2007 была задействована в Firefox...Подробнее: https://www.opennet.me/opennews/art.shtml?num=63405
А что там можно ещё разрабатывать?
> автор jemalloc уволился из Facebook, а разработка была продолжена оставшейся командой из FacebookА что тут вообще можно использовать?
Книгомордые редиски, переезжаем на tcmalloc от гугла или mimalloc от майков.
dfwmalloc
wtfmalloc
hardened_malloc?
> This is a security-focused general purpose memory allocator providing the malloc API along with various extensions. It provides substantial hardening against heap corruption vulnerabilities.
> The security-focused design also leads to much less metadata overhead and memory waste from fragmentation than a more traditional allocator design.
> It aims to provide decent overall performance with a focus on long-term performance and memory usage rather than allocator micro-benchmarks.
> It offers scalability via a configurable number of entirely independent arenas, with the internal locking within arenas further divided up per size class.
Она была ужасно кривая и ломала примерно весь софт. Конфигурация сложная и не универсальная. При обновлениях всё рассыпается, сначала файрфокс с ней работал, потом перестал.
Какая-то тупая совсем ложь. У меня на ней кластер работал годами.
Да конечно. Кластер чего, кластер питона с пхп? Ну и то что было раньше не считается, софт то развивается, а стабж давно стагнирует.
Использовал. Не было проблем....
> сначала файрфокс с ней работал, потом пересталСистемный аллокатор без проблем заменяется и стабильно работает везде... За исключением тех случаев, когда программа сама использует hardener allocator, у которого другие ожидания от системного
В частности firefox уже использует форк jemalloc из коробки, и ему не нравится когда он запущен поверх системного jemalloc/tcmalloc
Аналогично с хромом - он включает в себя tcmalloc, и он тоже падает если в системе аллокатор стоит tcmalloc/jemallocОба используют свои аллокаторы в первую очередь для hardening, и если ты выключишь в браузерах hardening - то они у тебя будут работать на любом системном аллокаторе, ну и его ты соответственно можешь hardened ставить
Питон у меня тоже внезапно отвалился. Но да, у него свой аллокатор поверх системного. Это было актуально, потому что питон весьма жадный до памяти. А вот tcmalloc я переопределяю как раз для электрон приложений, чтобы они умерили аппетиты.
Не поумерят, в хромиуме у тебя по дефолту tcmalloc
А ну скажем это зависит от платформы. И бандленный tcmalloc это не системный tcmalloc. Правда, на jemalloc у меня так и не получилось поменять. https://github.com/webrtc-uwp/chromium-base/blob/master/allo...
> А ну скажем это зависит от платформы. И бандленный tcmalloc это не
> системный tcmalloc.А какая разница? Всё наиболее часто выделяющее его использует
> Правда, на jemalloc у меня так и не получилось
> поменять.Переключи на системный аллокатор, и выключи несколько hardening опций касательных аллокаций памяти (jemalloc сам помогает за целостностью памяти следить) - и оно будет работать с jemalloc
была б кривая никто бы не поддерживал так долго её.
на ней бюджет не попилить как на AI или чатботах там, колцентрах автоматизированных. значит нужно было это всё. Мета кстати а Ирландии зарегистрирована, это вообще не фейсбук.
отовсюду выкидывают, где навязывали, то, что глибц не идеальна, не делает сабж предпочтительнее
Поясните какой там может быть технический долг? Там кода не так много...
Код непонятен нынешнему поколению миддлов, в т.ч. и "выросших" из квотчиков?
Неправильное форматирование кода?
Нет auto-обёрток над типами, все в size_t?
Новый компилятор выдаёт целую стену из "пустых" ворнингов при сборке?
Для продолжения разработки нужно не на митапы по защите мигрантов ходить, а раскуривать логику?
Это просто прикрытие реальной нехватки рабочих рук при формально закрытых вакансиях.
Индуса Вахмаражью страшно пускать в боевую репу, его форк уже год не может даже час проработать без краша при интенсивном выделении/освобождении памяти?Выбери любые три.
Из того, что сразу видно на поверхности: билд-система на autotools, что очень усложняет кросс-платфоменность. По утверждению автора, они хотели несколько раз переехать на cmake, и все неудачно. Второй вектор - соответствие современным стандартам языка, возможно, сейчас можно уже что-то подчистить, убрать устаревшие конструкции
Я не сильно в код вдавался, не могу оценить фронт работ, но видится, команда в 4-5 толковых специалистов справилась бы за обозримый срок. Не знаю, что они там в своем Фейсбуке теплятся.
В чем прикол подобных биюлиотек? Не очень понятно в каких случаях надо юзать их, а не стандартную реализацию. И разве ядро не справляется с фрагментацией само?
погугли
гуглить уже не модно, спроси у джипити
Что значит стандартная реализация? В каждой ОС, libc эти "стандарты" разные. Вот, к примеру, во FreeBSD - jemalloc и есть стандратная реализация, т.е. ты пишешь char *p = malloc(1024); и вызывается jemalloc.
т.е. фря всё?
Так она давно "всё".
Фря стала "всё" в тот момент, когда первый школьник установил Linux на свой десктоп, зашёл с него на опеннет и объявил, что всё, кроме Linux'а теперь - всё.
glibcшный аллокатор во многих задачах работает хуже чем хотелось бы
> glibcшный аллокатор во многих задачах работает хуже чем хотелось быGlibc имеет не меньше параметров для конфигурации.
> Glibc имеет не меньше параметров для конфигурации.Это шутка такая?
https://www.gnu.org/software/libc/manual/html_node/Malloc-Tu...
vs
https://jemalloc.net/jemalloc.3.html#mallctl_namespace
И при этом jemalloc/tcmalloc из коробки для многих нагрузок работают лучше по дефолту, у glibcшного ptmalloc например слишком много блокировок происходит при большом числе потоков, в то время как другие аллокаторы реализуют быстрые thread-local арены
Не просто так все бразуеры по дефолту на Linux заменяют системный аллокаторВ комментарии к ptmalloc есть такой комментарий:
> This is not the fastest, most space-conserving, most portable, or
> most tunable malloc ever written. However it is among the fastest
> while also being among the most space-conserving, portable and tunable.
> Consistent balance across these factors results in a good general-purpose
> allocator for malloc-intensive programs.Однако он давно устарел, и единственная причина по которой алгоритмы заменять не будут - потому что ptmalloc имеет относительно простой код, и он прощает программам многие ошибки... Что конечно плохо, но на практике из-за этого многие программы написанные под Linux не умеют работать с другими аллокаторами, даже с musl, который ещё проще и ещё более прощающий (Но при этом ещё медленнее и по ряду критериев хуже чем ptmalloc)
Просто посмотри сравнение с malloc на примере ноды
https://github.com/nodejs/node/issues/21973
> ядро не справляется с фрагментацией само?Нет. Ядро решает проблемы фрагментации физической памяти, создавая виртуальные адресные пространства. Фрагментация кучи, это когда у тебя виртуальное адресное пространство процесса забито вперемешку занятыми кусками памяти и свободными, и для новых кусков памяти сложно найти свободный нужного размера, из-за чего приходится запрашивать у ядра ещё страниц памяти.
> Не очень понятно в каких случаях надо юзать их, а не стандартную реализацию.
Если не понятно, значит не нужно. Когда споткнёшься об это, всё сразу станет ясно.
для freeswitch на больших нагрузках решала много проблем с качеством голоса и тормозами. теперь нужно искать замену. печаль.
Чегой??
Какие нахрен нагрузки??? Причем тут FreeSwitch?
Sofia знешь че такое и Nokia изначально? :)
Да, Nokia мощно вкинула SIP стэк в опенсоурс
У вас просто нет таких нагрузок, под которыми монструозно костыльный фрисвитч ляжет... внезапно именно из-за аллокатора. Так уж это вот поделие написали. Но если честно - я бы его таки шардил при появлении подобных нагрузок.
Ага. В школе каникулы, вот и повылазило со всех щелей необразованное быдло без реального опыта.
У меня и так кластер из 100+ fs серверов в aws с 15000+ cps, сотнями тысяч доменов юзверей, с десятками LB/registrar/presense opensips и вот тут начинается самый нежданчик.
> для freeswitch на больших нагрузках решала много проблем с качеством голоса и
> тормозами. теперь нужно искать замену. печаль.BSD как не странно работает лучше всех. Хехехе
Есть проблемы - напиши мне и я сделаю тебе минимальные тайминги
> BSD как не странно работает лучше всех.Но только на суперсекретных локалхостах местных анонимов. В дикой природе встречается крайне редко и в очень ограниченном количестве случаев.
> крайне редко и в очень ограниченном количестве случаев.Потому что Free BDSM сессии на халяву, да еще в пассивной роли - это такое себе.
> Есть проблемы - напиши мне и я сделаю тебе минимальные таймингиИ драйверы под современное железо напишешь? Так с хрена ты еще не разработчик?
мистер, вы что-то запутались в показаниях!
Какие еще тебе "драйверы для современного железа" нужны твоему (вероятнее всего - воображаемому) кластеру в aws, с мильенстатыщами одних курьеров только?
Если присмотреться в код фрисвича, там такое можно найти, что все волосы сразу зашевелятся и не только.
и как они баги фиксят (нет) годами, которые приводят к зависанию сессий и до сих пор висят в gh. и много чего еще можно рассказать.
Ушла эпоха...
"После переименования в Meta приоритеты компании изменились, развитие библиотеки застопорилось и разработка сосредоточилась только на внутренних потребностях."А всё почему, потому что не GPL?!
А всё потому, что Цукерберг хочет метавселенные. Но совершенно не понимает, как их сделать интересными не только для него одного.
1с с ней хорошо работает...
(((
Rust до 1.32 его тоже использовал по дефолту.
Дырявый сишный аллокатор? А как же безопасность?
"Это другое !" (tm)
Так там, ведь, безопасТность же. Потому не страшно ;)
Ну сейчас тысячерук-то подберёт.
> В 2017 году автор jemalloc уволился из Facebook, а разработка была продолжена
> оставшейся командой из Facebook. После переименования в Meta приоритеты компании изменились, развитие библиотеки
> застопорилось и разработка сосредоточилась только на внутренних потребностях.Очень длинный способ сказать "меня кинул мегакорп с пермиссивщиной". Надо же, как неожиданно, скупил, перехватил, на мороз пустил, индусами заменил.
А они все продолжают и продолжают убеждать всех что пермиссивка это хорошо. Сколько еще подобных случаев нужно, чтоб люди наконец поняли, что только жпл спасет ит?
В мит же так и написано - можно брать и продавать чужой код, а люди все надеются, что добрые корпорации их отблагодарят. Ну да, вон какие благодарности, такие шо оригинальные авторы из отрасли уходят.
> А они все продолжают и продолжают убеждать всех что пермиссивка это хорошо.Она и хороша. Фэйсбуку, вытершему обо всех ноги, в стандартном корпоративном стиле. Сами ж написали в лицензии Do Whatever F... You Want. Ну они и использовали автора как коврик для ног. Ничего не знаем, умещается в пределы лицензии.
> код, а люди все надеются, что добрые корпорации их отблагодарят. Ну
> да, вон какие благодарности, такие шо оригинальные авторы из отрасли уходят.Ну вот и отблагодарили - автыря на мороз, в код - индусов, ничего личного это бизнес. И тут автор такой репу чешет - а зачем ему забесплатно фикальи за индусами чистить?!
> Она и хороша. Фэйсбуку, вытершему обо всех ноги, в стандартном корпоративном стиле.
> Сами ж написали в лицензии Do Whatever F... You Want. Ну
> они и использовали автора как коврик для ног. Ничего не знаем,
> умещается в пределы лицензии.И тут ты нам щас расскажешь, как именно GPL предотвратил бы "скупил, перехватил, на мороз пустил, индусами заменил"? И что именно изменилось бы в "тут автор такой репу чешет - а зачем ему забесплатно фикальи за индусами чистить?!"
Или как обычно, будет лишь выделение метанчика в лужу?
Если бы у чела был код под GPL - он бы до сих пор жил в мамином подвале и jemalloc просто оставался бы ещё одним никому не нужным васянским проектом. А так он оказался хоть кому-то нужен, пусть и временно, а чел немного денег заработал на еду.
> Если бы у чела был код под GPL - он бы до сих пор жил в мамином подвалеУ Торвальдса нормальный такой подвал так то. С женой-каратисткой, бэхой, топовым EPYC и чем там еще. Сотрудникам мордокниги выделяют подвалы лучше? :)
Да, GPLный проект если что. А такие же но BSD Licensed - на всю толпу совсем другие суммы делят, там да, в пору в подвале жить.
Потому что ранние линукс-компании, такие как Red Hat, выходя на биржу, подарили ему акции в качестве жеста благодарности. Могли бы этого и не делать, было бы не очень красиво, но юридически никаких претензий. Просто нормальными людьми оказались, не жадными.
>После переименования в Meta приоритеты компании изменились, развитие библиотеки застопорилось и разработка сосредоточилась только на внутренних потребностях. Общедоступная кодовая база со временем деградировала и для устранения накопленного технического долга теперь требуется проведение значительного рефакторинга.Всё, что надо знать о корпоративном опенсорсе.
Линукс - он такой.
Не про библиотеку, но в тему: ВОТ СЕЙЧАС самое время вылезти прыщавым экспертам и покричать про "плохой и медленный GC" :))Да, GC вообще не сравним по скорости с самопальными аллокаторами, но он УНИВЕРСАЛЕН и скажем прямо, вполне годится для 99% прикладух. Более того - например, GC из .NET может даже не выделять память для объекта, если у неё в несобраном мусоре есть шмот такого же типа - она просто его пометит "живым" и отдаст как выделенный! Т.е. оптимизация и всё такое.
Так что прекращаем ныть про GC и начинаем писать на D. :)
> Не про библиотеку, но в тему: ВОТ СЕЙЧАС самое время вылезти прыщавым
> экспертам и покричать про "плохой и медленный GC" :))На ваше горе хруст придумал как обходиться без GC, резко переопределив обладателей GC в номинацию мамонтов и динозавров. Это все что нужно знать о технологии GC.
Да-да, Rust придумал, как бороться с use_after_free - методом фейкового освобождения памяти. Утечки - это же не уязвимости.
Для 99% прикладух годится malloc() из GLibc.
Печально, использовал его вместе с MySQL
Память не выжирал и не тёк, очень даже годный продукт был.