Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #38, ЯНВАРЬ 2004 г.

Умножение производительности

Докучаев Дмитрий aka Forb

Спецвыпуск Xakep, номер #038, стр. 038-008-4


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

Вывод, как всегда, прост: для предприятий мультипроцессорные серверы - лакомый, но дорогой кусочек. Поэтому часто обходятся простыми кластерными установками. Впрочем, последние далеко не всегда себя оправдывают. Для обычного пользователя, то есть для тебя, вполне подойдет однопроцессорный писюк, который, наверное, ты и имеешь.

Технология NUMA

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

Примерами многопроцессорных установок могут служить HP 9000, NUMA-Q, Sun HPC 10000 и т.д. Масштабируемость ограничивается лишь адресным пространством. На данный момент максимальное число процессоров для такой технологии - 256.

Общая память или SMP

SMP подразумевает общий доступ к любому участку памяти в любое время. С этим связан ряд осложнений, например, наличие коллизий. Когда очередность процессоров в обращении к памяти строго оговорена, никаких проблем не возникает. При одновременном обращении к памяти имеем коллизию. Во время сложных расчетов таких коллизий будет много. Что делает процессор, когда не может передать данные в память? Правильно, ничего :). Он ожидает нужного момента, тактично простаивая. В итоге имеем целых два недостатка: простои и коллизии.

Интел пошел по принципу "большой кэш - меньше коллизий". Но действенен ли этот лозунг? Распределение участков кэша ложится на плечи программиста. Если программист не халтурил, вероятность возникновения коллизии составляет 8% (в случае халтуры до 60%). Следует учитывать и непредвиденные ситуации: возникновение прерываний, при которых все процессоры останавливаются. Часть данных в кэше могут не относиться к выполняемой задаче, что сказывается на времени. К тому же, с ростом числа процессоров, вероятность коллизий возрастает по экспоненте. Поэтому технология SMP далека от идеала и использует не более 16 процессоров.

Но, тем не менее, SMP прижилась в компьютерном мире. Предприятия с готовностью закупают мультипроцессорные серверы и радуются жизни, ведь цель всегда оправдывает средства :).

Назад на стр. 038-008-3  Содержание  Вперед на стр. 038-008-5