На нескольких языках (в основном D и Java/Jython) Я заметил, что параллельные программы без очевидного узкого места синхронизации часто плохо масштабируются до 4 или более ядер из-за узких мест управления памятью. Я знаю, что локальные распределители потоков устраняют эту проблему, но большинство реализаций сборщиков мусора по-прежнему необходимо остановить мир. Сбор мусора не смущает параллель (общее состояние должно быть обновлено слишком часто), поэтому использование параллельного коллектора не полностью решает проблему. В случае ручного управления памятью, даже если распределения в основном связаны с локальным распределителем потоков, память все же должна быть освобождена, возможно, из другого потока, кроме того, в котором она была выделена.Недостаток памяти в SMP Parallelism
Есть ли какой-либо язык/runtime/malloc, для которой узкое место управления памятью для SMP-параллелизма является для всех практических целей решаемой проблемой, но при этом позволяет использовать многопоточность традиционного общего адресного пространства?
ли это было показано, что выделение и освобождение является источником проблемы узких мест, которые будут иметь возможное рамочное решение. Или проблема в разделении работы, которая потребует от разработчиков приложений решить эту проблему. –
Отличный вопрос, возможно, вам повезло с Джо Даффи, по крайней мере, в отношении систем, специфичных для Windows (http://www.bluebytesoftware.com/). –