Альтернативные аллокаторы памяти

sobolev
Дата: 31.05.2015 13:48:40
Кто нибудь использует? nedmalloc, hoard, gperftools. Другие.
Поделитесь отзывами.
YesSql
Дата: 31.05.2015 16:44:48
jemalloc
mayton
Дата: 31.05.2015 18:09:59
Интересно а какой ожидается ответ?
YesSql
Дата: 31.05.2015 21:01:33
sobolev
Кто нибудь использует? nedmalloc, hoard, gperftools. Другие.
Поделитесь отзывами.

Выбор правильного аллокатора очень сильно зависит от характера программы с которой он будет работать. Например для программ базирующихся на thread pool, мой выбор - jemalloc. А, например, для любителей OpenMP IMHO лучше подходит tcmalloc (gperftools).
sobolev
Дата: 31.05.2015 23:29:31
mayton
Интересно а какой ожидается ответ?

поясню: мне нужен быстрый аллокатор, но проект у меня большой и "в слепую" использовать что ни попадя страшно. вот и решил поинтересоваться коллективным опытом. то есть, буду благодарен за любой более-менее развернутый ответ, основанный на реальном опыте применения.
sobolev
Дата: 31.05.2015 23:48:12
YesSql
sobolev
Кто нибудь использует? nedmalloc, hoard, gperftools. Другие.
Поделитесь отзывами.

Выбор правильного аллокатора очень сильно зависит от характера программы с которой он будет работать. Например для программ базирующихся на thread pool, мой выбор - jemalloc. А, например, для любителей OpenMP IMHO лучше подходит tcmalloc (gperftools).

важно быстрое распределение мелких короткоживущих кусков и быстрая реаллокация. система многопоточная, потому существенна безопасность при одновременном доступе к куче из разных потоков, но чертовски нужно, чтоб эта безопасность не дорого стоила ибо большая часть malloc/realloc/free замкнуты на один поток (или многого жду?)
наличие отладочных механизмов существенно, но не критично - проект работающий и проблемы с нарушениями обращений к распределенной памяти исчезающе редки.
и да - быстрое переключение (но не рантайм) на штатный механизм компилятора и обратно обязательно.
Dimitry Sibiryakov
Дата: 01.06.2015 00:19:50

sobolev
важно быстрое распределение мелких короткоживущих кусков и быстрая
реаллокация. система многопоточная, потому существенна безопасность при одновременном
доступе к куче из разных потоков, но чертовски нужно, чтоб эта безопасность не дорого
стоила ибо большая часть malloc/realloc/free замкнуты на один поток (или многого жду?)

Выдели каждому потоку по отдельной куче и будет тебе счастье. Выдели большой кусок,
который потом можешь спокойно резать на мелкие части без взаимоблокировок.

Posted via ActualForum NNTP Server 1.5

YesSql
Дата: 01.06.2015 08:27:46
sobolev
важно быстрое распределение мелких короткоживущих кусков и быстрая реаллокация. система многопоточная, потому существенна безопасность при одновременном доступе к куче из разных потоков, но чертовски нужно, чтоб эта безопасность не дорого стоила ибо большая часть malloc/realloc/free замкнуты на один поток (или многого жду?)

У jemalloc кэш на поток. Опять-же это может дать обратный эффект если в твоей задачке потоки часто создаются-уничтожаются.
sobolev
наличие отладочных механизмов существенно, но не критично - проект работающий и проблемы с нарушениями обращений к распределенной памяти исчезающе редки.

Начни тогда с tcmalloc/perftools
sobolev
быстрое переключение (но не рантайм) на штатный механизм компилятора и обратно обязательно.

Если мы говорим о линуксе то там для переключения можно даже не перелинковывать.