к.т.н, доцент Ланських Є.В., Гучок В.В., Головенський М.В.,

Сторчак О.А., Ярина О.А.

Київський національний університет технологій та дизайну

Дослідження продуктивності кластерних систем

Вступ

Приблизно до середини 1990-х років основні напрямки розвитку комп'ютерних  технологій були пов’язані з побудовою спеціалізованих багатопроцесорних систем із масових мікросхем. Одним з підходів, що сформувався  – SMP (Symmetric Multi Processing), мав на меті об’єднання багатьох процесорів з використанням спільної пам’яті, що сильно полегшувало процес програмування. Зберегти швидкодію таких систем при збільшенні кількості вузлів до десятків, було практично неможливо. Даний підхід виявився  дуже дорогим в апаратній реалізації. Значно дешевшим і практично безкінечно масштабованим виявився спосіб  MPP (Massively Parallel Processing ), при якому незалежні спеціалізовані обчислювальні  модулі об’єднувались спеціалізованими каналами зв’язку, причому ці два способи застосовувались для створення спеціалізованих комп'ютерів, і не використовувалися в жодних інших цілях. Ідея створення так званого кластера робочої станції фактично є розвитком методу MPP, адже логічно, що MPP-система практично не відрізняється від звичайної  локальної мережі. Локальна мережа стандартних персональних комп’ютерів, при відповідному ПО, використовувалась як багатопроцесорний комп'ютер і започаткувала  розвиток кластерних систем.

Види та типи кластерних систем

Кластери – це модульна багатопроцесорна система, створена на базі стандартних обчислювальних вузлів,  сполучених високошвидкісним комунікаційним середовищем. Розрізняють наступні види кластерів :

-                     відмовостійкі  кластери;

-                     кластер з балансування навантаження;

-                     обчислювальні кластери;

-                     системи розподілених обчислень.

Під час розробки кластеру необхідно визначити масштабність системи, тобто залежність між збільшенням кількості вузлів в кластері та збільшенням швидкості розрахунків. В результаті, при зростанні числа вузлів буде спостерігатися збільшення продуктивності до певної межі, після якої, можливо, продуктивність почне падати. Це буде обумовлено латентністю ЛВС. Для цього необхідно  провести тестування.

Принципи тестування кластерних систем

Тестування кластерів необхідно проводити з багатьох об'єктивних причин. На мій погляд, основною причиною для тестування має бути природне бажання збільшити обчислювальну потужність системи.  Мірою продуктивності прийнято вважати MIPS (millions of operation per second) - мільйон операцій в секунду. При тестуванні систем для обчислювальних завдань основним критерієм продуктивності є MFLOPS і GFLOPS – мільйон і мільярд операцій з плаваючою крапкою в секунду відповідно. Для масивно-паралельних систем значущою величиною є латентність ЛВС, що виражається в середньому часі передачі по мережі повідомлення нульової довжини. Під тестом  (benchmark'ом) будемо розуміти алгоритм або метод, програму або програмний комплекс, що відповідає ряду вимог:

·                     Повнота. Тест повинен оцінювати тільки ті параметри, для оцінки яких створювався. Отримані результати повинні бути несуперечливими, лаконічними і легкими для розуміння.

·                     Легкість у використанні.

·                     Масштабованість. Тест повинен бути доступний для великої кількості апаратного забезпечення різної обчислювальної потужності.

·                     Переносимість. Тест повинен бути доступний для великої кількості різного за архітектурою апаратного забезпечення. Основною рисою переносимості є мова програмування, і, відповідно, наявність компілятора під дану платформу.

·                     Репрезентативність. Незалежно від платформи тест повинен завантажувати систему аналогічно використовуваними користувачами додатками. Подібні за структурою тести повинні корелювати між собою.

·                     Доступність. Тест повинен бути доступний, у тому числі і його вихідний код. Однак, якщо тест поширюється разом зі своїми вихідними кодами, то при поданні результатів повинна бути вказана версія і всі внесені зміни.

·                     Відтворюваність. При необхідності повинна бути можливість повторити тест з отриманням аналогічних результатів. Для цього при публікації результатів необхідно надавати вичерпну інформацію про програмне і апаратне забезпечення.

На сьогодні існує велика кількість програм, які підпадають під визначення benchmark'а. Для зручності викладу тести краще класифікувати на декілька категорій:

·                     «Іграшкові» (toy benchmarks) - маленькі, завдовжки в декілька сотень рядків вихідного коду. Як правило, вирішують одну дуже відому задачу. «Решето Ератосфена», пірамідальне сортування, перемішування і багато інших.

·                     Мікротест (microbenchmarks) - спеціалізовані, спрямовані на визначення однієї з основних кількісних характеристик апаратного забезпечення:

o                     продуктивність центрального процесора;

o                     продуктивність і пропускну здатність локальної оперативної пам'яті;

o                     швидкість базових операції введення / виводу;

o                     продуктивність і пропускна здатність ЛВС;

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

·                     Ядра (kernels) - це фрагменти коду, взяті з реальних програм. При виконанні програми проводять більшу частину часу саме в цих фрагментах. Ядра дозволяють визначити швидкість виконання реальної програми на різних платформах.

·                     Синтетичні тести (synthetic benchmarks) оцінюють продуктивність на основі набору великої кількості показників і не прив'язані до якогось одного.

·                     Додатки (application benchmarks) - найбільш часто використовувані програми для реалізації тих чи інших завдань. Сюди ж можна віднести і псевдододатки. Псевдододатки – це  програми, створені на основі реальних додатків, але адаптовані по різних причинах спеціально для задач тестування.

·                     Пакети тестів (benchmarks suites) - колекції різних типів тестів з перевагою додатків.

Висновки.

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

Список джерел:

1.                 http://www.ixbt.com/cpu/cluster-benchtheory.shtml

2.                 http://ru.wikipedia.org/wiki/Кластер_(группа компьютеров)