12_Bagatoprotsesorni_ta_rozpodileni_sistemi.pptx
- Количество слайдов: 20
Багатопроцесорні та розподілені системи
1. Типи багатопроцесорних систем Залежно від особливостей апаратної реалізації, багатопроцесорні системи бувають: 1. з однорідним доступом до пам'яті або UMA-системи (Uniform Memory Access), у яких доступ до будь-якої адреси у пам'яті здійснюється з однаковою швидкістю; 2. з неоднорідним доступом до пам'яті або NUMA-системи (Non-Uniform Memory Access), для яких це не виконується.
Однорідний доступ до пам'яті Архітектура UMA-систем передбачає, що доступ будь-якого процесора до будь-якого модуля пам'яті відбувається однаково. Найпоширенішим підходом до реалізації такої системи є архітектура зі спільною шиною, коли всі процесори і модулі пам'яті з'єднані між собою спільною шиною пам'яті. У разі необхідності отримати доступ до пам'яті процесор перевіряє, чи не зайнята шина, і, якщо вона вільна, виконує фізичний доступ за заданою адресою. Якщо шина зайнята, процесор чекає, поки вона не звільниться. Необхідність такого очікування є головним недоліком базової архітектури зі спільною шиною. Кількість процесорів, які можна використати в цій архітектурі, невелика (від 2 до 4). Найпоширенішим способом зменшення часу очікування на спільній шині є оснащення кожного процесора власним апаратним кешем досить великого обсягу. Якщо відбувається вдале звертання до кеша, доступ до шини не потрібен. Навантаження на шину знижується, отже, у системі може підтримуватися більша кількість процесорів. У цьому разі виникає інша проблема, пов'язана із необхідністю підтримки когерентності кеша— погодженості даних, які перебувають у кешах різних процесорів.
Неоднорідний доступ до пам'яті Для створення багатопроцесорних систем, які розраховані на значну кількість процесорів (більше ніж 100) і матимуть можливість подальшого масштабування, потрібно використати неоднорідний доступ до пам'яті (NUMA-архітектуру). В NUMA-архітектурі із кожним процесором пов'язують його власну локальну пам'ять. Єдиний для всіх процесорів адресний простір при цьому збережено - кожен процесор у системі може одержати доступ до локальної пам'яті будь-якого іншого процесора, але доступ до такої віддаленої пам'яті відбувається повільніше, ніж до локальної. Фактично NUMA-система складається з набору вузлів, кожен із яких містить один або кілька процесорів та мікросхеми їхньої локальної пам'яті (а також засоби введення-виведення). Вузли з'єднані між собою спільною шиною. Доступ до локальної пам'яті не вимагає звертання до шини, внаслідок чого навантаження на неї значно знижується. Крім того, організовують когерентний кеш для операцій доступу до цієї шини.
2. Планування у багатопроцесорних системах Планування з розподілом часу Найпростішим способом організації багатопроцесорного планування незалежних потоків є використання структури даних для готових потоків, спільної для всіх процесорів. Прикладом такої структури може бути багаторівнева черга, яка використовується під час планування із пріоритетами. Коли потік на одному з процесорів завершує роботу або призупиняється, цей процесор починає виконувати код планувальника ОС. Планувальник при цьому блокує чергу готових потоків, ставить на виконання потік із найвищим пріоритетом і вилучає його керуючий блок із черги. Наступний за пріоритетом потік почне виконуватися на наступному звільненому процесорі і т. д. Такий підхід називають плануванням із розподілом часу, оскільки щоразу приймають рішення щодо використання одного процесора і виконання одного потоку.
Планування з розподілом простору Для організації виконання пов'язаних потоків необхідно одночасно розглядати кілька процесорів і розподіляти по них набір потоків. Цей підхід називають плануванням із розподілом простору. Найефективнішим алгоритмом планування із розподілом простору є бригадне планування (gang scheduling). Цей алгоритм працює так. 1. Пов'язані потоки одночасно запускають на виконання на максимально можливій кількості процесорів. Такі потоки становлять бригаду (gang). 2. Усі потоки бригади виконуються впродовж однакового для всіх кванта часу. 3. Після вичерпання кванта часу відбувається повне перепланування для всіх процесорів. Виконання починають потоки іншої бригади. Якщо кількість потоків бригади менша, ніж кількість процесорів, виконання можуть почати потоки кількох бригад, якщо більша - виконується частина потоків бригади, а інші будуть заплановані до виконання упродовж наступного кванта часу.
3. Спорідненість процесора – це імовірність того, що потік буде запланований для виконання на процесорі, що виконував код цього потоку минулого разу. Висока спорідненість означає малу ймовірність міграції потоку між процесорами під час його виконання. Типи спорідненості процесора Є два типи спорідненості процесора — м'яка і жорстка. М'яка спорідненість — властивість планувальника підтримувати виконання потоку на одному й тому самому процесорі упродовж максимального проміжку часу. При потребі потік мігрує на інший процесор, але це має траплятися якомога рідше. Відсутність м'якої спорідненості спричиняє появу ефекту пінг-понгу, кожне перемикання контексту спричиняє міграцію потоку на інший процесор. Жорстку спорідненість задають для окремого потоку, це — явне обмеження набору процесорів, на яких йому дозволено виконуватися. Потік прив'язаний до одного або кількох процесорів. Вимога жорсткої спорідненості є обов'язковою (якщо визначено, що потік може бути виконаний тільки на процесорі 0, процесор 1 для нього буде недоступний). Задання жорсткої спорідненості відбувається із використанням маски спорідненості - бітової маски, кожний біт якої відповідає процесору, присутньому у системі.
4. Підтримка багатопроцесорності у Windows За умов багатопроцесорної системи планувальник Windows ХР визначає порядок виконання потоків і процесори, на яких вони мають виконуватися. За замовчуванням підтримують м'яку спорідненість. У системі може бути задана жорстка спорідненість на основі маски спорідненості, а серед процесорів, заданих у масці спорідненості потоку, додатково вибирають ідеальний процесор. Планувальник планує потік для виконання на ідеальному процесорі, якщо він є доступним у цей момент. Маска спорідненості потоку, номер ідеального процесора і номер процесора, на якому потік виконувався останній раз, містяться в керуючому блоці потоку (KTHREAD), маска спорідненості процесу — у блоці KPR 0 CESS. Під час створення потоку його маску спорідненості ініціалізують значенням маски спорідненості процесу. У разі постановки потоку на виконання відбуваються такі дії: 1. Процесором, на якому виконуватиметься потік, планувальник намагається зробити ідеальний процесор. 2. Якщо ідеальний процесор недоступний, вибирають процесор, на якому потік виконувався востаннє. 3. Якщо і цей процесор зайнятий, вибирають інший вільний процесор або процесор, на якому виконується потік із нижчим пріоритетом.
Задання жорсткої спорідненості та ідеального процесора Жорстка спорідненість може бути задана (маска спорідненості змінена із програми) за допомогою функцій Set. Process. Affinity. Mask() (для процесу) або Set. Thread. Affinity. Mask() (для окремого потоку). DWORD mask_proc = 2; // другий процесор (маска 000. . . 0010) Set. Process. Affinity. Mask(Get. Current. Process(), &mask_proc); Для визначення поточного значення маски спорідненості процесу використовують функцію Get. Process. Affinity. Mask(): DWORD mask_proc. mask_sys; // у масці mask_sys увімкнуто біти для всіх доступних процесорів Get. Process. Affinity. Mask(Get. Current. Process(), &mask_proc, &mask_sys); printf(“маска процесу: ’” %081 х, системна маска: %08 lхn", mask_proc, mask_sys); Ідеальний процесор вибирають випадково під час створення потоку. Щоб змінити його із застосування, потрібно використати функцію Set. Threadldeal Processor(). Set. Thread. Ideal. Processor(Get. Current. Thread(), 1); // другий процесор
5. Розподілені файлові системи Розподілена файлова система (РФС) дозволяє застосуванням звертатися до файлів, що перебувають на диску віддаленого комп'ютера. 5. 1. Організація розподілених файлових систем Керування іменами в РФС Є два основні підходи до реалізації керування іменами в РФС. Перший підхід: відображення файлової системи для різних клієнтів може виглядати по-різному. Так відбувається у разі віддаленого монтування файлових систем. У цьому разі перед використанням віддаленої файлової системи її потрібно змонтувати у підкаталог файлової системи клієнта. Різні клієнти можуть монтувати ту саму систему в різні каталоги. Такий підхід реалізувати досить просто, але керування системою складніше (у файловій системі клієнта виявляються «перемішаними» локальні та віддалені каталоги, до одного й того самого файлу звертаються із використанням різних шляхів тощо). Другий підхід: файлова система визначає єдиний простір імен, що має однаковий вигляд для всіх її клієнтів. Таке єдине відображення дає змогу спростити використання системи. Цей підхід складніший у реалізації, але є найбільш зручним для користувачів.
Реалізація віддаленого доступу до файлів Припустимо, що клієнт звернувся до віддаленого файлу, а засоби керування іменами дали змогу знайти його фізичне місце розташування. Після цього необхідно звернутися мережею до віддаленого файлу, обробити його і повернути результат клієнтові. Розглянемо підходи до реалізації такого віддаленого доступу до файлу. Найпростішим підходом є передавання кожного запиту на сервер у вигляді окремого віддаленого виклику процедури. При цьому кешування даних не роблять, кожний запит вимагає передавання даних мережею. Це віддалене обслуговування. Основними його перевагами є простота реалізації та відсутність суперечностей (всі дані негайно зберігаються на диску сервера), а головним недоліком — низька продуктивність, кожна файлова операція вимагає пересилання даних мережею та звертання до диска на сервері. Для підвищення продуктивності використовують кешування даних. У даному випадку локальні кеші розташовані на клієнтах, а основною копією даних є копія даних на сервері.
5. 2. Файлова система Microsoft DFS Принципи організації DFS Дана файлова система дає змогу створити єдине логічне дерево каталогів, що відображають мережні ресурси. Корінь дерева називають кореневим каталогом DFS. Його створюють на NTFSрозділі жорсткого диска комп'ютера, який називають DFS-сервером. Починаючи від цього кореня, адміністратор може створювати DFSзв'язки. Кожен зв'язок відображає віддалений мережний ресурс (для його створення необхідно вказати UNC-ім'я цього ресурсу). Комп'ютер, що надає мережний ресурс, називають довідковим комп'ютером. Доступ до DFS-зв'язку для клієнта аналогічний до доступу до звичайного каталогу через UNC-ім'я: \DFS-cepвepкореневий_каталог_DFSDFS-зв'язокім'я_файла Різні зв'язки можуть відповідати ресурсам на різних віддалених комп'ютерах, відображати різні файлові системи — для користувача або прикладної програми це не має значення — їх усіх видно як частини одного дерева каталогів. Для доступу до мережного ресурсу через DFS-зв'язок достатньо, щоб клієнт, DFS-сервер і довідковий комп'ютер використовували спільний мережний протокол.
Архітектура DFS Підтримка DFS на сервері складається із фонового процесу dfssvc. exe (служби DFS) і драйвера файлової системи dfs. sys. Служба DFS відповідає за керування основною структурою даних DFS - таблицею інформації про розділи, що містить відомості про відповідність між DFS - зв'язками і фізичними серверами, на яких перебувають дані. Драйвер DFS безпосередньо відповідає за перетворення конфігурації DFS на інформацію про віддалений ресурс, яку повертають клієнтові.
Поняття посилання. Пошук інформації в DFS Окремий елемент РКТ називають посиланням. Він зберігає інформацію про DFS - зв'язок разом із UNC - іменем віддаленого ресурсу або набором його дублікатів. DFS -клієнт містить локальний РКТ - кеш, призначений для зберігання посилань. У разі доступу до DFS-каталогу клієнт перевіряє, чи не збережене у його РКТ-кеші посилання, що відповідає цьому каталогу. Якщо такого посилання немає, клієнт запитує його у DFS-сервера. Сервер відшукує посилання у РКТ і повертає клієнтові, який використовує відповідне UNC-ім'я для доступу до ресурсу, а саме посилання заносить у кеш. Якщо посилання було знайдене в кеші, UNC-ім'я із нього використовують негайно без звертання до сервера. Коли посилання містить набір дублікатів, DFS-сервер визначає IPадресу клієнта і випадково вибирає мережний ресурс із цього набору.
6. Сучасні архітектури розподілених систем 6. 1. Кластерні системи Кластером називають розподілену систему, що складається із набору комп'ютерів, які працюють разом як єдиний обчислювальний ресурс. Окремі комп'ютери в рамках кластера називають вузлами. Вузли оснащені таким самим апаратним забезпеченням, що і автономний комп'ютер (пам'яттю, засобами введення-виведення, жорстким диском), і можуть бути використані окремо поза кластером. Вони бувають однопроцесорними і багатопроцесорними, на кожному із них виконується окрема копія операційної системи. Усі вузли кластера пов'язані високопродуктивною мережею. Кластер відображається користувачам як єдина система, що має більшу продуктивністю, ніж окремі його вузли. Кластер – це система, що складається із невеликої кількості вузлів (від 2 до кількох сотень), розташованих поблизу один від одного і з'єднаних локальною мережею. Кластерні технології підвищують обчислювальні можливості внаслідок використання стандартного програмного й апаратного забезпечення. Масштабування кластера просте: для додавання нового вузла у кластер достатньо підключити до мережі підходящий за комп'ютер і запустити на ньому необхідне програмне забезпечення.
Кластерна архітектура Windows ХР Основою архітектури серверних кластерів є кластерна служба— набір компонентів кожного вузла, що підтримують функціонування кластера. Компоненти кластерної служби працюють в адресному просторі окремого фонового процесу. Програмні та апаратні компоненти вузлів, якими керує кластерна служба, називають ресурсами. До ресурсів належать апаратні пристрої (диски, мережні інтерфейси) і логічні об'єкти (IP-адреси, застосування, бази даних). Ресурси можуть перебувати у підключеному і відключеному стані. Розрізняють локальні ресурси вузлів і спільні ресурси, доступні для всіх вузлів кластера (спільний масив дисків, спільна мережа). Спеціальний ресурс, який називають ресурсом кворуму, використовують для зберігання службової інформації, спільної для всього кластера. Його реалізують на базі одного із дисків спільного масиву. Ресурси об'єднані у групи ресурсів. Така група складається із логічно пов'язаних ресурсів. Власником групи у конкретний момент може бути тільки один вузол кластера. Для кожної групи задано, на якому вузлі їй переважно потрібно виконуватися і куди слід її перевести у разі виходу поточного вузла з ладу.
Компоненти кластерної служби: 1. Менеджер вузлів функціонує на кожному вузлі і підтримує локальний список поточних вузлів кластера. Для цього він періодично надсилає тактові повідомлення аналогічним менеджерам інших вузлів. Коли один із них не відповідає на повідомлення, відповідний вузол вважають таким, що вийшов із ладу; про це негайно повідомляють інші вузли, внаслідок чого вони обновлюють свої списки поточних вузлів (стається подія перегрупування. 2. Менеджер бази даних керує конфігураційною базою даних кластера, яка містить інформацію про всі фізичні та логічні елементи кластера (вузли, типи і групи ресурсів, конкретні ресурси) і зберігається у реєстрі кожного вузла і в ресурсі кворуму. Цю інформацію використовують для відстеження поточного і бажаного стану кластера. 3. Менеджер виведення з ладу відповідає за обробку ситуації, коли один із вузлів виходить із ладу або повертається до роботи. При цьому групи ресурсів перерозподіляються між іншими вузлами з урахуванням поточного навантаження на вузли і переваг, заданих для цих груп. У разі поверненні вузла до роботи менеджер виведення з ладу переводить групи ресурсів назад під керування цього вузла.
6. 2. Grid-системи Розвиток технологій розподілених систем привів до ситуації, коли стало можливим організовувати системи, що дають змогу використати вільні обчислювальні ресурси, розподілені по всьому світу. Обчислювальні grid-системи дають можливість спільно використовувати географічно та організаційно розподілені неоднорідні обчислювальні ресурси, відображаючи їх як єдиний, уніфікований обчислювальний ресурс. До ресурсів, які можна таким чином використовувати, належать окремі комп'ютери, кластери, засоби зберігання даних, мережні ресурси тощо. Назва «grid» відображає аналогію між використанням такого уніфікованого ресурсу і доступом до електричної мережі. Користувачі електромережі отримують доступ до ресурсу (електроенергії) незалежно від конфігурації джерел енергії та ліній електропередачі. Аналогічно для користувачів grid-системи не має значення, який із компонентів надав їм обчислювальний ресурс.
Grid-системи містять такі компоненти: 1. засоби, що транслюють запити користувачів у запити до ресурсів grid-системи (комп'ютерів, мереж, дискового простору, баз даних тощо); 2. засоби, які виконують пошук ресурсів, їхній підбір і розміщення, планування і координацію обчислювальних задач, а також збирання результатів; 3. засоби безпеки, які дають змогу керувати аутентифікацією та авторизацією користувачів. Вони мають підтримувати єдиний вхід у систему, відображення на механізми захисту локальних систем, можливість запуску застосувань із правами користувача; 4. засоби розробки застосувань, що використовують особливості grid-архітектури. Основним призначенням grid-систем є підтримка розв'язування задач, що вимагають великих обчислювальних ресурсів. Вони подібні до обчислювальних кластерів. Ці технології мають відмінності.
Grid-системи є географічно розподіленими (пов'язаними глобальними мережами) і неоднорідними (у них входять компоненти із різною апаратною і програмною архітектурою). Їхні компоненти можуть перебувати в різному адміністративному підпорядкуванні. Вузли кластерів пов'язані локальною мережею, перебувають у централізованому підпорядкуванні та мають однакову архітектуру. Кластерна архітектура містить у собі централізований менеджер ресурсів. Для grid-архітектур внаслідок більшого масштабу системи кожний вузол має свій менеджер ресурсів. Вузли grid-систем завжди є невиділеними. Будь-який обчислювальний ресурс, що входить у таку систему, може водночас використовуватися для інших цілей. Для використання в межах grid-системи виділяються тільки ресурси, вільні в конкретний момент. Конфігурація grid-систем постійно змінюється. Хоча кластери розраховані на те, що їхня конфігурація може змінитися, такі зміни для них не є звичайною ситуацією. Grid-системи можуть розподіляти найрізноманітніші ресурси. Крім обчислювальних потужностей, до них належать мережні ресурси, ресурси зберігання даних, інформаційні ресурси (доступ до розподілених баз даних), програмні продукти і апаратні пристрої.
12_Bagatoprotsesorni_ta_rozpodileni_sistemi.pptx