СКИПОДы 2007 полная версия (1127795), страница 25
Текст из файла (страница 25)
Масштабируемость должна обеспечиваться архитектурой и конструкциейкомпьютера, а также соответствующими средствами программного обеспечения.Так, например, возможность масштабирования кластера ограничена значением отношенияскорости процессора к скорости связи, которое не должно быть слишком большим (реальноэто отношение для больших систем не может быть более 3-4, в противном случае не удаетсядаже реализовать режим единого образа операционной системы). С другой стороны,последние 10 лет истории развития процессоров и коммуникаторов показывают, что разрывв скорости между ними все увеличивается.
Добавление каждого нового процессора вдействительно масштабируемой системе должно давать прогнозируемое увеличениепроизводительности и пропускной способности при приемлемых затратах. Одной изосновных задач при построении масштабируемых систем является минимизация стоимостирасширения компьютера и упрощение планирования. В идеале добавление процессоров ксистеме должно приводить к линейному росту ее производительности.
Однако это не всегдатак. Потери производительности могут возникать, например, при недостаточнойпропускной способности шин из-за возрастания трафика между процессорами и основнойпамятью, а также между памятью и устройствами ввода/вывода. В действительностиреальное увеличение производительности трудно оценить заранее, поскольку оно взначительной степени зависит от динамики поведения прикладных задач.Возможность масштабирования системы определяется не только архитектурой аппаратныхсредств, но зависит от свойств программного обеспечения.
Масштабируемостьпрограммного обеспечения затрагивает все его уровни, от простых механизмов передачисообщений до работы с такими сложными объектами как мониторы транзакций и вся средаприкладной системы. В частности, программное обеспечение должно минимизироватьтрафик межпроцессорного обмена, который может препятствовать линейному роступроизводительности системы. Аппаратные средства (процессоры, шины и устройстваввода/вывода) являются только частью масштабируемой архитектуры, на которойпрограммное обеспечение может обеспечить предсказуемый рост производительности.Важно понимать, что, например, простой переход на более мощный процессор можетпривести к перегрузке других компонентов системы.
Это означает, что действительномасштабируемая система должна быть сбалансирована по всем параметрам.Управление памятью в мультипроцессорных системах.Системы класса: SMP (Scalable Parallel Processor) состоят из нескольких однородныхпроцессоров и массива общей памяти (разделяемой памяти – shared memory): любойпроцессор может обращаться к любому элементу памяти. По этой схеме построены 2,4процессорные SMP сервера на базе процессоров Intel, НР и т.
д., причем процессорыподключены к памяти с помощью общей шины. Системы с большим числом процессоров79(но не более 32) подключаются к общей памяти, разделенной на блоки, через неблокирующийся полный коммутатор: crossbar. Любой процессор системы получает данноепо произвольному адресу памяти за одинаковое время, такая структура памяти называется:UMA - Uniform Memory Access (Architecture).
Пример:НР-9000. Дальнейшеемасштабирование (увеличение числа процессоров системы) SMP систем обеспечиваетсяпереходом к архитектуре памяти: NUMA - Nоn Uniform Memory Access. По схеме,называемой, этой иногда, кластеризацией SMP, соответствующие блоки памяти двух (илиболее) серверов соединяются кольцевой связью, обычно по GCI интерфейсу. При запроседанного, расположенного вне локального с сервере диапазона адресов, это данное покольцевой связи переписывается дублируется в соответствующий блок локальной памяти,ту часть его, которая специально отводится для буферизации глобальных данных и изэтого буфера поставляется потребителю. Эта буферизация прозрачна (невидима)пользователю, для которого вся память кластера имеет сквозную нумерацию, и времявыборки данных, не локальных в сервере, будет равно времени выборки локальных данныхпри повторных обращениях к глобальному данному, когда оно уже переписано в буфер.Данный аппарат буферизации есть типичная схема кэш памяти.
Так как к данным возможнообращение из любого процессора кластера, то буферизация, размножение данных требуетобеспечение их когерентности. Когерентность данных состоит в том, что при измененииданного все его потребители должны получать это значение. Проблема когерентностиусложняется дублированием данных еще и в процессорных кэшах системы. Системы, вкоторых обеспечена когерентность данных, буферизуемых в кэшах, называются кэшкогерентными (cc-cache coherent), а архитектура памяти описываемого кластера: ccNUMA (cache coherent Nоn Uniform Memory Access).
Классической архитектурой принятосчитать систему SPP1000.Не уверен, что это нужно…Распределенная общая память (DSM - Distributed Shared Memory)Традиционно распределенные вычисления базируются на модели передачи сообщений, вкоторой данные передаются от процессора к процессору в виде сообщений. Удаленныйвызов процедур фактически является той же самой моделью (или очень близкой).DSM - виртуальное адресное пространство, разделяемое всеми узлами (процессорами)распределенной системы. Программы получают доступ к данным в DSM примерно так же,как они работают с данными в виртуальной памяти традиционных ЭВМ.
В системах с DSMданные перемещаются между локальными памятями разных компьютеров аналогично тому,как они перемещаются между оперативной и внешней памятью одного компьютера.6.1 Достоинства DSMВ модели передачи сообщений программист обеспечивает доступ к разделяемым даннымпосредством явных операций посылки и приема сообщений. При этом приходитсяквантовать алгоритм, обеспечивать своевременную смену информации в буферах,преобразовывать индексы массивов. Все это сильно усложняет программирование иотладку. DSM скрывает от программиста пересылку данных и обеспечивает емуабстракцию разделяемой памяти, к использованию которой он уже привык намультипроцессорах. Программирование и отладка с использованием DSM гораздо проще.В модели передачи сообщений данные перемещаются между двумя различными адреснымипространствами.
Это делает очень трудным передачу сложных структур данных междупроцессами. Более того, передача данных по ссылке и передача структур данных,содержащих указатели, является в общем случае делом сложным и дорогостоящим. DSMже позволяет передавать данные по ссылке, что упрощает разработку распределенныхприложений.80Объем суммарной физической памяти всех узлов может быть огромным. Эта огромнаяпамять становится доступна приложению без издержек, связанных в традиционныхсистемах с дисковыми обменами. Это достоинство становится все весомее в связи с тем, чтоскорости процессоров растут быстрее скоростей памяти и в то же время появляются оченьбыстрые коммуникации.DSM-системы могут наращиваться практически беспредельно в отличие от систем сразделяемой памятью, т.е.
являются масштабируемыми.Программы, написанные для мультипроцессоров с общей памятью, могут в принципе безкаких-либо изменений выполняться на DSM-системах (по крайней мере, они могут бытьлегко перенесены на DSM-системы).По существу, DSM-системы преодолеваютархитектурные ограничения мультипроцессоров и сокращают усилия, необходимые длянаписания программ для распределенных систем. Обычно они реализуются программноаппаратными средствами, но в последние годы появилось несколько коммерческих MPP сDSM, реализованной аппаратно (Convex SPP, KSR1).6.2 Алгоритмы реализации DSMПри реализации DSM центральными являются следующие вопросы. как поддерживатьинформацию о расположении удаленных данных.
как снизить при доступе к удаленнымданным коммуникационные задержки и большие накладные расходы, связанные свыполнением коммуникационных протоколов. как сделать разделяемые данныедоступными одновременно на нескольких узлах для того, чтобы повыситьпроизводительность системы.Рассмотрим четыре основных алгоритма реализации DSM.6.2.1 Алгоритм с центральным серверомВсе разделяемые данные поддерживает центральный сервер. Он возвращает данныеклиентам по их запросам на чтение, по запросам на запись он корректирует данные ипосылает клиентам в ответ квитанции.
Клиенты могут использовать тайм-аут для посылкиповторных запросов при отсутствии ответа сервера. Дубликаты запросов на запись могутраспознаваться путем нумерации запросов. Если несколько повторных обращений к серверуостались без ответа, приложение получит отрицательный код ответа (это обеспечит клиент).Алгоритм прост в реализации, но сервер может стать узким местом.Чтобы избежать этого, разделяемые данные могут быть распределены между несколькимисерверами. В этом случае клиент должен уметь определять, к какому серверу надообращаться при каждом доступе к разделяемой переменной. Посылка запросов сразу всемсерверам нежелательна, поскольку не снижает нагрузку на серверы.
Лучшее решение распределить данные в зависимости от их адресов и использовать функцию отображениядля определения нужного сервера.6.2.2 Миграционный алгоритмВ отличие от предыдущего алгоритма, когда запрос к данным направлялся в место ихрасположения, в этом алгоритме меняется расположение данных - они перемещаются в томесто, где потребовались. Это позволяет последовательные обращения к даннымосуществлять локально. Миграционный алгоритм позволяет обращаться к одному элементуданных в любой момент времени только одному узлу.Обычно мигрирует целиком страницы или блоки данных, а не запрашиваемые единицыданных.
Это позволяет воспользоваться присущей приложениям локальностью доступа кданным для снижения стоимости миграции. Однако, такой подход приводит к трэшингу,когда страницы очень часто мигрируют между узлами при малом количествеобслуживаемых запросов. Некоторые системы позволяют задать время, в течение которогостраница насильно удерживается в узле для того, чтобы успеть выполнить несколькообращений к ней до миграции ее в другой узел.81Миграционный алгоритм позволяет интегрировать DSM с виртуальной памятью,обеспечивающейся операционной системой в отдельных узлах.
Если размер страницы DSMсовпадает с размером страницы виртуальной памяти (или кратен ей), то можно обращатьсяк разделяемой памяти обычными машинными командами, воспользовавшись аппаратнымисредствами проверки наличия в оперативной памяти требуемой страницы и заменывиртуального адреса на физический. Конечно, для этого виртуальное адресное пространствопроцессоров должно быть достаточно, чтобы адресовать всю разделяемую память. Приэтом, несколько процессов в одном узле могут разделять одну и ту же страницу.Для определения места расположения блоков данных миграционный алгоритм можетиспользовать сервер, отслеживающий перемещения блоков, либо воспользоватьсямеханизмом подсказок в каждом узле. Возможна и широковещательная рассылка запросов.6.2.3 Алгоритм размножения для чтенияПредыдущий алгоритм позволял обращаться к разделяемым данным в любой моментвремени только процессам в одном узле (в котором эти данные находятся).