Распределитель памяти - PullRequest
       0

Распределитель памяти

2 голосов
/ 09 февраля 2012

Распределитель накопительной памяти

Я читаю статьи о распределителе памяти Hoard, и все понятно, но одна вещь не в том, как это уменьшает конкуренцию за кучу, вызванную, когда несколько потоков выделяют или освобождают память, после того, как избегает ложного совместного использования, которое может быть введено памятью распределителей и в то же время применяет строгие ограничения на фрагментацию. Как они этого добились?

enter image description here

1 Ответ

4 голосов
/ 09 февраля 2012

Из бумаги Hoard выделяет внутреннюю память в суперблоки , как того требует куча на процессор .Когда эти кучи нуждаются в суперблоке, они запрашивают у глобальной кучи пустую.Поскольку суперблоки полностью освобождаются кучей для каждого процессора, они высвобождаются в глобальную кучу для повторного использования в другом месте, что накладывает ограничение на выделенную память.

С точки зрения конкуренции за потоки суперблоки используются только активнов одной куче на процессор за раз.Затем Hoard обслуживает только память от одного суперблока до одного потока .Используя эту стратегию, Хоард может избежать наиболее активного ложного совместного использования:

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

Существует вероятность того, что когда суперблок станет относительно пустым (определяется внутренним фактором), он станет доступным для другой кучи, что может привести к пассивному ложному совместному использованию, поскольку другой поток все еще может сохранять ссылки на суперблок,Однако, учитывая размер суперблоков, они не нашли это распространенным на практике:

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

Hoard обрабатывает фрагментацию с помощью довольно распространенной стратегии распределителя, объединяющей общие размеры выделения и объединяющей освобожденное пространство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...