69296

Багатопроцесорні та розподілені системи

Лекция

Информатика, кибернетика и программирование

У багатопроцесорних системах набір процесорів перебуває в одному корпусі та використовує спільну пам’ять а також периферійні пристрої. Типи багатопроцесорних систем Залежно від особливостей апаратної реалізації багатопроцесорні системи бувають такі: з однорідним доступом до пам’яті...

Украинкский

2014-10-02

54.5 KB

28 чел.

Лекція № 23

Тема: Багатопроцесорні та розподілені системи

План

  1.  Типи багатопроцесорних систем
  2.  Підтримка багатопроцесорності в операційних системах
  3.  Продуктивність багатопроцесорних систем

Сьогодні є два основні підходи до збільшення обчислювальної потужності комп'ютерних систем. Перший з них пов'язаний із підвищенням тактової частоти процесора. При цьому у розробників виникають технологічні проблеми, які пов'язані з необхідністю організовувати охолодження процесорів і тим, що швидкість поширення сигналів обмежена. Крім того, єдиний процесор системи є її «вузьким місцем» у надійності — його вихід із ладу призводить до неминучого краху всієї системи. Альтернативним підходом, про який ітиметься в цьому розділі, є організація паралельних обчислень на кількох процесорах. З одного боку, внаслідок збільшення кількості процесорів можна досягти більшої потужності, ніж доступна на цей момент для однопроцесорних систем. З іншого, такі системи мають більшу стійкість до збоїв — у разі виходу одного із процесорів із ладу на його місці можна використати інший.

Як було зазначено в розділі 1, можна виділити дві основні категорії систем, що використовують кілька процесорів. У багатопроцесорних системах набір процесорів перебуває в одному корпусі та використовує спільну пам'ять (а також периферійні пристрої). У розподілених системах процесори перебувають у складі окремих комп'ютерів, з'єднаних мережею. Паралельні обчислення організовані на базі спеціального програмного забезпечення, що приховує наявність мережі від користувачів системи.

Багатопроцесорні системи

Тут зупинимося на основних типах багатопроцесорних систем і особливостях їхньої підтримки в сучасних ОС на прикладі Linux і Windows XP.

Типи багатопроцесорних систем

Залежно від особливостей апаратної реалізації, багатопроцесорні системи бувають такі:

з однорідним доступом до пам'яті або UMA-системи (Uniform Memory Access), у яких доступ до будь-якої адреси у пам'яті здійснюється з однаковою швидкістю;

з неоднорідним доступом до пам'яті або NUMA-системи (Non-Uniform Memory Access), для яких це не виконується.

Однорідний доступ до пам'яті

Архітектура UMA-систем передбачає, що доступ будь-якого процесора до будь-якого модуля пам'яті відбувається однаково. Найпоширенішим підходом до реалізації такої системи є архітектура зі спільною шиною, коли всі процесори і модулі пам'яті з'єднані між собою спільною шиною пам'яті. У разі необхідності отримати доступ до пам'яті процесор перевіряє, чи не зайнята шина, і, якщо вона вільна, виконує фізичний доступ за заданою адресою.

Якщо шина зайнята, процесор чекає, поки вона не звільниться. Необхідність такого очікування є головним недоліком базової архітектури зі спільною шиною. Кількість процесорів, які можна використати в цій архітектурі, невелика (від 2 до 4).

Найпоширенішим способом зменшення часу очікування на спільній шині є оснащення кожного процесора власним апаратним кешем досить великого обсягу. При цьому, якщо відбувається вдале звертання до кеша, доступ до шини не потрібен. Навантаження на шину знижується, отже, у системі може підтримуватися більша кількість процесорів.

У цьому разі, однак, виникає інша проблема, пов'язана із необхідністю підтримки когерентності кеша (cache coherence) — погодженості даних, які перебувають у кешах різних процесорів.

Роз'яснимо це поняття. Є ймовірність, що одна й та саме ділянка пам'яті (наприклад, яка відповідає деякій структурі даних) буде одночасно збережена в кешах кількох процесорів. Розглянемо ситуацію, коли код одного з потоків змінює цю структуру даних. У результаті зміниться вміст основної пам'яті та кеш процесора, на якому виконувався цей потік. Вміст кешів інших процесорів при цьому залишиться незмінним і перестане відповідати даним, які перебувають в основній пам'яті, — кеш втратить когерентність.

Забезпечення когерентності кеша спричиняє зниження продуктивності. Необхідно, аби процесор, що змінює дані в пам'яті, передавав шиною спеціальний сигнал, який сповіщає інші процесори про цю зміну. У разі отримання сигналу кожен процесор, який визначив, що він кешував ті ж самі дані, має вилучити їх із кеша (зробити перехресне очищення кеша, cross invalidation). Періодичні звертання процесорів до шини для виявлення сигналу і перехресне очищення кеша займають багато часу. Крім того, підвищується ймовірність промаху під час доступу до кеша.

Незважаючи на ці проблеми, UMA-архітектуру із когерентним кешем широко використовують на практиці.

Неоднорідний доступ до пам'яті

Реалізація когерентного кеша не вирішує всіх проблеми, пов'язаних із наявністю спільної шини в UMA-архітектурі. Для створення багатопроцесорних систем, які розраховані на значну кількість процесорів (більше ніж 100) і матимуть можливість подальшого масштабування, потрібно використати неоднорідний доступ до пам'яті (NUMA-архітектуру).

В NUMA-архітектурі із кожним процесором пов'язують його власну локальну пам'ять. Єдиний для всіх процесорів адресний простір при цьому збережено -кожен процесор у системі може одержати доступ до локальної пам'яті будь-якого іншого процесора, але доступ до такої віддаленої пам'яті відбувається повільніше, ніж до локальної.

Фактично NUMA-система складається з набору вузлів (nodes), кожен із яких містить один або кілька процесорів та мікросхеми їхньої локальної пам'яті (а також, можливо, засоби введення-виведення). Вузли з'єднані між собою спільною шиною. Очевидно, що доступ до локальної пам'яті не вимагає звертання до шини, внаслідок чого навантаження на неї значно знижується. Крім того, звичайно організовують когерентний кеш для операцій доступу до цієї шини (системи із таким кешем називають CC-NUMACache-Coherent NUMA).

Підтримка багатопроцесорності в операційних системах

Розглянемо підходи до реалізації підтримки багатопроцесорності в ОС на програмному рівні.

Асиметрична багатопроцесорність

У разі використання асиметричної багатопроцесорності кожен процесор виконує код операційної системи незалежно від інших процесорів. Кожна копія ОС може бути завантажена в окрему ділянку пам'яті, можливе також спільне використання коду ОС різними процесорами з виділенням окремих ділянок пам'яті для даних. Цей підхід було використано на ранніх стадіях розвитку підтримки багатопроцесорних архітектур в ОС. Наведемо його недоліки.

♦ Усі процеси користувача деякої копії ОС виконуються на тому самому процесорі, що й сама копія. Немає можливості організувати паралельне виконання коду в рамках окремого процесу, не можна вирівнювати навантаження на окремі процесори і на пам'ять.

♦ Неможливо організувати дисковий кеш через те, що копії ОС різних процесорів кепгуватимуть дискові блоки окремо. Якщо різні процесори одночасно модифікують один і той самий дисковий блок у кеші, а потім спробують зберегти ці зміни на диск, втратиться інформація, оскільки тільки одна з цих змін буде справді записана на диск.

Симетрична багатопроцесорність

Основним підходом, який застосовують нині для підтримки UMA-архітектур, є симетрична багатопроцесорність (SMP). У даному разі у спільну пам'ять завантажують єдину копію операційної системи і всіх її даних, при цьому її код може бути виконаний кожним із процесорів або кількома процесорами одночасно.

Особливості SMP-систем наведено нижче.

♦ Усі процесори системи доступні з коду ОС. Планувальник ОС може організувати виконання її коду або коду потоку користувача на будь-якому процесорі.

♦ Для всіх процесорів доступні спільні дані, при цьому когерентність кеша підтримується апаратно.

♦ Потоки користувача і потоки ядра можуть виконуватися паралельно на різних процесорах. Під час виконання потік може мігрувати із процесора на процесор.

♦ Спроба повторного читання одних і тих самих даних процесором CPUA може дати інший результат внаслідок того, що ці дані були змінені процесором CPUB.

♦ У системі можливе вирівнювання навантаження між процесорами, для чого планувальник ОС може передавати новий потік для виконання найменш завантаженому процесору.

♦ Додавання нового процесора у систему автоматично робить його доступним для виконання коду ОС або процесів користувача. При цьому навантаження на інші процесори автоматично знижується.

Для того щоб скористатися перевагами багатопроцесорної архітектури, код ОС має бути багатопотоковим і реентерабельним. При цьому необхідна підтримка синхронізації на рівні ядра.

Найпримітивнішим підходом до забезпечення синхронізації є велике блокування ядра (big kernel lock). При цьому кожен процесор перед виконанням будь-якого коду ОС займає глобальний м'ютекс. Цей підхід неефективний, оскільки в конкретний момент часу код ОС може бути виконаний тільки на одному процесорі.

Сучасні ОС реалізують гнучкіший підхід, у якому код ядра розбивають на незалежні критичні ділянки, із кожною з яких пов'язують окремий м'ютекс.

Підтримка NUMA-архітектур

ОС, що підтримує NUMA-архітектуру, має прагнути до підвищення продуктивності внаслідок планування потоків для виконання на процесорах, що перебувають у тих самих вузлах, що і пам'ять, використовувана цими потоками. Природно, що повністю уникнути звертань до віддаленої пам'яті неможливо, але їхня кількість має бути мінімальною.

Звичайно для організації більш якісного планування у системі підтримують структуру даних, що описує топологію конкретної NUMA-системи (вузли, їхні характеристики і зв'язки між ними). Крім того, мають бути передбачені системні виклики, що дають змогу задавати вузли, на яких виконуватиметься потік.

Продуктивність багатопроцесорних систем

Масштабування навантаження

Під масштабуванням навантаження (workload scalability) у SMP-системах розуміють вплив додавання нових процесорів на продуктивність системи. У реальних умовах воно залежить від багатьох факторів.

♦ У разі збільшення кількості процесорів зростає навантаження на системну шину та пам'ять і, як наслідок, ціна промаху кеша.

♦ Кількість промахів кеша при цьому теж збільшується внаслідок того, що в системі збільшено кількість потоків, які потрібно планувати.

♦ Що більше процесорів, то більше зусиль потрібно докладати для забезпечення когерентності кеша.

♦ Кількість блокувань у системі зростає із ростом кількості процесорів.
Найбільший рівень "масштабування навантаження досягають для потоків, об
межених можливостями процесора, найменший — для потоків, обмежених мож
ливостями пристроїв введення-виведення.

Продуктивність окремих застосувань

Розглянемо, яким чином впливає наявність кількох процесорів на час виконання програмного коду.

Багатопроцесорність дає змогу поліпшити характеристики програми тільки тоді, коли в ній наявний паралелізм (як було зазначено в розділі 3.2, за умов бага-топроцесорності може бути реалізовано справжній паралелізм, коли окремі частини програми виконуються одночасно кількома процесорами). При цьому для того щоб ОС мала можливість організувати такий паралелізм, код програми має бути багатопотоковим. Якщо програма не використовує багатопотоковість, її виконання у багатопроцесорній системі може спричинити зниження продуктивності через очікування на додаткових блокуваннях і міграцію між процесорами.

Крім того, навіть якщо програма є багатопотоковою, максимальне поліпшення її продуктивності обмежене відповідно до закону Амдала

де S — виграш у швидкості виконання; Т— загальний обсяг коду, Гпосл — обсяг коду, що не може бути виконаний паралельно, п — кількість процесорів.

Питання для самоконтролю:

  1.  Типи багатопроцесорних систем
  2.  Однорідний доступ до пам’яті
  3.  Неоднорідний доступ до пам’яті
  4.  Асиметрична багатопроцесорність
  5.  Симетрична багатопроцесорність
  6.  Особливості SMP-систем
  7.  Підтримка NUMA-архітектур
  8.  Масштабування навантаження
  9.  Продуктивність окремих застосувань


 

А также другие работы, которые могут Вас заинтересовать

20450. HTTP 261 KB
  Основой HTTP является технология клиентсервер то есть предполагается существование потребителей клиентов которые инициируют соединение и посылают запрос и поставщиков серверов которые ожидают соединения для получения запроса производят необходимые действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с вебсайтов. В 2006 году в Северной Америке доля HTTPтрафика превысила долю P2Pсетей и составила 46 из которых почти половина это...
20451. Диаграмма кооперации (collaboration diagram) 122.5 KB
  Прежде всего на диаграмме кооперации в виде прямоугольников изображаются участвующие во взаимодействии объекты содержащие имя объекта его класс и возможно значения атрибутов. В отличие от диаграммы последовательности на диаграмме кооперации изображаются только отношения между объектами играющими определенные роли во взаимодействии. Кооперация Понятие кооперации collaboration является одним из фундаментальных понятий в языке UML.
20452. MySQL 122 KB
  MySQL является собственностью компании Oracle Corporation получившей её вместе с поглощённой Sun Microsystems осуществляющей разработку и поддержку приложения. MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера к которому обращаются локальные или удалённые клиенты однако в дистрибутив входит библиотека внутреннего сервера позволяющая включать MySQL в автономные программы.
20453. Диаграмма деятельности (activity diagram) 136 KB
  Для моделирования процесса выполнения операций в языке UML используются диаграммы деятельности. Каждое состояние на диаграмме деятельности соответствует выполнению некоторой элементарной операции а переход в следующее состояние выполняется только при завершении этой операции. Таким образом диаграммы деятельности можно считать частным случаем диаграмм состояний.
20454. Разработка и эксплуатация информационных систем 273.62 KB
  Объект сущность в адресном пространстве вычислительной системы появляющаяся при создании экземпляра класса например после запуска результатов компиляции и линковки исходного кода на выполнение. Конечным продуктом этапа проектирования являются: схема базы данных на основании erмодели разработанной на этапе анализа; набор спецификаций модулей системы они строятся на базе моделей функций. На основании системного проекта осуществляется: составление перечня автоматизированных рабочих мест предприятия и способов взаимодействия между...
20455. Кнопкові форми 24.5 KB
  На кнопкову форму виносять форми які відкривають формизвіти або активізують інші кнопкові формизакривабть поточну базу даних. Кнопокі форми можуть містити малюнкинаписи тощо. Кнопкові форми можна створити за допомогою диспетчера кнопкових форм за його допомогою на форму можна помістити до 8 кнопок.
20456. Комбінований метод хорд та дотичних 35.5 KB
  Характерна особливість методів дотичних і хорд та що послідовності їх наближень монотонні. Причому якщо для даного рівняння послідовність наближень методу хорд монотонно спадна то послідовність наближень методу дотичних монотонно зростаюча і навпаки. У даному випадку за початкове наближення в методі хорд вибирають точку x=a а в методі дотичних точку b.
20457. Множина́ 41.69 KB
  Основні поняття: Множина вважається означеною якщо про кожен об'єкт що розглядається можна казати що він або належить або не належить множині. Наприклад: ℕ множина натуральних чисел ℤ множина цілих чисел ℚ множина раціональних чисел ℝ множина дійсних чисел ℂ множина комплексних чисел. Нехай А множина. Множина B всі елементи якої належать множині А називають підмножиною множини A або частиною множини А і позначають цей факт символами B ⊆ A A ⊇ B.
20458. Основні задачі та проблеми проектування програмних продуктів 13.41 KB
  Пр428 Основні задачі та проблеми проектування програмних продуктів. Проектування це процес розробки проекту тобто комплекту документації призначену для створення проекту його удосконалення та ліквідації а також для перевірки або відтворення проміжних і кінцевих рішень. Проектування тривалий процес і включає етапи від підготовки технічного завдання до випробування. Процес створення програмного забезпечення ПЗ також включає в себе методи проектування.