Як влаштований кластер?
Історія розвитку кластерних систем нерозривно пов'язана з розвитком мережевих технологій. Справа в тому, що, чим більше елементів в кластері і чим вони швидше, (і, відповідно, чим вище швидкодія всього кластера), тим жорсткіші вимоги пред'являються до швидкості інтерконекту. Можна зібрати кластерну систему хоч з 10 тисяч вузлів, але якщо ви не забезпечите достатній швидкості обміну даними, то продуктивність комп'ютера і раніше залишить бажати кращого. А оскільки кластери в високопродуктивних обчисленнях - це практично завжди суперкомп'ютери [Програмування для кластерів - вельми трудомістке завдання, і якщо є можливість обійтися звичайним сервером SMP-архітектури з еквівалентної продуктивністю, то так і вважають за краще робити. Тому кластери використовуються тільки там, де SMP обходиться занадто дорого, а з усіх практичних точок зору вимагають такої кількості ресурсів машини - це вже суперкомп'ютери], то і інтерконект для них просто зобов'язаний бути дуже швидким, інакше повністю розкрити свої можливості кластер не зможе. В результаті практично всі відомі мережеві технології хоча б раз використовувалися для створення кластерів [Я навіть чув про спроби використання в якості інтерконекту стандартних портів USB], причому розробники часто не обмежувалися стандартом і винаходили «фірмові» кластерні рішення, як, наприклад, інтерконект, заснований на декількох лініях Ethernet, що включаються між парою комп'ютерів в паралель. На щастя, з повсюдним поширенням гігабітних мережевих карт, ситуація в цій області стає простіше [Майже половину списку суперкомп'ютерів Top 500 складають кластери, побудовані на основі Gigabit Ethernet], - вони досить дешеві, і в більшості випадків надаються ними швидкостей цілком достатньо.
Взагалі, по пропускній здатності інтерконект майже дійшов до розумної межі: так, поступово з'являються на ринку 10-гігабітні адаптери Ethernet впритул підібралися до швидкостей внутрішніх шин комп'ютера, і якщо створити якийсь гіпотетичний 100 Gigabit Ethernet, то чи не знайдеться жодного комп'ютера, здатного пропустити через себе такий величезний потік даних. Але на практиці десятігігабітная локальна мережа, незважаючи на всю свою перспективність, зустрічається рідко - технологія Ethernet допускає використання тільки топології «зірка», а в подібній системі центральний комутатор, до якого підключаються всі інші елементи, обов'язково буде вузьким місцем. Крім того, у Ethernet-мереж досить велика латентність [Час між відправленням запиту одним вузлом і отриманням цього запиту іншим вузлом], що теж ускладнює їх використання в «тісно пов'язаних» завданнях, де окремі обчислювальні вузли повинні активно обмінюватися інформацією. Тому незважаючи на майже граничну пропускну здатність Ethernet-рішень в кластерах широко використовуються мережі зі специфічною топологією - стара добра Myrinet, дорога елітна Quadrics, нова InfiniBand і ін. Всі ці технології «заточені» під розподілені додатки і забезпечують мінімальну латентність виконання команд і максимальну продуктивність . Замість традиційної «зірки» тут з обчислювальних елементів будуються плоскі і просторові решітки, багатовимірні гіперкуби, поверхні тривимірного тора і інші «топологічно хитрі» об'єкти. Такий підхід дозволяє одночасно передавати безліч даних по мережі, гарантуючи відсутність вузьких місць і збільшуючи сумарну пропускну здатність.
Як розвиток ідей швидкого інтерконекту відзначимо, наприклад, адаптери мережі InfiniBand, що підключаються через спеціальний слот HTX до процесорної шини HyperTransport. Фактично адаптер безпосередньо підключається до процесора [Нагадаємо, що в багатопроцесорних системах на базі AMD Opteron межпроцессорной взаємодія відбувається саме по цій шині]! Кращі зразки подібних рішень забезпечують таку високу продуктивність, що побудовані на їх основі кластери впритул наближаються за характеристиками до класичних SMP-систем, а то і перевершують їх. Так, в найближчі кілька місяців на ринку повинен з'явитися дуже цікавий чіп під назвою Chorus, який за чотирма шинам HyperTransport підключається до чотирьох або двом процесорам AMD Opteron, розташованим на одній з ним материнської плати, і за допомогою трьох лінків InfiniBand може підключатися ще до трьох інших «хорус», контролюючим інші четвірки (або пари) процесорів. Один Chorus - це одна материнська плата і один порівняно незалежний вузол з декількома процесорами, що підключається стандартними кабелями InfiniBand до решти вузлів. Зовні начебто виходить кластер, але - тільки зовні: оперативна пам'ять у всіх материнських плат загальна. Всього в поточному варіанті може об'єднуватися до восьми «Хорус» (і відповідно до 32 процесорів), причому всі процесори будуть працювати вже не як кластер, а як єдина SUMA-система, зберігаючи, однак, головне достоїнство кластерів - невисоку вартість і можливість нарощування потужності . Такий ось виходить «суперкластерінг», стирає кордони між кластерами і SMP.