Вариант для распечатки |
Пред. тема | След. тема | ||
| Форум Разговоры, обсуждение новостей | |||
|---|---|---|---|
| Изначальное сообщение | [ Отслеживать ] | ||
| "Доступна библиотека управления памятью jemalloc 5.3.1" | +/– | |
| Сообщение от opennews (ok), 14-Апр-26, 15:06 | ||
Спустя 4 года после публикации прошлого обновления доступен релиз библиотеки управления памятью jemalloc 5.3.1, предлагающей альтернативную реализацию функций malloc, оптимизированную для снижения фрагментации и работы на многопроцессорных системах. Для решения проблем с блокировками на многоядерных системах в jemalloc для каждого ядра CPU используется своя изолированная область распределения памяти, что позволяет добиться линейной масштабируемости при росте числа потоков... | ||
| Ответить | Правка | Cообщить модератору | ||
| Оглавление |
| Сообщения | [Сортировка по ответам | RSS] |
| 1. Сообщение от Жироватт (ok), 14-Апр-26, 15:06 | +/– | |
Я бы даже не стал шутить про "отставить разврат - закопать стюардессу! отставить разврат - откопать стюардессу", но реально, в чем профит использовать конкретно этот аллокатор? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #2, #7, #14, #23 | ||
| 2. Сообщение от Аноним (2), 14-Апр-26, 15:34 | +/– | |
для каждого ядра CPU используется своя изолированная область распределения памяти, что позволяет добиться линейной масштабируемости при росте числа потоков | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #1 Ответы: #4, #5, #6 | ||
| 4. Сообщение от Жироватт (ok), 14-Апр-26, 15:50 Скрыто ботом-модератором | –1 +/– | |
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #2 | ||
| 5. Сообщение от Аноним (5), 14-Апр-26, 16:37 | –2 +/– | |
>своя изолированная область | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #2 Ответы: #8 | ||
| 6. Сообщение от Аноним (5), 14-Апр-26, 16:38 | +/– | |
Меньшая фрагментация за счет изолированных областей? А внутри области такая же дефрагментация? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #2 Ответы: #9 | ||
| 7. Сообщение от Аноним (8), 14-Апр-26, 16:44 | +2 +/– | |
> в чем профит использовать конкретно этот аллокатор? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #1 | ||
| 8. Сообщение от Аноним (8), 14-Апр-26, 16:46 | +/– | |
Общее адресное пространство никуда не делось, но в многопоточной среде эффективнее выделять из thread-local арен. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #5 Ответы: #10 | ||
| 9. Сообщение от Аноним (8), 14-Апр-26, 16:46 | +/– | |
> Меньшая фрагментация за счет изолированных областей? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #6 Ответы: #11 | ||
| 10. Сообщение от Аноним (5), 14-Апр-26, 17:01 | +/– | |
>thread-local | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #8 Ответы: #18, #19, #22 | ||
| 11. Сообщение от Аноним (5), 14-Апр-26, 17:03 | +/– | |
Прожорливый поток может залочить себе всю память? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #9 Ответы: #17 | ||
| 12. Сообщение от Аноним (12), 14-Апр-26, 17:07 | +/– | |
Кстати, раз речь пошла о аллокаторах, что использовать вместе с musl? Сабж или в интернете ещё другие нахваливают? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #15, #16 | ||
| 14. Сообщение от Аноним (14), 14-Апр-26, 17:50 | +/– | |
> в чем профит использовать конкретно этот аллокатор? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #1 | ||
| 15. Сообщение от Аноним (15), 14-Апр-26, 17:51 | –2 +/– | |
> вместе с musl | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #12 | ||
| 16. Сообщение от Аноним (16), 14-Апр-26, 18:38 | –1 +/– | |
странный вопрос, есть "стандарт", который по сути есть компромис среди множества архитектур и альтернатив аля glibc, то есть работает не идеально, но приемлемо, чего достаточно для большенства задач, но если вам не достаточно, то надо отталкиваться от архитектуры и особенностей проекта, можно попробовать для начала и сабж, но musl скорее про эндебер и там будет скорее хуже, а значит писать свое под свою задачу, хотя, если проект один, проще это решать на уровне проекта чтобы не плодить сущности. Резервировать кусок памяти и в нем уже чтото делать, создавать обьекты и удалять не возвращая память системе, тем самым избавившись от всяких дабл-фри бай дизайн, это сложный путь, но один раз его пройдя можно попутно решить все "проблемы", в том числе с выходом за границы буфера, юз-афтер-фри, и прочие за которые хейтят сечас си, и восхваляют раст, в котором это гвоздями прибито, и никаких шагов влево вправо не дозволяется. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #12 Ответы: #20 | ||
| 17. Сообщение от Аноним (8), 14-Апр-26, 20:16 | +/– | |
Нет, потоки будут бороться за доступ к shared структурам аллокатора. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #11 | ||
| 18. Сообщение от Аноним (18), 14-Апр-26, 20:18 | +/– | |
Нет. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #10 | ||
| 19. Сообщение от Аноним (8), 14-Апр-26, 20:26 | +/– | |
Там нет и не может быть ничего "изолированного". Память выделенная на thread-local арене доступна всем потокам, и освобождается из любого, просто при выделении мы меньше ходим в shared state и ждём на локах. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #10 Ответы: #25 | ||
| 20. Сообщение от Аноним (8), 14-Апр-26, 20:42 | +1 +/– | |
> Резервировать кусок памяти и в нем уже чтото делать, создавать обьекты и удалять не возвращая память системе, тем самым избавившись от всяких дабл-фри бай дизайн, это сложный путь | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #16 | ||
| 21. Сообщение от Аноним83 (?), 14-Апр-26, 20:52 | +/– | |
--disable-dss - это уже давным давно было. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| 22. Сообщение от Аноним83 (?), 14-Апр-26, 20:56 | +/– | |
Нет. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #10 Ответы: #24, #31 | ||
| 23. Сообщение от Noname (??), 14-Апр-26, 21:10 | +/– | |
Naprimer dlya mysql/mariadb | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #1 | ||
| 24. Сообщение от Аноним (5), 14-Апр-26, 23:26 | +/– | |
Понятно. При создание потока ему передается указатель на структуру, через которую управляющий jemalloc выделил ему память (вроде this). Для прозрачности его теневым образом можно передавать функциям *alloc из этого потока. Владельцем структуры, отвечающей за память потока, остается поток "родивший" этот поток. Использующий структуру может только пометить кусок на удаление (или автоматически помечается на выходе). В асме я встречал инструкции работающие с сегментными регистрами на x64 (это и защищает приватную память потока). | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #22 Ответы: #26, #27, #32 | ||
| 25. Сообщение от Аноним (5), 14-Апр-26, 23:27 | +/– | |
Спасибо. Вроде понятно. Понятое изложил ниже. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #19 | ||
| 26. Сообщение от Аноним (8), 14-Апр-26, 23:28 | +/– | |
Нет никакой "приватной памяти потока". | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #24 Ответы: #28, #29, #30 | ||
| 27. Сообщение от Аноним (5), 14-Апр-26, 23:30 | +/– | |
Тогда суть в том что упор делается на поточный пул и разнобой общей памяти от потоков уменьшается и защищается память потоков.Получается уменьшение "поточной" фрагментации. Значительные куски освобождаются по завершение конкретного потока. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #24 | ||
| 28. Сообщение от Аноним (5), 14-Апр-26, 23:36 | +/– | |
В асме встречаются обращения к ячейкам памяти через сегментный регистр на x64. Инструкции асма в потоке могут содержать сегментную адресацию. То что это используется - это точно. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #26 | ||
| 29. Сообщение от Аноним (5), 14-Апр-26, 23:39 | +/– | |
Я дам этому потоку смещенную базу и он будет наращивать потребление относительно этой базы (фрейм вутри общей памяти). Сама база находится внутри общей памяти процесса (1-го потока). | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #26 | ||
| 30. Сообщение от Аноним (5), 14-Апр-26, 23:44 | +/– | |
Возможно Вы мыслите в абстракциях. Я стараюсь мыслить в асм реализации. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #26 Ответы: #39 | ||
| 31. Сообщение от Аноним (5), 15-Апр-26, 00:01 | +/– | |
>за каждым потоком закреплён "пул памяти" откуда именно этот поток получает куски памяти при каждом malloc()/realloc()/calloc(). | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #22 Ответы: #33 | ||
| 32. Сообщение от Аноним83 (?), 15-Апр-26, 00:19 | +/– | |
Как то так так. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #24 Ответы: #35 | ||
| 33. Сообщение от Аноним83 (?), 15-Апр-26, 00:25 | +/– | |
> malloc(xxx) вызывается на самом деле malloc(this_thread,xxx). | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #31 Ответы: #36 | ||
| 35. Сообщение от Аноним (5), 15-Апр-26, 00:36 | +/– | |
> Есть TLS: Thread Local Storage. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #32 Ответы: #37 | ||
| 36. Сообщение от Аноним (5), 15-Апр-26, 00:41 | +/– | |
>> malloc(xxx) вызывается на самом деле malloc(this_thread,xxx). | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #33 Ответы: #38 | ||
| 37. Сообщение от Аноним83 (?), 15-Апр-26, 01:05 | +/– | |
Нет. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #35 | ||
| 38. Сообщение от Аноним83 (?), 15-Апр-26, 01:05 | +/– | |
Удачи в реализации. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #36 | ||
| 39. Сообщение от Аноним (39), 15-Апр-26, 01:19 | +/– | |
> Я стараюсь мыслить в асм реализации. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #30 | ||
|
Архив | Удалить |
Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема |
|
Закладки на сайте Проследить за страницей |
Created 1996-2026 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |