Пользовательский распределитель памяти/менеджер в C? какой подход?

Я ищу некоторые (пользовательские) менеджеры/распределители памяти, написанные на c и просмотрев некоторые статьи, -

Некоторые ссылки:

Мне нужно изолировать небольшой веб-сервер, используя любой доступный, и у меня нет проблем с написанием оберток для схемы обработки/распределения потоков. Apache WS использует пулы памяти для обработки памяти, а пулы не являются постоянными, это зависит от запроса. Вы можете что-то предложить? Какой хороший/лучший подход к этой проблеме? Мои требования следующие: -

  • (Ограниченное время отклика) распределение и де-распределение должны быть известны заранее, то есть некоторые постоянная стоимость O (c), где c - константа.

  • Фрагментация от гетерогенных   распределения/отмены распределения или   последовательности должны обрабатываться, я могу написать схему/обертку, чтобы обеспечить   то же самое.

Поистине ценим помощь и идеи!

Ответы

Ответ 1

Фрагментация от гетерогенного распределения/отмены распределения или последовательности следует обрабатывать, я могу напишите схему/оболочку, чтобы обеспечить то же самое.

Чтобы избежать фрагментации, вам придется использовать стратегию распределения гибридных блоков. Гибрид здесь означает блоки элементов разного размера, чем единичные блоки элементов, т.е. Распределитель (или обертка вокруг него) должен поддерживать блоки различных элементов (малых, средних и больших и т.д.). Все запросы на распределение должны округляться до ближайшей границы блока. Эта стратегия гарантирует, что вы не будете страдать от внешней фрагментации, но может вызвать внутреннюю фрагментацию. Вы можете найти дополнительную информацию по следующим ссылкам:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

Ответ 2

Просто добавьте еще один в список

Инструменты Google Performance

Это улучшает значительную производительность выделения памяти и имеет профилировщики процессора и памяти. Их реализация Thread-Caching Malloc должна быть достаточно эффективной для многопоточных приложений.