Традиционно предполагается, что вычисление, разбитое на несколько нитей определённым образом, выполняется в системах с общей памятью (SMP или NUMA) быстрее, чем это же вычисление, но разбитое на несколько процессов. В представляемой работе высказана гипотеза о том, что такое предположение может быть неверным для вычислений с большими объёмами данных, главным образом по двум причинам. Во-первых, поддержка единого адресного пространства для нитей может быть существенно более накладной, чем суммарные затраты на переключение контекста выполнения между процессами. Во-вторых, даже если вычисление не требует интенсивного управления памятью, естественное ограничение на объём хранимого в TLB описания рабочего множества страниц, и в случае нитей приводит к необходимости частого обновления этого кэша трансляций. В статье описаны эксперименты и их результаты, которые подтверждают адекватность этой гипотезы.
Ключевые слова: общая память, производительность, нити, процессы.
Комментарии
Сб, 30 нояб. 2013, 09:39:59 Ответить
Сб, 30 нояб. 2013, 11:04:09 Ответить
Сб, 30 нояб. 2013, 11:05:46 Ответить
Сб, 30 нояб. 2013, 11:07:49 Ответить