ТОП 10:

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



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

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

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

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

 

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

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

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

 

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

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

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

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

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

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

♦ Кількість блокувань у системі зростає із ростом кількості процесорів.

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

 







Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.59.63 (0.003 с.)