
- •1 Задачи анализа;
- •2 Задачи синтеза;
- •3 Задачи идентификации.
- •Основные задачи теории кс
- •1. Задачи анализа;
- •2. Задачи синтеза;
- •3. Задачи идентификации.
- •2. Высокой интенсивностью взаимодействия и вытекающим отсюда требованием уменьшения времени ответа.
- •Функционирование кс
- •Основные задачи теории вычислительных систем
- •Общая характеристика методов теории вычислительных систем
- •3. Классификация вычислительных систем
- •Характеристики производительности и надежности кс
- •Характеристики надежности кс
- •1 Холодное резервирование. Работает только основной канал.
- •2 Нагруженный резерв. Включены оба канала (резервный канал занимается посторонними задачами). Время перехода на основную задачу меньше чем в холодном резерве.
- •Общая характеристика методов теории вычислительных систем
- •Характеристики производительности кс
- •1. Номинальная производительность ;
- •2. Комплексная производительность ;
- •3. Пакеты тестовых программ spec XX
- •Характеристики надежности кс
- •1 Холодное резервирование. Работает только основной канал.
- •2 Нагруженный резерв. Включены оба канала (резервный канал занимается посторонними задачами). Время перехода на основную задачу меньше чем в холодном резерве.
- •4) Указывается начальное состояние системы;
- •8) Находятся показатели качества вс на основе найденных вероятностей состояния системы.
- •Анализ надежности кс со сложной структурой
- •2.Расчет надежности кс
- •2. Для каждой вершины можно вычислить среднее количество попаданий вычислительного процесса в эту вершину по формуле
- •1. Разбить множество операторов на классы:
- •Модели вычислительных систем как систем массового обслуживания
- •1 Общие понятия и определения
- •Например m/m/1
- •2 Параметры систем массового обслуживания
- •Модели массового обслуживания вычислительных систем|
- •1. Представление вычислительной системы в виде стохастической сети
- •2. Потоки заявок
- •3. Длительность обслуживания заявок
- •Характеристики одноканальных смо
- •Многопроцессорные системы
- •5. Характеристики бесприоритетных дисциплин обслуживания
- •1) В порядке поступления (первой обслуживается заявка, поступившая раньше других);
- •2) В порядке, обратном порядку поступления заявок (первой обслуживается заявка, поступившая позже других);
- •3) Наугад, т. Е. Путем случайного выбора из очереди.
- •6. Характеристики дисциплины обслуживания с относительными приоритетами заявок
- •3.8. Характеристики дисциплин обслуживания со смешанными приоритетами
- •§ 3.9. Обслуживание заявок в групповом режиме
- •§ 3.10. Смешанный режим обслуживания заявок
- •§ 3.11. Диспетчирование на основе динамических приоритетов
- •§ 3.12. Оценка затрат на диспетчирование
- •1.Определяется интенсивность потока заявок I в смо Si из системы алгебраических уравнений
- •2.Вычисляются коэффициенты передач для каждой смо
- •3.Определяется среднее время обслуживания Ui заявки в смо Si :
- •6.Для моделирующей сети в целом характеристики п.5 определяются как
- •2.Расчет характеристик мультипроцессорной системы
- •1) Имеет доступ к общей памяти;
- •1.Средняя длина очереди заявок, ожидающих обслуживания в системе:
- •3. Среднее время пребывания заявок в системе :
- •Основные задачи теории кс
- •1. Задачи анализа;
- •2. Задачи синтеза;
- •3. Задачи идентификации.
- •1) С неограниченным временем пребывания заявок;
- •2) С относительными ограничениями на время пребывания заявок;
- •3) С абсолютными ограничениями на время пребывания заявок;
- •2.4. Контроллеры и сетевые комплексы ge Fanuc
- •Модели 311,313/323, 331
- •Коммуникационные возможности серии 90-30
- •2.4.3. Контроллеры VersaMax
- •2.4.4. Программное обеспечение
- •Общая характеристика протоколов и интерфейсов асу тп
- •2. Протоколы и интерфейсы нижнего уровня.
- •2. Основные технические характеристики контроллеров и программно-технических комплексов
- •Требования к корпоративной сети
- •2) Одновременное решение различных задач или частей одной задачи;
- •3) Конвейерная обработка информации.
- •1. Суть проблемы и основные понятия
- •1.1 Главные этапы распараллеливания задач
- •1.2 Сведения о вычислительных процессах
- •1.3 Распределенная обработка данных
- •1. Классификации архитектур параллельных вычислительных систем
- •1.1 Классификация Флинна
- •1. Процессоры
- •Память компьютерных систем
- •Простые коммутаторы
- •Простые коммутаторы с пространственным разделением
- •Составные коммутаторы
- •Коммутатор Клоза
- •Баньян-сети
- •Распределенные составные коммутаторы
- •Коммутация
- •Алгоритмы выбора маршрута
- •Граф межмодульных связей Convex Exemplar spp1000
- •Граф межмодульных связей мвс-100
- •3. Граф межмодульных связей мвс-1000
- •1. Построения коммуникационных сред на основе масштабируемого когерентного интерфейса sci
- •2. Коммуникационная среда myrinet
- •3. Коммуникационная среда Raceway
- •4. Коммуникационные среды на базе транспьютероподобных процессоров
- •1. Структура узла
- •2. Пакеты и свободные символы
- •3. Прием пакетов
- •4. Передача пакетов
- •5. Управление потоком
- •1. Структура адресного пространства
- •2. Регистры управления и состояния
- •3. Форматы пакетов
- •Когерентность кэш-памятей
- •1. Организация распределенной директории
- •2. Протокол когерентности
- •3. Алгоритм кэширования.
- •1 . Основные характеристики
- •1.2. Происхождение
- •1.3. Механизм когерентности
- •1. 4. Предназначение
- •1. 5. Структура коммуникационных сред на базе sci
- •1. 6. Физическая реализация
- •1. 7. Обозначение каналов
- •2. Реализация коммуникационной среды
- •2.1. На структурном уровне коммуникационная среда состоит из трех компонентов, как показано на рис. 2.1:
- •Масштабируемый когерентный интерфейс sci
- •Сетевая технология Myrinet
- •Коммуникационная среда Raceway
- •Коммуникационные среды на базе транспьютероподобных процессоров
- •1.Информационные модели
- •1.2. Мультипроцессоры
- •1.3. Мультикомпьютеры
- •Сравнительный анализ архитектур кс параллельного действия.
- •Архитектура вычислительных систем
- •Smp архитектура
- •Симметричные мультипроцессорные системы (smp)
- •Mpp архитектура
- •Массивно-параллельные системы (mpp)
- •Гибридная архитектура (numa)
- •Системы с неоднородным доступом к памяти (numa)
- •Pvp архитектура
- •Параллельные векторные системы (pvp)
- •1. Системы с конвейерной обработкой информации
- •1.2 Мультипроцессоры uma с много- ступенчатыми сетями
- •Мультипроцессоры numa
- •Мультипроцессор Sequent numa-q
- •Мультикомпьютеры с передачей сообщений
- •1. Общая характеристика кластерных систем.
- •2.Особенности построения кластерных систем.
- •Планирование работ в cow.
- •Без блокировки начала очереди (б); заполнение прямоугольника «процессоры-время» (в). Серым цветом показаны свободные процессоры
- •Общие сведения
- •Общие сведения
- •Логическая структура кластера
- •Логические функции физического узла.
- •Устройства памяти
- •Программное обеспечение
- •Элементы кластерных систем
- •1.1. Характеристики процессоров
- •Рассмотрим в начале процессор amd Opteron/Athlon 64.
- •Примеры промышленых разработок
- •Кластерные решения компании ibm
- •Диаграмма большого Linux-кластера.
- •Аппаратное обеспечение
- •Вычислительные узлы, выполняющие основные вычислительные задачи, для которых спроектирована система.
- •Программное обеспечение
- •Кластерные решения компании hp
- •Кластерные решения компании sgi
- •Производительность операций с плавающей точкой
- •Производительность памяти
- •Производительность системы ввода/вывода Linux
- •Масштабируемость технических приложений
- •Системное программное обеспечение
- •Архитектура san
- •Компоненты san
- •Примеры решений на основе san
- •San начального уровня
- •San между основным и резервным центром
- •Практические рекомендации
- •Построение san
- •Заключение
- •Принципы построения кластерных архитектур.
- •Оценки производительности параллельных систем
- •1) Имеет доступ к общей памяти;
- •2) Имеет общий доступ к устройствам ввода-вывода;
- •3) Управляется общей операционной системой, которая обеспечивает требуемое взаимодействие между процессорами и выполняемыми им программами как на аппаратном, так и на программном уровне.
- •4 Вероятность того, что в момент поступления очередной заявки все n процессоров заняты обслуживанием
- •Выбор коммутационного компонента.
- •Проблема сетевой перегрузки.
- •1. Обзор современных сетевых решении для построения кластеров.
- •1000-Мега битный вариант Ethernet
- •Организация внешней памяти
- •Эффективные кластерные решения
- •Концепция кластерных систем
- •Разделение на High Avalibility и High Performance системы
- •3. Проблематика High Performance кластеров
- •Проблематика High Availability кластерных систем
- •Смешанные архитектуры
- •6.Средства реализации High Performance кластеров
- •7.Средства распараллеливания
- •8.Средства реализации High Availability кластеров
- •9.Примеры проверенных решений
- •Архитектура san
- •Компоненты san
- •Примеры решений на основе san
- •San начального уровня
- •San между основным и резервным центром
- •Практические рекомендации
- •Построение san
- •Заключение
- •Symmetrix десять лет спустя
- •Матричная архитектура
- •Средства защиты данных
- •Ревизионизм и фон-неймановская архитектура
- •Литература
- •Связное программное обеспечение для мультикомпьютеров
- •1. Синхронная передача сообщений.
- •2. Буферная передача сообщений.
- •Планирование работ в cow
- •Средства распараллеливания
- •7.Средства распараллеливания
- •2. Кластерн ый вычислительн ый комплекс на основе интерфейса передачи сообщений
- •2.2 Программная реализация интерфейса передачи сообщений
- •2.3 Структура каталога mpich
- •2.4 «Устройства» mpich
- •2.5 Выполнение параллельной программы
- •2.6 Особенности выполнения программ на кластерах рабочих станций
- •2.7 Тестирование кластерного комплекса
- •Параллельная виртуальная машина
- •3 Кластерн ый вычислительн ый комплекс на основе пАраллельной виртуальной машины
- •3.1 Параллельная виртуальная машина
- •3.1.1 Общая характеристика
- •3.1.2 Гетерогенные вычислительные системы
- •3.1.3 Архитектура параллельной виртуальной машины
- •3.2 Настройка и запуск параллельной виртуальной машины
- •3.3 Структура каталога pvm
- •3.4 Тестирование параллельной виртуальной машины
- •На рисунке 3.2 представлена диаграмма, отображающая сравнение производительности коммуникационных библиотек mpi и pvm.
- •3.5 Сходства и различия pvm и mpi
- •4 . Кластерн ый вычислительн ый комплекса на основе программного пакета openMosix
- •4.1 Роль openMosix
- •4.2 Компоненты openMosix
- •4.2.1 Миграция процессов
- •4.2.2 Файловая система openMosix (oMfs)
- •4.3 Планирование кластера
- •4.4 Простая конфигурация
- •4.4.1 Синтаксис файла /etc/openmosix.Map
- •4.4.2 Автообнаружение
- •4. 5. Пользовательские утилиты администрирования openMosix
- •4. 6. Графические средства администрирования openMosix
- •4. 6.1 Использование openMosixView
- •4. 6.1.2 Окно конфигурации. Это окно появится после нажатия кнопки “cluster-node”.
- •4. 6.1.3 Окно advanced-execution. Если нужно запустить задания в кластере, то диалог "advanced execution" может сильно упростить эту задачу.
- •4.6.1.4 Командная строка. Можно указать дополнительные аргументы командной строки в поле ввода вверху окна. Аргументы приведены в таблице 9.2.
- •4. 6.2.2 Окно migrator. Этот диалог появляется, если кликнуть на каком-либо процессе из окна списка процессов.
- •4. 6.2.3 Управление удалёнными процессами. Этот диалог появляется при нажатии кнопки “manage procs from remote”
- •4.5.3 Использование openMosixcollector
- •4. 6.4 Использование openMosixanalyzer
- •4. 6.4. 1 Окно load-overview. Здесь отображается хронология нагрузки openMosix.
- •4. 6.4. 2 Статистическая информация об узле
- •4.5.4.3 Окно memory-overview. Здесь представляется обзор использования памяти (Memory-overview) в openMosixanalyzer.
- •4. 6.4.4 Окно openMosixhistory
- •4. 6.5 Использование openMosixmigmon
- •4.6 Список условных сокращений
- •Перечень ссылок
- •Общие сведения
- •2. Создание Windows-кластера
- •Суперкомпьютерная Программа "скиф"
- •Описание технических решений
- •Направления работ
- •Основные результаты
- •Кластер мгиу
- •Содержание
- •Понятие о кластере
- •Аппаратное обеспечение
- •Пропускная способность и латентность
- •1. Определение распределенной системы
- •2.1. Соединение пользователей с ресурсами
- •2.2. Прозрачность
- •Прозрачность в распределенных системах
- •2.3. Открытость
- •2.4. Масштабируемость
- •3.1. Мультипроцессоры
- •3.2. Гомогенные мультикомпьютерные системы
- •3.3. Гетерогенные мультикомпьютерные системы
- •4. Концепции программных решений рс
- •4.1. Распределенные операционные системы
- •4.2. Сетевые операционные системы
- •4.3. Программное обеспечение промежуточного уровня
- •5. Модель клиент-сервер рс
- •5.1. Клиенты и серверы
- •5.2. Разделение приложений по уровням
- •5.3. Варианты архитектуры клиент-сервер
- •Формы метакомпьютера
- •Настольный суперкомпьютер.
- •2. Интеллектуальный инструментальный комплекс.
- •Сетевой суперкомпьютер.
- •Проблемы создания метакомпьютера
- •Сегодняшняя архитектура метакомпьютерной среды
- •Взаимосвязь метакомпьютинга с общими проблемами развития системного по
- •5. Модель клиент-сервер рс
- •5.1. Клиенты и серверы
- •5.2. Разделение приложений по уровням
- •5.3. Варианты архитектуры клиент-сервер
- •Symmetrix десять лет спустя
- •Матричная архитектура
- •Средства защиты данных
- •Ревизионизм и фон-неймановская архитектура
- •Однородные вычислительные среды
- •Однокристальный ассоциативный процессор сам2000
- •Модели нейронных сетей
- •Модели инс
- •Оптимизационные системы.
- •Неуправляемые системы распознавания образов.
- •Системы feed forward.
- •Элементы нейрологики с позиции аппаратной реализации
- •Реализация нейронных сетей
- •Программные нейрокомпьютеры
- •Программно-аппаратные нейрокомпьютеры
- •Практическое использование инс
Проблема сетевой перегрузки.
Итак, мы приняли решение, что сетью управления в нашей машине будет отдельная сеть Fast Ethernet . Почти наверняка проблема выбора сетевого адаптера перед нами не стоит, поскольку на материнской плате имеется встроенный адаптер. Выбирая коммутатор, мы, временно возложив на нашу сеть «по совместительству» функции коммуникационной сети, запустили на ней тест mpitnet и он проработал сутки. Означает ли это. что проблемы сети управления решены и можно приступать к разработке коммуникационной сети?
Увы. нет. По крайней мерс, если на сеть управления возлагается доступ узлов к файловому серверу при помощи NFS - а это, скорее всего, так.
Проблема, которую нам надо радикально решить сейчас, - это проблема сетевой перегрузки. Связь появления этой проблемы с NFS прояснится ниже, сейчас же постараемся пояснить, в чем проблема заключается.
Внешние проявления сетевой перегрузки весьма красочны. Сводятся они к тому, что все простые тесты работают, то есть демонстрируют полную работоспособность сети, но на реальных программах то одно, то другое сетевое взаимодействие отказывается выполняться.
Вдруг «не проходит» команда rsh. пока вы выясняете, в чем дело, совершенно аналогичные команды, адресованные тому же узлу, вновь начинают благополучно работать. Повторить именно этот эффект почти никогда не удается, зато появляется другой, столь же неуловимый. И целом оказывается, что работать нельзя, но все по отдельности исправно.
Плав Отказы сетевых функций особенно пагубно сказываются на работе системы управления процессорным ресурсом. Как мы помним, задача той системы состоит в том. чтобы сводить крупные, неделимые с точки зрения пользователя, действия к последовательностям элементарных сетевых воздействий управляющей машины на узлы. Например, единое действие «завершить параллельную программу» система управления ресурсами превращает внутри себя в большое количество команд rsh, адресованных выполняющим параллсльную программу узлам. Смысл реализации системы управления ресурсами в том и состоит, чтобы весь комплект таких команд гарантированно выполнялся. как единое целое, в правильном составе. Ясно, что никаким неделимости, корректности и управляемости не получится, если некоторые из этих команд rsh случайным образом откажутся работать (или. что еще хуже, на самом деле сработают, но вернут код возврата, соответствующий отказу - а так бывает чаще всего)
Не намного лучше ситуация, когда программа, отсчитавшая несколько часов, завершается аварийно из-за сбоя при записи результатов расчетов на общий диск при помоши NFS. Запущенный «по горячим следам» на том же узле тест NFS почти наверняка продемонстрирует прекрасную работоспособность.
На первый взгляд, все это очень похоже на большую кучу независимых недоделок и ошибок в Linux, проявляющихся чаше обычного по причине большого числа узлов и напряженного режима работы. Кто cпopит - ошибки в Linux, как и во всяком программном комплексе, есть. Но в данном случае мы имеем дело с совершенно конкретным системным эффектом, который объясняется вовсе не ошибками, а именно - с сетевой перегрузкой. Чтобы понять, что это такое, нам придется немного освежить в памяти наши представления об устройстве протоколов семейства IP.
В главе, посвященной программному обеспечению, мы упоминали (правда вскользь) о том. что стандартные сетевые протоколы ориентированы, вообще говоря, на Интернет, а не на кластер.
Попробуем конкретизировать, в чем именно это проявляется.
Интернет (как. впрочем, и локальная сеть общего назначения) характеризуется. помимо прочего, двумя свойствами:
• ненадежностью аппаратной среды передачи данных,
• динамичностью и потенциальной неограниченностью своего состава.
Ненадежность проявляется, например, когда Вы «на ходу» переключаете сетевые кабели или включаете ранее выключенную машину, входящую в состав сети. Все эти (и многие другие) действия способны приводить к физическим искажениям в передаваемых по сети в этот момент данных. К тому же приводит и электрические помехи.
Динамичность и потенциальная неограниченность состава лучше всего видна на примере выполнения команды ping с целью выяснить, включена ли указанная машина, готова ли она к работе. В самом деле, вы не знаете, есть ли в данный момент эта машина в сети, но пытаетесь с ней «разговаривать», и сетевые протоколы на это рассчитаны.
Многолетняя эволюция сетевых протоколов общего назначения целенаправленно шла в направлении обеспечения именно таких возможностей - без них никакая универсальная сетевая инфраструктура не проработала бы и пятнадцати минут. Как именно сетевые протоколы это обеспечивают?
Прежде всего, сетевые протоколы общего назначения, образуют иерархию, то есть одни из них реализованы на базе других. При этом важнейший «водораздел» проходит по протоколу IP. который обеспечивает передачу пакетов данных от одного узла сети к другому, но не гарантирует доставки Когда пакет IP уходит в сеть, сеть «знает», как именно она будет его передавать, но не знает, удастся ли ей это сделать в конечном итоге. На своем пути пакет может быть не только искажен, но и потерян, размножен, поменян местами с другим пакетом того же отправителя. Соответственно, вся забота о том. чтобы в результате такой ненадежной передачи информация все же была доставлена в надлежащем виде, возлагается на вышестоящие протоколы. Например. протокол TCP, реализованный на базе IP, включает нумерацию пакетов. контрольное суммирование, подтверждение доставки и т. п. Протокол UDP на базе IP всего этого не обеспечивает и потому сам остается ненадежным. На его основе, в свою очередь, строятся надежные протоколы, такие как NFS или протокол передачи сообщений в коммуникационной библиотеке PVM.
Казалось бы. менее всего кластер должен был страдать от встроенных в протоколы средств нейтрализации потерь при передаче данных. Внутренняя сеть кластера имеет фиксированный состав и довольно высокую, по сравнению с типичной локальной сетью, защищенность от помех, узлы включаются н выключаются только вес вместе. Если помех не будет, не будет и повторных передач данных. Так что же нас. в таком случае, волнует?
Пусть параллельная программа пользуется протоколом tcp для обмена сообщениями между узлами. Ядро Linux, в свою очередь, внутри себя превращает наши данные в IP-пакеты и доставляет их без потерь, поскольку электрических помех нот. а узел-получатель заведомо существует Только вот без потерь ли? Может ли физически протокол IP работать без потерь пакетов?
Поставим себя - мысленно - на место программы ядра, реализующей протокол IP Пусть от нас требуется отправить пакет. Если сетевое устройство свободно, мы это. конечно, сделаем. А если занято? Очевидно, мы запомним пакет для дальнейшей отправки, когда до него дойдет очередь. Прекрасно. Пусть теперь программа пользователя длительное время «бомбардирует» нас пакетами со скоростью, превышающей быстродействие сетевой карты Пакеты будут накапливаться, и исчерпание любого конечного буфера для хранения очереди на отправку - вопрос времени, не более того. Буфер исчерпан, программа отправляет еще: Что делать? Очевидно, «зависнуть на системном вызове отправки данных, чтобы до отправки следующего пакета дело не дошло», -скажем мы. И будем неправы, поскольку нельзя требовать от протокола невозможного Согласно упомянутой выше иерархии протоколов, IP понятия не имеет, от какой программы и по какому поводу пришел этот роковой пакет.
Если бы программа, реализующая IP в ядре, действительно поступала так. мы запросто могли бы «завесить» (причем навсегда) всякую сетевую активность в машине, всего лишь попытавшись записать большой файл на предварительно выключенный NFS-сервер. По смыслу следовало бы «притормозить» именно ют приходящий в ядро поток пакетов, который вызвал критическое заполнение буферов, а другие потоки продолжать обслуживать своим чередом. Но IP по Самому дизайну иерархии протоколов не в состоянии различать. как рас предел я юте м пакеты по потокам Конечно, если бы мы использовали какой-нибудь облегченный протокол для работы внутри кластера, следовало бы предусмотреть по отдельному комплекту буферов для пакетов, адресованных каждому получателю. Буферный пул сообщений 67-му узлу переполнен? Значит, попытка отправки данных только в этот узел должна быть «приторможена». путем временного «зависания» запроса на отправку. Однако здесь уместно вспомнить, что IP рассчитан на Интернет, где число возможных адресатов потенциально бесконечно. В этих условиях фиксированных буферов для каждого адресата может не хватить
Таким образом, если ненадежность сети требует от сетевых протоколов умения доставлять данные в условиях частичных потерь, то динамичность н потенциатьная неограниченность состава сети вынуждает нижний уровень иерархии протоколов «уметь» терять пакеты, когда их накапливается слишком много. До тех пор. пока такие потери происходят эпизодически, верхние уровни протокольной иерархии справляются с этими потерями так. как если бы это были потери вследствие помех. Эта же неопределенность состава сети вынуждает встраивать в механизм нейтрализации потерь понятие тайм-аута: если мы посылаем rsh на некий компьютер, а тот не отзывается, мы должны, рано или поздно уметь прекратить попытки, вернув код возврата «узел недоступен».
Сложившаяся ситуация парадоксальна. С одной стороны, мы имеем аппаратур), в которой «аппаратные» потери данных практически отсутствуют. С другой стороны, ориентированность сетевых протоколов на другую - ненадежную - аппаратуру вынуждает операционную систему терять пакеты, сети нагрузка на канал в течение длительного времени превышает его пропускную способность, С третьей стороны, возможности встроенной в ОС системы нейтрализации потерь не безграничны - если теряется заметная доля пакетов (половина. скажем), у системы нейтрализации может «лопнуть терпение» и она «скажет», что адресат попросту отсутствует. Особенно важно отметить, что дчя такого отказа в выполнении сетевого запроса совершенно не требуется, чтобы что-то сломалось. Мы ведь, строя свою модель отказа, не предполагали, что в ОС или аппаратуре сеть ошибка, а оперировати исключительно соотношениями интенсивности нагрузок и пропускных способностей.
Такая ситуация, когда нагрузка на сеть приводит к отказу в обслуживании запроса по причине неприемлемого процента внутренних потерь пакетов, без каких-либо разрушений в ОС или аппаратуре, и называется сетевой перегрузкой (network congestion).
Итак, сетевая перегрузка возникает безо всяких аппаратных или программных разрушений, на исправной аппаратуре и «живой» ОС на всех yзлах. причем в случае, когда используются стандартные протоколы TCP/IP, то есть от нее заведомо должна страдать есть управления. Классический вариант сетевой перегрузки называется «все пишут в одну точку». Например, все ветви па-рат
ллельнон программы интенсивно выводят на стандартный вывод, а сеть управления доставляет эти потоки на управляющую машину, или все ветви интенсивно пишут на сетевой диск файлового сервера.
Как побороть сетевую перегрузку?
Первое, что приходит в голову, найти «те самые» значения тайм-аутов и количеств повторов при отказе, которые заставляют Linux «сдаваться» раньше времени в условиях сетевой перегрузки, и увеличить их вес К сожалению, этот путь тупиковый. Если куда-то «втекает» вдвое быстрее, чем «вытекает)», перополнснис «бассейна» неизбежно, как бы велик он ни был. Единственный правильный способ, всегда применявшийся, кстати, разработчиками ОС для машин МРР в докластерную эпоху, это доставка каждого из возможных в системе потоков данных с использованием фиксированных, статически выделенных объемов промежуточной буферной памяти с гарантированным торможением того потока, который исчерпал свои ресурсы. Как реализовать это в рамках стандартных протоколов семейства IP?
Само понятие отдельного потока возникает в иерархии стандартных сетевых протоколов лишь на уровне TCP Протокол TCP устроен таким образом;что для каждого установленного соединения передаст «в кредит», то есть без подтверждения о приеме, лишь строго ограниченный объем данных. При этом вам размер «кредита» (строгое название: TCP Window Size, то сеть размер окна ТСР) динамически подстраивается под скорость прихода подтверждений. Если они начинают запаздывать, «кредит» уменьшается. Такая логика – единственн разумная, при условии, что число соединений заранее не известно - в принцие. способна преодолеть сетевую перегрузку. Проблема лишь в том. что не все нкредачи данных в сети управления выполняются с использованием протокола ITCP Так доступ к серверной файловой системе происходит по протоколу NFS. I который, в свою очередь, базируется на UDP. Последний протокол не включает [понятия «соединения» и потому не может обладать логикой преодоления перегрузок. Отсюда ясно происхождение наиболее распространенного «привычного вывиха» при управлении кластером - эпизодического отказа при попытке выполннть rsh на фоне интенсивного ввода/вывода по NFS.
Этот эффект, конечно, сильно зависит от размера кластера. На установках из сотен узлов он способен «обвалить» систему в считанные минуты, в то время как на малых установках из 10-15 узлов его проявление маловероятно.
Следует отмстить, что протокол NFS сам по себе довольно устойчив. Он [может отказывать периодически по причине сетевой перегрузки, но чаще «рубит» другую сетевую активность, чем ломается сам.
Наиболее радикальным средством борьбы с такими ситуациями предоставляется переход на NFS на базе TCP. Такая версия NFS, начиная с ядра 2.4.x, поддерживается в Linux.
Отмстим, что еще одним источником UDP-трафика в кластере может служитъ PVM Также нельзя не отметить, что. исключая компоненты на базе UDP-трафика и надеясь при этом избежать сетевых перегрузок, мы отступаем от принципа императивности: ведь ничто не мешает нашим пользователям самим вписать программы с интенсивными UOP-обмсенами по управляющей сети.
Как проверить, грозит ли конкретному кластер тот обвал, о котором только что шла речь? Надо написать программу интенсивного, крайне неэффективного вывода на диск, например, такую, как в Приложении 4. и запустить ее на всех процессорах Затем попытаться выполнять те действия с использованием rsh, которые вы обычно выполняете.
Например, если установлена система управления процессорным ресурсом, попробуйте просто завершить задачу. Если получилось, все узлы отзываются на rsh и находятся в хорошем состоянии. то в первом приближении, все хорошо. В том. что касается сетевых перегрузок, полных гарантий быть не может, но типичные "тяжелые режимы» тем более надо проверять. Полезно также запустить mpitncf на тех же процессорах на фоне нагрузочного теста NFS - rth, Конечно, он будет работать много медленнее, чем обычно, но. тем не менее, должен работать как угодно долго с отличной от нуля скоростью.
Что делать, если описанные выше проверки дают отрица-тельные результаты? Методов борьбы в этом случае всего три
купить более дорогой и качественный коммутатор (может быть, дело в нем. хотя и вряд ли. если при снятии нагрузки все входы работают).
установить отдельную есть только для NFS, а для управления использовать другую.
изучать Advanced IP Routing - средства Linux, позволяющие искусственно ограничить интенсивность обмена данными в рамках стандартных протоколов
Выбор рабочей станции.
Казалось бы. выбор рабочей станции узла вообще не представляет проблемы. Отчасти что верно - такой выбор действительно является наиболее простым и безосным из всех решений, которые принимаются при построении кластера Однако, как бы ни был он прост по сравнению со всем остальным определенные проблемы есть и здесь.
Прежде всего, остановимся на проблеме надежности Даже самый мало ведущий в вопросах подбора техники пользователь скажет вам, что любой купленный в магазине персональный компьютер способен проработать и 4, и 5 дней непрерывно. выполняя одну долгую расчетную программу.
А как насчет 3 -4 Месяцев бесперебойной работы!
Например, если средняя наработка одного компьютера на фатальный сбой составляет 5 суток, то средняя наработка на фатальный сбой кластера из 16 таких компьютеров будет менее восьми часов .Для серьезных расчетов, мягко говоря, мало.
Пока мы приняли к сведению. что требования к надежности узла кластера, должны быть повышены, по сравнению с настольной машиной примерно во столько же раз. сколько узлов будет в кластере.
Возможно, имеет смысл подумать о корпусах в индустриальном исполнении. Пристальненшее внимание следует уделить качеству и безотказности вентиляторов. Нет особой нужды напоминать о том, что отказ вентилятора в составе кластера, скорее всего, не будет во время обнаружен, и мате-' римская тага попросту «сгорит». Если вы установили, что вентилятор изделия, которое вы рассматриваете в качестве варианта узла, периодически начинает издавать посторонние звуки - как минимум, следует заменить вентиляторы во всей партии. или выбрать другую.
Однако нам надо решить еще несколько важных частных вопросов.
Первый из них - на каком семействе процессоров следует остановиться? Из общих соображений. среди предлагаемых на рынке микропроцессоров массового пользования нет какого-либо «специально кластерного»' варианта. Кластеры традиционно работают под управлением Linux, а эта операционная система реализована для всех более или менее широко распросграненных процессоров. Более того, известны вполне успешные примеры построения Linuх-кластеров из системных блоков Macintosh, или машин на базе Compaq Alpha и, конечно же. из машин с lntel-свместнмыми процессорами.
Общее правило выбора здесь, следующее: если нет специальных соображений в пользу того или иного варианта, следует выбирать вариант самый распространенный.
Следовательно, подавляющем большинству разработчиков (и покупателей) кластеров есть прямой резон предпочесть Intel-совместимый процессор.
Если требуется максимально возможное быстродействие отдельного узла, особенно на арифметике двойной точности, имеет смысл рассмотреть вариант с процессором Compaq Alpha 21264. Несмотря на скромную, по сравнению с предлагаемыми в магазине Intel-совместимыми процессорами, тактовую частоту, процессор этот сегодня фактически не имеет себе равных по быстродействию (при вычислениях с плавающей точкой.
Завершая выбор рабочей станции для узла нашего кластера, мы вынуждены решить еще несколько частных вопросов. Например, неизбежно встанет вопрос о требуемом объеме оперативной и дисковой памяти. Решить его, не приалекая дополнительных соображений в общем виде, невозможно. Никто, кроме вас, не посоветует сколько оперативной памяти на узел должно быть в вашей установке. То же относится и к объему диска.
Наконец, последний важный вопрос - выбор числа процессоров в узле.
Практически для всех широко распространенных процессоров можно приобрести, наряду с традиционными, однопроцессорными, машинами, также и SMP-машины из двух и даже четырех процессоров, симметрично адресующих общую память .Казалось бы, к этому следует стремиться, поскольку часть связей между процессорами в кластере из SMP-узлов становится очень тесной, к тому же цена процессора в составе SMP-узла ниже, чем цена такого же процессора в составе отдельной машины. В то же время, на типичных реальных задачах наблюдается падение реального быстродействия процессора в составе двухпроцессорного узла, по сравнению с однопроцессорным примерно на столько же процентов, на сколько процессор в составе двухпроцессорного узла дешевле.
Объясняется это конкуренцисй процессоров при доступе к обшей памяти, и в случае, когда процессоров в узле не два а четыре или больше, эффект становится еще более заметным.
Следовательно, вариант с однопроцессорными узлами даст максимальное реальное быстродействие из расчета на процессор. а удельная цена эффективного быстродействия при выборе обоих вариантов узлов примерно одинакова
В то же время, выбор двухпроцессорного узла автоматачески означает уменьшение в два раза удельной пропускной способности сети (из расчета на процессор). Однако применение двухпроцессорных узлов обеспечивает более компактную компоновку, а также экономию на связной аппаратуре.
Выбрав рабочую станцию узла» имеет смысл взять в качестве управляющей машины такую же рабочую станцию, оснащенную, скорее всего, заметно большим объемом дисковой памяти и. возможно, дополшггельным сетевым оборудованием для выхода во внешнюю есть,