Firma de mecatronica. Calcul paralel: clustere

Dezvoltarea sistemelor de clustere (CS) în Rusia

Un cluster este un sistem multiprocesor modular creat pe baza nodurilor de calcul standard conectate printr-un mediu de comunicare de mare viteză. Acum, cuvintele „cluster” și „supercomputer” sunt în mare măsură sinonime, dar înainte de a putea fi spus acest lucru cu încredere, hardware-ul a trecut printr-un ciclu evolutiv lung. În primii 30 de ani de la apariția computerelor, până la mijlocul anilor 1980, tehnologia „supercomputerului” a însemnat exclusiv producția de procesoare specializate, foarte puternice. Cu toate acestea, apariția microprocesorului cu un singur cip a șters practic diferența dintre procesoarele „produse în masă” și „deosebit de puternice”, iar din acel moment, singura modalitate de a crea un supercomputer a fost combinarea procesoarelor pentru a rezolva o singură problemă în paralel. . Alexey Latsis, unul dintre creatorii supercomputerului rus MVS-1000M, numește aceasta „prima revoluție a supercomputerelor” în cartea sa „Cum să construiți și să utilizați un supercomputer”.

Până pe la mijlocul anilor 1990. Direcția principală de dezvoltare a tehnologiilor de supercomputer a fost asociată cu construcția de sisteme multiprocesoare specializate din microcircuite produse în masă. Una dintre abordările emergente, SMP (Symmetric Multi Processing), a implicat combinarea multor procesoare folosind memorie partajată, ceea ce a facilitat foarte mult programarea, dar a impus cerințe mari asupra memoriei în sine. A fost aproape imposibil să se mențină performanța unor astfel de sisteme atunci când crește numărul de noduri la zeci. În plus, această abordare s-a dovedit a fi cea mai costisitoare în implementarea hardware. Metoda MPP (Massively Parallel Processing) s-a dovedit a fi cu un ordin de mărime mai ieftină și aproape infinit scalabilă, în care modulele de calcul specializate independente erau unite prin canale de comunicare specializate, ambele fiind create pentru un anumit supercomputer și nu au fost utilizate pentru niciunul. alte scopuri.

Ideea creării unui așa-numit cluster de stații de lucru a fost de fapt o dezvoltare a metodei MPP, deoarece, în mod logic, sistemul MPP nu era foarte diferit de o rețea locală obișnuită. O rețea locală de computere personale standard, cu software-ul corespunzător, a fost folosită ca supercomputer multiprocesor și a devenit precursorul clusterului modern. Această idee a fost realizată mai pe deplin la mijlocul anilor 1990, odată cu disponibilitatea pe scară largă a magistralelor PCI de mare viteză și apariția rețelelor ieftine, dar rapide. Clusterele Fast Ethernet au început să ajungă din urmă cu sistemele MPP specializate în ceea ce privește capabilitățile de comunicare. Acest lucru însemna că un sistem MPP cu drepturi depline ar putea fi creat din computere seriale standard folosind tehnologii de comunicații seriale, iar un astfel de sistem era în medie cu două ordine de mărime mai ieftin.

Iată cele mai cunoscute supercalculatoare cu arhitectură de cluster de „prima generație”: Beowulf (1994, NASA Goddard Space Flight Center) - cluster cu 16 procesoare pe procesoare Intel 486DX4/100 MHz; Avalon (1998, Los Alamos National Laboratory) - cluster Linux bazat pe procesoare Alpha 21164A/533 MHz. Avalon a constat inițial din 68 de procesoare, apoi numărul acestora a crescut la 140; performanțele sale la testul LINPACK 48.6 GFlops* i-au permis să ocupe locul 113 în cea de-a XII-a ediție a clasamentului Top500 al celor mai puternice computere din lume, alături de sistemul SMP cu 152 de procesoare IBM RS/6000 SP. Primul sistem domestic inclus în TorbOO a fost clusterul MVS-1000M, fabricat de Institutul de Cercetare KVANT și Institutul de Matematică Aplicată al Academiei Ruse de Științe. Acesta a constat din 384 de noduri bazate pe procesoare DEC-Compaq Alpha 21164.

* Flops (operații cu virgulă mobilă pe secundă) - numărul de operațiuni cu virgulă mobilă pe secundă, o unitate de măsură pentru performanța supercomputerului. GFlops (gigaflops) - miliarde de operațiuni în virgulă mobilă pe secundă; TFlops (teraflops) - trilioane de operații în virgulă mobilă pe secundă. Performanța reală a celui mai puternic supercomputer de astăzi depășește 136 TFlops; cu doar un an în urmă, această cifră era de 35 TFlops.

Există o distincție între performanța de vârf și cea reală a supercalculatoarelor. Performanța de vârf a unui sistem multiprocesor (cluster, sistem SMP etc.) este o valoare teoretică care nu este atinsă în practică. Se obține prin înmulțirea performanței de vârf a procesorului cu numărul de procesoare din sistem. Performanța maximă a unui procesor este, în general, obținută prin înmulțirea vitezei de ceas cu numărul maxim de operații efectuate pe ciclu de ceas. Performanța reală a unui cluster este performanța obținută la rezolvarea unei probleme reale (academice sau industriale). De exemplu, sistemele din clasamentul Top500 sunt clasate pe baza rezultatelor testului LINPACK - o problemă academică reală pentru rezolvarea unui sistem de ecuații liniare.

Un nou impuls puternic pentru dezvoltarea tehnologiilor cluster, pe lângă apariția unor rețele de comunicații mai avansate, a dat o creștere rapidă a performanței procesoarelor de masă nou lansate, ceea ce a făcut ca soluțiile de înaltă performanță mai accesibile ca niciodată. De exemplu, SKIF K-500, al doilea cluster intern inclus în TorbOO, este construit pe baza a 128 de procesoare Intel Xeon și a rețelei de sistem SCI. Construit în toamna anului 2003 pentru programul de supercomputer de stat ruso-belarus „SKIF”, acest cluster a ocupat locul 407 în clasament cu o performanță reală de 423,6 GFlops. Al doilea cluster „de top” al programului de stat, „SKIF K-1000” bazat pe 576 de procesoare AMD Opteron și o rețea de sistem InfiniBand, a apărut în octombrie 2004 și a intrat în top 100 Top500 cu o performanță reală de 2.032 TFlops. Ambele clustere SKIF instalate în Belarus au fost construite de compania T-Platforms cu participarea IPS RAS și a partenerilor din Belarus și folosesc tehnologii de supercomputer rusești. Cel mai puternic cluster din Rusia în acest moment este MVS 15000BM cu performanțe reale de peste 5,3 Tflops, ocupă locul 56 în Top500 și este instalat la Centrul Interdepartamental de Supercomputer (MSC RAS). Clusterul este construit din noduri de calcul IBM bazate pe procesoare PowerPC și rețeaua de sistem Myrinet.

Dezvoltarea rapidă a tehnologiilor cluster în ultimii ani este clar vizibilă din analiza listei Top500: din 2000 până în 2004, ponderea clusterelor în listă a crescut de la 2,2 la 60,8%. Dacă în 2000 existau doar două grupuri printre cele 40 de instalații cele mai puternice (cea mai puternică - locul 31), atunci până în 2004 numărul lor printre primele 40 de mașini era de 24). În același timp, conform celei mai recente ediții Top500, mai mult de 71,5% dintre procesoarele folosite pentru a construi supercomputere sunt procesoare produse în serie de Intel și AMD.

Tehnologiile cluster sunt, de asemenea, folosite în cele mai recente dezvoltări de supercomputer de la producători de top: de exemplu, cel mai puternic supercomputer de astăzi, IBM BlueGene/L, cu o performanță de peste 136 TFlops, utilizează multe elemente ale arhitecturii cluster.

Domeniul de aplicare al sistemelor de cluster nu este acum mai restrâns decât cel al supercalculatoarelor cu o arhitectură diferită: ele fac față nu mai puțin cu succes sarcinii de a modela o mare varietate de procese și fenomene. Modelarea supercomputerelor poate reduce considerabil costurile și poate accelera introducerea de noi produse pe piață, precum și îmbunătățirea calității acestora. De exemplu, în loc să construiți modele de testare scumpe de mașini noi și apoi să le spargeți de un perete pentru calcule de inginerie, totul poate fi calculat mai rapid și mai precis folosind modele computerizate. Datorită acestui fapt, multe preocupări auto occidentale au reușit să reducă timpul de dezvoltare a unui nou model de mașină de cinci ori - de la 10 la 2 ani. Procesarea computerizată a datelor geofizice face posibilă crearea unor modele foarte detaliate ale zăcămintelor de petrol și gaze, asigurând o dezvoltare mai eficientă, mai sigură și mai ieftină a sondei.

Dezvoltarea tehnologiilor cluster a făcut ca calcularea de înaltă performanță să fie disponibilă pe scară largă și a permis unei varietăți de întreprinderi să profite de beneficiile sale. Iată cum sunt distribuite domeniile de aplicare ale celor mai puternice 500 de calculatoare din lume: 44,3% - minerit, electronică, auto, aviație și alte industrii ale industriei grele și ingineriei mecanice, puțin peste 20% - știință și educație, centre de supercalculatoare . Mai mult de 18% provin din cercetările meteorologice și climatice, 7% din programele guvernamentale nucleare, spațiale, energetice și militare și 3,5% din companii financiare și bănci. În plus, lista include companii și organizații implicate în medicină și dezvoltarea medicamentelor, grafică computerizată, transport, comerț, producție alimentară, consultanță și administrație guvernamentală.

În ceea ce privește utilizarea supercalculatoarelor în Rusia, evaluarea actuală a supercomputerelor CIS Top50, publicată pentru prima dată în decembrie 2004, reprezintă doar trei clase de utilizatori: institute științifice și universități, întreprinderi implicate în industria grea și petrolieră și instituții financiare.

În medie, supercalculatoarele autohtone sunt încă mult în urma celor occidentale în performanță: mașinile folosite pentru cercetarea științifică sunt de 15 ori mai mici, resursele de calcul ale companiilor financiare sunt de 10 ori mai mici, iar supercalculatoarele industriale sunt de 9 ori mai mici. Totuși, cea de-a doua ediție a listei Top50, publicată în aprilie 2005, demonstrează dezvoltarea rapidă a industriei. Astfel, numărul sistemelor care funcționează în sectorul industrial a crescut de la 2 la 16%, iar productivitatea medie a acestora a crescut imediat cu 135%. Numărul de supercalculatoare ale companiilor financiare și băncilor a crescut și el de la 2 la 18%. Ponderea supercalculatoarelor utilizate pentru cercetarea științifică a scăzut de la 96 la 66%, iar performanța medie a acestora a crescut cu 70%. În general, a doua ediție a evaluării supercomputerelor autohtone demonstrează o creștere semnificativă a ponderii sistemelor de uz comercial. Cel mai mare număr de supercomputere autohtone a fost furnizat de IBM (26%), dar producătorii ruși sunt doar puțin inferiori.

Familiile Blue Gene /L și SGI Altix.

Windows Compute Cluster Server (CCS) 2003 este considerat software-ul de bază pentru organizarea calculului pe sistemele de cluster Sunt prezentate caracteristicile sale generale și compoziția serviciilor care rulează pe nodurile cluster.

La sfârșitul acestei secțiuni sunt date regulile de lucru cu consola pentru lansarea și gestionarea joburilor CCS. Descrie detaliile modului în care funcționează programatorul CCS atunci când se execută secvențe de joburi pe un cluster.

1.1. Arhitectura procesoarelor și sistemelor cluster de înaltă performanță

În istoria dezvoltării arhitecturii procesoarelor computerelor, se pot distinge două etape majore:

  • Etapa 1 - creșterea frecvenței de ceas a procesoarelor (până la 2000),
  • Etapa 2 - apariția procesoarelor multi-core (după 2000)

Astfel, abordarea bazată pe SMP (Symmetrical MultiProcessing), care s-a dezvoltat la construirea de servere de înaltă performanță în care mai multe procesoare împart resursele de sistem și, în primul rând, RAM (vezi Figura 1.1), s-a deplasat „în jos” la nivelul de nuclee din interiorul procesorului.


Orez. 1.1.

Pe drumul către procesoare multi-core, prima tehnologie care a apărut a fost Hyper-Threading, folosită pentru prima dată în 2002 în procesoarele Intel Pentium 4:


Orez. 1.2.

În această tehnologie, două procesoare virtuale împart toate resursele unui procesor fizic, și anume cache-urile, pipeline de execuție și unități de execuție separate. Mai mult, dacă un procesor virtual a ocupat o resursă partajată, atunci al doilea va aștepta să fie lansat. Astfel, un procesor cu Hyper-Threading poate fi comparat cu un sistem de operare multitasking care oferă fiecărui proces care rulează în el propriul computer virtual cu un set complet de instrumente și planifică ordinea și timpul de funcționare a acestor procese pe hardware fizic. Doar în cazul Hyper-Threading toate acestea se întâmplă la un nivel hardware mult mai scăzut. Cu toate acestea, două fluxuri de instrucțiuni permit unităților de execuție ale procesorului să fie încărcate mai eficient. Creșterea reală a performanței procesorului din utilizarea tehnologiei Hyper-Threading este estimată de la 10 la 20 la sută.

Un procesor dual-core cu drepturi depline (vezi Fig. 1.3) demonstrează o creștere a performanței de la 80 la 100 la sută la anumite sarcini.


Orez. 1.3.

Astfel, un procesor dual-core și, în general, multi-core poate fi considerat un sistem SMP în miniatură, în care nu este nevoie să folosiți plăci de bază multiprocesoare complexe și costisitoare.

Mai mult, fiecare nucleu poate (ca, de exemplu, în procesorul Intel Pentium Extreme Edition 840) să suporte tehnologia Hyper-Threading și, prin urmare, acest tip de procesor dual-core poate executa patru fire de execuție simultan.

La începutul anului 2007, Intel a introdus un procesor cu un singur cip cu 80 de nuclee numit Teraflops Research Chip (http://www.intel.com/research/platform/terascale/teraflops.htm). Acest procesor poate atinge 1,01 teraflopi de performanță cu o viteză minimă de ceas de bază de 3,16 GHz și o tensiune de 0,95 V. Cu toate acestea, totalul consumul de energie chipul are doar 62 de wați.

Conform prognozelor Intel, în următorii 5 ani vor apărea versiuni comerciale de procesoare cu un număr mare de nuclee, iar până în 2010, un sfert din toate serverele livrate vor avea teraflops. performanţă.

Sisteme de calcul în cluster și arhitectura lor

Cluster este un sistem de calcul local (situat geografic într-un singur loc), format din multe calculatoare independente și o rețea care le conectează. În plus, clusterul este un sistem local, deoarece este gestionat într-un domeniu administrativ separat ca un singur sistem informatic.

Noduri de calculator din care este compus sunt computere standard, de uz general (personale), utilizate într-o varietate de domenii și pentru o varietate de aplicații. Un nod de calcul poate conține fie un microprocesor, fie mai multe, formând, în acest din urmă caz, o configurație simetrică (SMP).

Componenta de rețea a unui cluster poate fi fie o rețea locală obișnuită, fie poate fi construită pe baza unor tehnologii speciale de rețea care asigură transferul de date ultra-rapid între nodurile clusterului. Rețeaua cluster este concepută pentru a integra nodurile cluster și este de obicei separată de rețeaua externă prin care utilizatorii accesează clusterul.

Software-ul pentru cluster este format din două componente:

  • instrumente de dezvoltare/programare și
  • instrumente de management al resurselor.

Instrumentele de dezvoltare includ compilatoare pentru limbi, biblioteci pentru diverse scopuri, instrumente de măsurare a performanței și depanare, care, toate împreună, vă permit să construiți aplicații paralele.

Software-ul de gestionare a resurselor include instrumente de instalare, administrare și planificare a fluxului de lucru.

Deși există multe modele de programare pentru procesarea paralelă, abordarea dominantă în prezent este modelul de transmitere a mesajelor, implementat sub forma standardului MPI (Message Passing Interface). MPI este o bibliotecă de funcții care poate fi folosită în programele scrise în C sau Fortran pentru a transmite mesaje între procese paralele și, de asemenea, pentru a controla aceste procese.

Alternative la această abordare sunt limbile bazate pe așa-numitul „spațiu de adrese global partiționat” (GPAS), reprezentanți tipici ai cărora sunt limbajele HPF (High Performance Fortran) și UPC (Unified Parallel C).

Sistemele de calcul cluster au devenit o continuare a dezvoltării ideilor încorporate în arhitectura sistemelor MPA. Dacă într-un sistem MPA un modul de procesor acționează ca un nod de calcul complet, atunci în sistemele cluster sunt utilizate computere disponibile în comerț ca astfel de noduri de calcul. Dezvoltarea tehnologiilor de comunicație, și anume apariția echipamentelor de rețea de mare viteză și a bibliotecilor speciale de software, de exemplu, MPI (Message Passing Interface), care implementează mecanismul de transmitere a mesajelor folosind protocoale de rețea standard, a făcut ca tehnologiile clusterului să fie disponibile în general. În prezent, multe sisteme mici de cluster sunt create prin combinarea puterii de calcul a computerelor de laborator sau de clasă.

O caracteristică atractivă a tehnologiilor cluster este că, pentru a obține performanța necesară, ele fac posibilă construirea de sisteme eterogene, adică combinarea calculatoarelor de diferite tipuri în sisteme de calcul unice, de la calculatoare personale până la supercalculatoare puternice. Tehnologiile cluster s-au răspândit ca mijloc de a crea sisteme de clasa supercomputer din componente produse în masă, ceea ce reduce semnificativ costul unui sistem de calcul. În special, unul dintre primele proiecte care au fost implementate în 1998 a fost The COst effective COComputing Array (COCOA), în care, bazat pe 25 de computere personale cu procesor dublu, cu un cost total de aproximativ 100.000 USD, un sistem cu performanță echivalentă cu un 48 -procesorul Cray T3D care costă câteva milioane de dolari a fost creat.

Lyle Long, profesor de inginerie aerospațială la Universitatea Penn State, consideră că sistemele de calcul cluster relativ ieftine ar putea servi drept o alternativă la supercalculatoarele scumpe din organizațiile științifice. Sub conducerea sa, clusterul COCOA a fost construit la universitate. În cadrul acestui proiect, 25 de

stații de bază de la DELL, fiecare dintre ele include două procesoare Pentium II/400 MHz, 512 MB de RAM, un hard disk SCSI de 4 GB și un adaptor de rețea Fast Ethernet. Pentru a conecta nodurile, se folosește un comutator Baynetworks 450T cu 24 de porturi cu un modul de expansiune. Software-ul instalat include sistemul de operare RedHat Linux, compilatoarele Fortran 90 și HPF de la Portland Group, o implementare distribuită gratuit a MPI - Message Passing Interface Chameleon (MPICH) și un sistem de așteptare DQS.

Într-o lucrare prezentată la cea de-a 38-a întâlnire și expoziție de știință aerospațială, Long descrie o versiune paralelă a unui program computațional de echilibrare a sarcinii utilizat pentru a prezice nivelurile de zgomot ale elicopterelor în diferite locații. Pentru comparație, acest program de calcul a fost rulat pe trei computere diferite cu 48 de procesoare pentru a calcula zgomotul la 512 puncte. Pe sistemul Cray T3E calculul a durat 177 de secunde, pe sistemul SGI Origin2000 - 95 de secunde, iar pe clusterul COCOA - 127 de secunde. Astfel, clusterele sunt o platformă de calcul foarte eficientă pentru sarcinile acestei clase.

Un alt avantaj al sistemelor cluster față de supercomputere este că proprietarii lor nu trebuie să împartă timpul procesorului cu alți utilizatori, ca în centrele mari de supercomputere. În special, COCOA oferă peste 400 de mii de ore de timp de procesor pe an, în timp ce în centrele de supercalculare poate fi dificil să obții 50 de mii de ore.

Desigur, nu este nevoie să vorbim despre echivalența completă a acestor sisteme. După cum se știe, performanța sistemelor cu memorie distribuită depinde foarte mult de performanța mediului de comutare, care poate fi caracterizată prin doi parametri: latența - timpul de întârziere la trimiterea unui mesaj și debitul - viteza de transfer al informațiilor. De exemplu, pentru un computer Cray T3D acești parametri sunt 1 μs și, respectiv, 480 Mb/s, iar pentru un cluster în care o rețea Fast Ethernet este utilizată ca mediu de comutare, 100 μs și 10 Mb/s. Acest lucru explică parțial costul foarte ridicat al supercalculatoarelor. Având în vedere parametri precum cei ai clusterului, nu există multe sarcini care pot fi rezolvate eficient pe un număr suficient de mare de procesoare.

Pe baza celor de mai sus, vom da o definiție: un cluster este un set conectat de computere cu drepturi depline utilizate ca o singură resursă de calcul. Atât computere identice (clustere omogene) cât și diferite (clustere eterogene) pot fi utilizate ca noduri de cluster. Prin arhitectura sa, un sistem de calcul cluster este slab cuplat. Pentru a crea clustere, sunt utilizate de obicei fie computere personale simple cu un singur procesor, fie servere SMP cu două sau patru procesoare. În acest caz, nu sunt impuse restricții asupra compoziției și arhitecturii nodurilor. Fiecare nod poate rula propriul sistem de operare. Cele mai frecvent utilizate sisteme de operare standard sunt Linux, FreeBSD, Solaris, Tru64 Unix și Windows NT.

Literatura de specialitate notează patru avantaje obținute prin gruparea unui sistem de calcul:

scalabilitate absolută;

scalabil;

factor de disponibilitate ridicat;

raportul pret/performanta.

Să explicăm fiecare dintre caracteristicile de mai sus ale unui sistem de calcul cluster.

Proprietate scalabilitate absolutăînseamnă că este posibil să se creeze clustere mari care depășesc puterea de calcul chiar și a celor mai puternice computere individuale. Un cluster poate conține zeci de noduri, fiecare dintre ele fiind un multiprocesor.

Proprietate de scalabilitate sporită înseamnă că clusterul poate fi extins prin adăugarea de noi noduri în porțiuni mici. Astfel, utilizatorul poate începe cu un sistem mic, extinzându-l după nevoie.

Deoarece fiecare nod de cluster este o mașină sau sistem de calcul independent, defecțiunea unuia dintre noduri nu duce la pierderea funcționalității clusterului. În multe sisteme, toleranța la erori este suportată automat de software.

Și, în sfârșit, sistemele cluster oferă ceea ce supercalculatoarele nu pot realiza raport pret/calitate. Clusterele de orice performanță pot fi create folosind „blocuri de construcție” standard, iar costul clusterului va fi mai mic decât unul.

mașină de calcul de noapte cu putere de procesare echivalentă.

Astfel, la nivel hardware, un cluster este o colecție de sisteme de calcul independente conectate printr-o rețea. Soluțiile pot fi simple, bazate pe hardware Ethernet, sau complexe, cu rețele de mare viteză, cu un debit de sute de megaocteți pe secundă.

O parte integrantă a clusterului este software-ul specializat, care are sarcina de a menține calculele atunci când unul sau mai multe noduri eșuează. Un astfel de software redistribuie sarcina de calcul atunci când unul sau mai multe noduri de cluster eșuează, precum și restabilește calculele atunci când un nod eșuează. În plus, atunci când un cluster are discuri partajate, software-ul cluster menține un singur sistem de fișiere.

Clasificarea arhitecturilor sistemelor de cluster

Literatura descrie diferite moduri de clasificare a sistemelor cluster. Cea mai simplă clasificare se bazează pe modul în care sunt utilizate matricele de discuri: împreună sau separat.

În fig. 5.5.1 și 5.5.2 prezintă structurile clusterelor de două noduri, a căror coordonare este asigurată de o linie de mare viteză utilizată pentru mesagerie. Aceasta poate fi o rețea locală, utilizată și de computere care nu sunt incluse în cluster, sau o linie închiriată. În cazul unei linii închiriate, unul sau mai multe noduri de cluster vor avea acces la o rețea locală sau globală, asigurând astfel comunicarea între clusterul de server și sistemele client la distanță.

Diferența dintre clusterele prezentate este că, în cazul unei rețele locale, nodurile folosesc matrice de discuri locale, iar în cazul unei linii dedicate, nodurile împart o matrice redundantă de hard disk-uri independente sau așa-numitul RAID (Redundant matrice de discuri independente). RAID constă din mai multe discuri gestionate de un controler, interconectate prin canale de mare viteză și percepute de sistemul extern ca un întreg. În funcție de tipul de matrice utilizată, pot fi furnizate diferite grade de toleranță la erori și performanță.

CPU

CPU

De mare viteză

CPU

CPU

autostrada

Dispozitiv

Dispozitiv

Dispozitiv

Dispozitiv

I/O

I/O

I/O

I/O

Disc

Disc

Orez. 5.5.1. Configurare cluster fără discuri partajate

Disc

Dispozitiv

Dispozitiv

CPU

CPU

I/O

I/O

CPU

CPU

Dispozitiv

Dispozitiv

Dispozitiv

Dispozitiv

I/O

I/O

I/O

I/O

Disc

De mare viteză

Disc

autostrada

Orez. 5.5.2. Configurare cluster cu discuri partajate

Să ne uităm la cele mai comune tipuri de matrice de discuri:

RAID0 (striping) este o matrice de discuri de două sau mai multe hard disk-uri fără redundanță. Informațiile sunt împărțite în blocuri de date și sunt scrise pe ambele (mai multe) discuri simultan. Avantajul este o creștere semnificativă a productivității. Dezavantajul este că fiabilitatea RAID0 este evident mai mică decât fiabilitatea oricărui disc individual și scade odată cu creșterea numărului de discuri incluse în RAID0, deoarece eșecul oricăruia dintre discuri duce la inoperabilitatea întregii matrice. .

RAID1 (oglindire) este o matrice formată din cel puțin două discuri. Avantajele sunt o viteză de scriere acceptabilă și o creștere a vitezei de citire la paralelizarea interogărilor, precum și o fiabilitate ridicată: funcționează atâta timp cât funcționează cel puțin un disc din matrice. Probabilitatea de defectare a două discuri simultan este egală cu produsul probabilităților de defecțiune a fiecărui disc. În practică, dacă unul dintre discuri eșuează, trebuie luate măsuri urgente: redundanța ar trebui restabilită. Pentru a face acest lucru, este recomandat să utilizați discuri de rezervă cu orice nivel RAID (cu excepția zero). Avantajul acestei abordări este menținerea disponibilității constante. Dezavantajul este că trebuie să plătiți costul a două hard disk-uri pentru a obține capacitatea utilizabilă a unui hard disk.

RAID10 este o matrice oglindită în care datele sunt scrise secvenţial pe mai multe discuri, ca în RAID0. Această arhitectură este o matrice RAID0 ale cărei segmente sunt matrice RAID1 în loc de discuri individuale. În consecință, o matrice de acest nivel trebuie să conțină cel puțin patru discuri. RAID10 combină toleranța ridicată la erori și performanța.

O imagine mai completă a sistemelor de calcul cluster este dată de clasificarea clusterelor în funcție de metodele de clustering utilizate, care determină principalele caracteristici funcționale ale sistemului:

clustering cu redundanță pasivă;

clustering cu redundanță activă;

servere autonome;

servere cu conexiuni la toate discurile;

servere cu discuri partajate.

Gruparea cu redundanță este cea mai veche și universală metodă. Unul dintre servere preia întreaga sarcină de calcul, în timp ce celălalt rămâne inactiv, dar este gata să preia calculele dacă serverul principal eșuează. Serverul activ (sau principal) trimite periodic un mesaj de ceas către serverul de rezervă (secundar). Dacă nu există mesaje de ritm cardiac, ceea ce este considerat o defecțiune a serverului primar, serverul secundar preia controlul. Această abordare îmbunătățește disponibilitatea, dar nu îmbunătățește performanța. Mai mult, dacă singurul tip de comunicare între noduri este mesageria și dacă ambele servere din cluster nu partajează discuri, atunci serverul de rezervă nu are acces la bazele de date gestionate de serverul primar.

Redundanța pasivă nu este tipică pentru clustere. Termenul „cluster” se referă la un set de noduri interconectate care participă activ la procesul de calcul și împreună creează iluzia unei mașini de calcul puternice. Această configurație este de obicei denumită un sistem cu un server secundar activ și există trei metode de grupare: servere autonome, servere fără partajare de disc și servere cu partajare de disc.

În prima metodă, fiecare nod de cluster este tratat ca un server independent cu propriile sale discuri și niciunul dintre discurile din sistem nu este partajat. Schema oferă performanțe ridicate și disponibilitate ridicată, dar necesită software special pentru a programa distribuirea cererilor clienților pe servere astfel încât să se realizeze o utilizare echilibrată și eficientă a tuturor serverelor. Este necesar ca, dacă unul dintre noduri eșuează în timpul execuției unei aplicații, un alt nod din cluster poate intercepta și termina această aplicație. Pentru a face acest lucru, datele din sistem trebuie să facă o copie de rezervă constantă, astfel încât fiecare server să aibă acces la toate cele mai recente date din sistem. Din cauza acestor costuri, disponibilitatea ridicată se realizează doar în detrimentul performanței.

Pentru a reduce supraîncărcarea de comunicare, majoritatea clusterelor constau acum din servere conectate la discuri partajate, de obicei reprezentate de o matrice de discuri RAID (vezi Figura 5.5.2).

O variantă a acestei abordări presupune că partajarea discului nu este utilizată. Discurile partajate sunt împărțite în partiții, iar fiecărui nod de cluster îi este alocată propria partiție. Dacă un nod eșuează, clusterul poate fi reconfigurat astfel încât drepturile de acces la partiția de disc partajată să fie transferate către un alt nod.

Într-o altă opțiune, mai multe servere partajează accesul la discurile partajate de-a lungul timpului, astfel încât orice nod să aibă acces la toate partițiile tuturor discurilor partajate. Această abordare necesită un fel de mecanism de blocare pentru a se asigura că doar unul dintre servere are acces la date la un moment dat.

Clusterele oferă o disponibilitate ridicată - nu au un singur sistem de operare și memorie partajată, adică nu există nicio problemă de coerență a cache-ului. În plus, software-ul special din fiecare nod monitorizează constant performanța tuturor celorlalte noduri. Acest control se bazează pe trimiterea periodică de către fiecare nod a semnalului „Sunt încă treaz”. Dacă un semnal nu este primit de la un anumit nod, atunci un astfel de nod este considerat a fi neîntrerupt; nu i se oferă capacitatea de a efectua I/O, discurile și alte resurse (inclusiv adresele de rețea) sunt reatribuite altor noduri, iar programele care rulează pe el sunt repornite pe alte noduri.

Sunt adăugate scale de performanță ale clusterelor, precum și noduri. Un cluster poate rula mai multe aplicații individuale, dar scalarea unei singure aplicații necesită ca părțile sale să comunice prin schimbul de mesaje. Cu toate acestea, nu se poate ignora faptul că interacțiunile dintre nodurile cluster durează mult mai mult decât în ​​sistemele de calcul tradiționale. Capacitatea de a crește numărul de noduri aproape nelimitat și lipsa unui singur sistem de operare fac arhitecturile cluster extrem de scalabile. Au fost utilizate cu succes sisteme cu sute și mii de noduri.

La dezvoltarea clusterelor, se pot distinge două abordări. Prima abordare este de a crea sisteme de clustere mici. Un cluster combină computere complet funcționale care continuă să funcționeze ca unități independente, de exemplu, calculatoare de clasă sau stații de lucru de laborator. A doua abordare este de a crea în mod intenționat resurse de calcul puternice. Unitățile de sistem ale computerelor sunt amplasate compact -

situate în rafturi speciale și unul sau mai multe computere complet funcționale, numite computere gazdă, sunt alocate pentru a gestiona sistemul și a rula sarcini. În acest caz, nu este nevoie să echipați computerele nodurilor de calcul cu plăci grafice, monitoare, unități de disc și alte echipamente periferice, ceea ce reduce semnificativ costul sistemului.

Multe tehnologii au fost dezvoltate pentru combinarea calculatoarelor într-un cluster. Cea mai utilizată tehnologie în acest moment este Ethernet, datorită ușurinței în utilizare și costului redus al echipamentelor de comunicație. Cu toate acestea, trebuie să plătiți pentru asta cu viteze de schimb evident insuficiente.

Dezvoltatorii pachetului de subrutine ScaLAPACK, conceput pentru rezolvarea problemelor de algebră liniară pe sisteme multiprocesor în care ponderea operațiunilor de comunicare este mare, formulează cerința unui sistem multiprocesor astfel: „Viteza schimburilor interprocesor între două noduri, măsurată în MB. /s, trebuie să fie de cel puțin 1/10 performanță maximă a nodului de calcul, măsurată în MFLOPS."

Topologii de cluster

Să luăm în considerare topologiile caracteristice așa-numitelor clustere „mici”, constând din două până la patru noduri.

Topologia perechilor de clustere utilizat la organizarea clusterelor cu două sau patru noduri (Fig. 5.5.3). Nodurile sunt grupate în perechi, matricele de discuri sunt atașate la ambele noduri care fac parte din pereche și fiecare nod al perechii are acces la toate matricele de discuri ale acestei perechi. Unul dintre nodurile din pereche este folosit ca rezervă pentru celălalt.

O pereche de cluster cu patru noduri este o extensie simplă a unei topologii cu două noduri. Din punct de vedere al administrării și configurării, ambele perechi de clustere sunt considerate ca un întreg.

Această topologie poate fi folosită pentru a organiza clustere cu disponibilitate ridicată a datelor, dar toleranța la erori este implementată doar în cadrul unei perechi, deoarece dispozitivele de stocare a informațiilor aparținând unei perechi nu au o conexiune fizică cu o altă pereche.

Comutator

cluster

cluster

cluster

cluster

Disc

Disc

Disc

Disc

Orez. 5.5.3. Topologia perechilor de clustere

Topology + 1 vă permite să creați clustere de două, trei și patru noduri (Fig.5.5.4). Fiecare matrice de discuri este conectată doar la două noduri de cluster. Matricele de discuri sunt organizate conform schemei RAID1 (oglindire). Un server are o conexiune la toate matricele de discuri și servește ca rezervă pentru toate celelalte noduri (primare sau active). Serverul de așteptare poate fi utilizat pentru a oferi disponibilitate ridicată atunci când este asociat cu oricare dintre nodurile active.

Topologia este recomandată pentru organizarea clusterelor cu disponibilitate ridicată a datelor. În configurațiile în care este posibil să se dedice un nod redundanței, această topologie poate reduce sarcina pe nodurile active și poate asigura că încărcarea unui nod eșuat poate fi replicată pe nodul de așteptare fără pierderi de performanță. Toleranța la erori este furnizată între oricare dintre nodurile primare și nodul de rezervă. În același timp, topologia nu permite toleranța globală la erori, deoarece nodurile principale ale clusterului și sistemele lor de stocare a informațiilor nu sunt conectate între ele.

Topologia × este similară cu topologia + 1, permițându-vă să creați clustere de două, trei și patru noduri, dar spre deosebire de aceasta, are o flexibilitate și o scalabilitate mai mari (Fig. 5.5.5).

Comutator

cluster

cluster

cluster

cluster

Comutator

cluster

cluster

cluster

cluster

Comutator

Disc

Disc

Disc

Orez. 5.5.5. Topologie ×

Numai în această topologie toate nodurile cluster au acces la toate matricele de discuri, care, la rândul lor, sunt construite conform schemei RAID1 (oglindire). Scalabilitatea topologiei se manifestă prin ușurința de a adăuga noduri și matrice de discuri suplimentare la cluster fără a schimba conexiunile în sistem.

cluster

cluster

cluster

cluster

Disc

Disc

Disc

Disc

Orez. 5.5.6. Topologie de acces complet separată

Topologie de acces complet separată permite fiecărei matrice de discuri să fie conectată la un singur nod de cluster (Fig. 5.5.6 ). Recomandat numai pentru acele aplicații care se caracterizează printr-o arhitectură de acces complet separată.

Întrebări de securitate

1. Dați definiția unui sistem de calcul cluster.

2. Numiți principalele avantaje și dezavantaje ale sistemelor de calcul în cluster.

3. Ce clasificări ale sistemelor de calcul cluster faceți

4. Ce topologii de sisteme de cluster cunoașteți? Numiți avantajele și dezavantajele lor.

Literatură

1. Arhitecturi și topologii ale sistemelor de calcul multiprocesor / A.V. Bogdanov, V.V. Korhov, V.V. Mareev, E.N. Stankova. - M.: INTUIT.RU, 2004. - 176 p.

2. Sisteme cu microprocesoare: manual. manual pentru universitati /

E.K. Alexandrov, R.I. Grushvitsky, M.S. Kupriyanov și alții; editat de D.V. Puzankova . - Sankt Petersburg: Politekhnika, 2002. - 935 p.

Cluster computing nu este un domeniu nou. Cu toate acestea, recent interesul față de ele a crescut semnificativ - multe organizații consideră clusterele ca instrument principal pentru rezolvarea problemelor precum creșterea performanței aplicațiilor, asigurarea unei disponibilități ridicate, precum și scalabilitate ridicată a sistemelor lor de calcul.

Progresele în tehnologiile cluster din ultimul deceniu au făcut posibilă utilizarea computerelor ieftine pentru a le construi. Eficacitatea costurilor, puterea de calcul și flexibilitatea unor astfel de clustere le-au făcut o alternativă atractivă la modelul de calcul centralizat bazat pe supercalculatoare tradiționale (în continuare, prin cuvântul „cluster” vom înțelege un produs de masă, spre deosebire de o „comandă specială”. ”).

Clusterele au apărut ca o alternativă ieftină și eficientă la supercalculatoarele cu un singur caz, cu o arhitectură închisă originală. Construite pe componente standard, acestea sunt utilizate pe scară largă pentru calcularea de înaltă performanță, disponibilitate și scalabilitate. Și dacă prima oportunitate interesează în principal cercurile academice, atunci ultimele două sunt foarte atractive pentru afaceri de orice dimensiune. Și nu numai atractiv, ci și accesibil.

Astăzi, un cluster ieftin din componente care sunt în producție de masă poate fi asamblat de aproape orice companie de computere care se respectă și odată cu lansarea unui astfel de sistem de operare cluster precum Windows Computing Cluster Server 2003, care permite o instalare destul de simplă, la nivel de intrare. Soluțiile cluster devin disponibile pentru întreprinderile mici și mijlocii. Și, poate, nu pare nerezonabil să presupunem că reducerea permanentă a prețurilor la componentele hardware și software și la tehnologiile de rețea de mare viteză va face în curând clusterele entry-level un element comun al sistemelor informaționale de orice scară.

Prin urmare, în Subiectul săptămânii dedicat cluster-computing, am încercat să includem nu doar o parte de prezentare generală, ci și articole despre produse specifice care vor fi, fără îndoială, solicitate în viitorul apropiat de afacerile ucrainene. În special, cititorul va găsi aici atât o lecție practică desfășurată în Laboratorul nostru de teste, cât și o descriere a sistemelor de operare în cluster Windows Computing Cluster Server 2003/2008, care au toate șansele să devină populare.

În primul rând, să ne amintim definiția unui cluster. Acesta este numele unui sistem de calcul local (spre deosebire de distribuit), constând din multe calculatoare independente interconectate prin canale de transmisie a datelor. Localitatea clusterului constă în faptul că toate subsistemele sale sunt „vizibile” într-un singur domeniu administrativ și este gestionat ca un singur sistem de calcul. Calculatoarele care fac parte din cluster se numesc noduri. De obicei, acestea sunt computere universale produse în masă care pot funcționa independent. Nodurile pot fi cu un singur procesor sau multiprocesor (configurație SMP). În designul clasic, toate nodurile partajează memorie externă pe o matrice de hard disk atunci când rulează aplicații, folosind HDD-uri interne pentru funcții mai specializate. Pentru comunicarea între noduri, se utilizează de obicei o tehnologie de rețea standard, deși aceasta nu exclude canalele de comunicare dezvoltate separat. Rețeaua cluster este separată - este izolată de mediul extern al rețelei.

Clasificare

Clusterele pot fi clasificate în funcție de diverse criterii, dar cel mai adesea sunt împărțite în trei categorii, care sunt determinate de natura și scopul aplicației.

clustere de înaltă disponibilitate (HA).. Uneori sunt numite și tolerante la erori. Astfel de clustere sunt concepute pentru a oferi utilizatorilor finali acces neîntrerupt la date sau servicii (de obicei, servicii web). De obicei, o instanță a unei aplicații rulează pe un nod, iar atunci când acel nod devine indisponibil, controlul acestuia este preluat de un alt nod (Figura 1). Această arhitectură permite, de asemenea, reparații și întreținere preventivă fără întreruperea serviciilor. În plus, dacă un nod eșuează, serviciul poate fi restabilit fără a afecta disponibilitatea celorlalte. Adevărat, performanța sistemului va scădea.

Clusterele de înaltă disponibilitate sunt cea mai bună alegere pentru rularea aplicațiilor sau bazelor de date critice, servere de e-mail, fișiere, imprimare, web și aplicații. Spre deosebire de calculul distribuit și paralel, aceste clustere permit ușor și transparent aplicațiile existente ale organizațiilor, care nu sunt specifice clusterului, permițând rețelei să se extindă fără probleme pe măsură ce afacerea crește.

Clustere de echilibrare a sarcinii. Acest tip de cluster distribuie cererile primite în mai multe noduri care rulează aceleași programe sau găzduiesc același conținut (Figura 2). Fiecare nod este capabil să proceseze cereri pentru aceeași aplicație sau conținut. Dacă oricare dintre noduri eșuează, cererile sunt redistribuite între cele rămase. De obicei, astfel de clustere sunt utilizate pentru găzduire web.

Ambele tehnologii de cluster discutate mai sus pot fi combinate pentru a crește fiabilitatea, disponibilitatea și scalabilitatea aplicațiilor.

Clustere pentru calcul de înaltă performanță (High-Performance Cluster, HPC). În mod tradițional, calculul în paralel a fost efectuat pe sisteme multiprocesor concepute special pentru acest scop. În ele, multe procesoare împărtășeau o memorie comună și o interfață de magistrală într-un singur computer. Odată cu apariția tehnologiei de comutare de mare viteză, a devenit posibilă combinarea calculatoarelor în clustere pentru calculul paralel.

Un cluster paralel este un sistem care utilizează multe noduri pentru a paraleliza calculele pentru a rezolva o anumită problemă. Spre deosebire de clusterele de echilibrare a încărcăturii și de înaltă disponibilitate, care distribuie cererile/sarcinile între nodurile care le procesează ca un întreg, într-un mediu paralel, o solicitare este împărțită în mai multe subtask-uri, care la rândul lor sunt distribuite pentru procesare între nodurile din cluster. Clusterele paralele sunt utilizate în principal pentru aplicații care necesită calcule matematice intensive.

Componentele clusterului

Blocurile de bază (componentele) ale clusterelor sunt împărțite în mai multe categorii: nodurile în sine, software-ul clusterului, o rețea dedicată care face schimb de date între noduri și protocoalele de rețea corespunzătoare.

Noduri

Nodurile de proiectare au migrat de la șasiul tradițional cu piedestal la sisteme multiprocesor cu un singur rack și servere blade care oferă densități mai mari de procesor în medii cu spațiu limitat.

Recent, performanța procesoarelor, memoria, viteza de acces a hard disk-urilor și capacitatea acestora au crescut semnificativ. Este interesant de observat că odată cu această creștere, în unele cazuri exponențială, a performanței, costul acestor tehnologii a scăzut semnificativ.

Într-un caz tipic, un nod dintr-un cluster poate fi un nod de control (master) sau un nod de calcul (slave) (Fig. 3). Nu poate exista decât un singur nod principal. Este responsabil pentru funcționarea clusterului și este, de asemenea, cheia pentru middleware-ul clusterului, procesele de rutare, dispecerizarea și monitorizarea stării fiecărui nod de calcul. Aceștia din urmă efectuează calcule și operațiuni cu sistemul de stocare a datelor. Aceste noduri sunt în esență computere de sine stătătoare complet funcționale și sunt vândute de obicei ca desktop-uri sau servere.

Software

La fel ca un computer desktop obișnuit, sistemul de operare cluster este inima fiecărui nod. Este prezent în mod invizibil în timpul oricărei acțiuni a utilizatorului, fie că este accesarea sistemului de fișiere, trimiterea de mesaje sau începerea unui proces suplimentar. Utilizatorii pot alege diferite paradigme de programare sau middleware, dar sistemul de operare cluster este același pentru toată lumea.

O schiță tipică de proiectare a sistemului de operare este prezentată în tabel. Acesta arată blocurile de bază ale unui nod tradițional. Rolul principal al unui sistem de operare cluster este, în primul rând, de a multiplexa mai multe procese de utilizator într-un singur set de componente hardware (managementul resurselor) și de a oferi abstracții utile pentru software de nivel înalt. Unele dintre aceste abstracții includ protecția limitelor memoriei, coordonarea procesului/firului și a comunicațiilor și gestionarea dispozitivelor. Trebuie remarcat faptul că majoritatea funcțiilor specifice clusterului sunt realizate de middleware. Și există motive pentru asta. Într-adevăr, sistemul de operare cluster este destul de complex și nu este întotdeauna clar modul în care modificările efectuate vor afecta alte sisteme. Prin urmare, este mai bine să efectuați modificările necesare la nivel de middleware, iar noua funcționalitate adăugată la acesta poate fi portată pe alte sisteme de operare.

În definiția de mai sus a unui cluster, s-a menționat că acesta este vizibil pentru administrator și utilizator ca un singur sistem de calcul. Acest lucru se realizează folosind Imagine de sistem unică (SSI). Este ceea ce ascunde natura eterogenă și distribuită a resurselor disponibile și le prezintă utilizatorilor și aplicațiilor ca o singură resursă de calcul. SSI poate fi implementat la unul sau mai multe dintre următoarele niveluri: hardware, OS, middleware și/sau aplicație. Iată un exemplu de mai multe servicii cheie furnizate de un cluster SSI:

  • un singur punct de intrare;
  • interfață de utilizator unificată;
  • spațiu de proces unic;
  • memorie unică și spațiu I/O;
  • ierarhie unificată a fișierelor;
  • punct unic de control și management.

Sisteme precum Digital/Compaq Memory Channel și Distributed Shared Memory oferă SSI la nivel hardware și permit utilizatorilor să vadă clusterul ca un sistem de memorie partajată. Sistemele de operare SCO UnixWare NonStop Cluster, Sun Solaris-MC, GLUNIX și MOSIX acceptă SSI la nivel de kernel.

Implementarea SSI la fiecare dintre nivelurile de mai sus are avantaje și dezavantaje. Astfel, stratul hardware poate oferi cel mai înalt grad de transparență, dar datorită arhitecturii sale rigide, nu este mai puțin flexibil decât este necesar pentru extinderile și îmbunătățirile sistemului. Stratul kernel oferă SSI atât dezvoltatorilor, cât și utilizatorilor finali, dar este prea scump și greu de modificat. Principalul avantaj al stratului de aplicație față de stratul kernel este că în primul, SSI este implementat în etape, iar utilizatorul primește capacitățile imediat, în timp ce în cel din urmă, produsul nu poate intra pe piață până când toate componentele kernel-ului acceptă SSI. Stratul middleware este un compromis între cele două mecanisme de implementare SSI menționate mai sus.

Echipamente de rețea și protocoale

Crearea de clustere publice a fost posibilă numai datorită tehnologiilor de rețea adecvate pentru comunicațiile între noduri. Clusterele publice includ una sau mai multe rețele dedicate pentru transmiterea pachetelor de mesaje în cadrul unui sistem distribuit. Acest lucru distinge un cluster de un ansamblu de computere autonome conectate liber printr-o rețea LAN partajată.

Astăzi, dezvoltatorii de clustere au oportunități ample de a alege tehnologia de rețea. Deoarece costul echipamentelor de rețea pentru clustere variază de la „aproape nimic” la câteva mii de dolari per nod, aceasta poate să nu fie ultima componentă în determinarea prețului produsului. Practica oferă exemple de construire a clusterelor foarte eficiente folosind echipamente de rețea ieftine care pot fi văzute într-o rețea LAN obișnuită. În același timp, produsele de rețea individuale concepute special pentru comunicațiile cluster sunt comparabile ca cost cu stațiile de lucru. Alegerea tehnologiei de rețea depinde de o serie de factori: preț, performanță, compatibilitate cu alte hardware și software de cluster, precum și caracteristicile de comunicare ale aplicațiilor care vor rula pe cluster.

Performanța rețelei este în general descrisă în termeni de latență și lățime de bandă. Latența este durata de timp de la o solicitare de date până la primirea acesteia sau timpul necesar pentru ca acestea să fie transferate de la un computer la altul, inclusiv costul general al software-ului pentru generarea unui mesaj și timpul necesar pentru a transfera biții. În mod ideal, aplicațiile scrise pentru clustere ar trebui să aibă mesaje minime. Dacă o aplicație trimite un număr mare de mesaje scurte, atunci performanța sa va depinde de latența rețelei, dar dacă sunt schimbate mesaje lungi, atunci debitul său va avea un impact major asupra acestui parametru. Evident, performanța aplicației va fi cea mai bună cu latență scăzută și lățime de bandă mare. Pentru a îndeplini aceste două cerințe, sunt necesare protocoale de comunicație eficiente care să minimizeze supraîncărcarea și dispozitivele de rețea rapide.

Protocoalele de comunicare sau de rețea definesc regulile și convențiile pe care două sau mai multe computere dintr-o rețea le vor folosi pentru a face schimb de informații. Acestea pot fi bazate pe conexiune sau fără conexiune, oferă diferite niveluri de fiabilitate - cu și fără garanție completă de livrare în ordinea pachetelor, sincron (fără tamponare) și asincron (cu tamponare).

Pentru comunicațiile în cluster, sunt utilizate atât protocoale de rețea tradiționale, dezvoltate inițial pentru Internet (IP), cât și cele special create. În plus, există două standarde relativ noi, de asemenea, concepute special pentru clustere. Nu ne vom opri asupra protocolului IP, care este destul de familiar cititorilor noștri, nici asupra celorlalți, deoarece toate sunt destul de specifice. Vom enumera doar numele lor, astfel încât cei interesați să poată apela fie la literatură, fie la Internetul „omniscient”. Acestea sunt, în special, mesajele active, mesajele rapide, sistemul de comunicare virtuală cu cartografiere în memorie, protocoalele U-net și interfața de bază pentru paralelism. Să ne uităm la două standarde.

Până în 1997, cercetarea protocoalelor cu latență scăzută a progresat într-o asemenea măsură încât a condus în cele din urmă la crearea unui nou standard pentru comunicațiile în cluster, Virtual Interface Architecture (VIA). În același timp, industria lucra la standarde pentru subsistemele de stocare partajată. Rezultatul acestor eforturi a fost InfiniBand.

VIA este un standard de comunicare care reunește cele mai bune realizări ale diverselor proiecte. A fost creat de un consorțiu de parteneri academici și industriali, inclusiv Intel, Compaq și Microsoft. Versiunea VIA 1.1 cu suport pentru hardware eterogen a devenit disponibilă la începutul anului 2001. După cum sugerează și numele, VIA se bazează pe conceptul unei interfețe de rețea virtuală. Standardul stipulează că înainte ca un mesaj să fie trimis, bufferele de primire și trimitere trebuie să fie alocate și legate la memoria fizică. Odată ce tampoanele și structurile lor de date asociate sunt formate, nu sunt necesare apeluri de sistem. Operațiunile de primire și trimitere într-o aplicație utilizator constau în scrierea unui handle într-o coadă. Aplicația poate alege dacă să aștepte confirmarea că operațiunea sa încheiat sau să își continue activitatea principală în timp ce mesajul este procesat.

Deși VIA poate fi pus la dispoziție direct pentru programarea aplicațiilor, mulți dezvoltatori de sisteme consideră că este un nivel prea scăzut pentru aplicații, deoarece acestea din urmă trebuie să fie responsabilă pentru alocarea unei părți din memoria fizică și pentru a se asigura că aceasta este utilizată eficient. Este de așteptat ca majoritatea vânzătorilor de sisteme de operare și middleware să ofere pentru VIA o interfață care va sprijini programarea aplicațiilor. Astfel, în toamna anului 2000, majoritatea vânzătorilor de baze de date au furnizat versiuni ale produselor lor care rulau pe VIA. Alte software de cluster, cum ar fi sistemele de fișiere, devin rapid disponibile.

Standardul InfiniBand a fost susținut de un consorțiu de parteneri din industrie, inclusiv Compaq, Dell, HP, IBM, Intel, Microsoft și Sun Microsystems. Arhitectura InfiniBand înlocuiește magistrala partajată, care este sistemul standard de I/O în computerele moderne, cu un serial de mare viteză, bazat pe canale. Toate sistemele și dispozitivele se conectează la fabrică utilizând un adaptor de canal gazdă (HCA), care conectează procesorul gazdă la structura InfiniBand, sau un adaptor de canal țintă (TCA), care conectează InfiniBand la alte dispozitive I/O, cum ar fi Ethernet, Fibre Channel sau cu sisteme de stocare. Legătura InfiniBand este full-duplex și funcționează la 2,5 Gb/s într-o direcție într-o topologie punct la punct. Datele sunt trimise în pachete și există șase moduri de transmisie: conexiune fiabilă și nesigură, datagramă fiabilă și nesigură, multicast și pachete brute (modul „raw”). În plus, InfiniBand acceptă accesul direct la memorie de la distanță, ceea ce permite unui procesor să citească sau să scrie în memoria altuia.

În ceea ce privește echipamentele de rețea care suportă comunicarea între noduri, acestea pot fi clasificate în patru categorii - în funcție de conexiunea la magistrala I/O sau la magistrala de memorie și de metoda principală de comunicare - folosind mesaje sau partajate. memorie pe disc.

Dintre cele patru categorii de interconectare, sistemele bazate pe mesaje și magistrala I/O sunt cele mai comune, deoarece oferă cea mai clară interfață pentru computer. Busul I/O are cel puțin o întrerupere hardware care poate informa procesorul că datele sunt gata de citit. Astfel de sisteme sunt implementate în toate tehnologiile de rețea disponibile pe scară largă, precum și într-o serie de produse recente concepute special pentru calculul în cluster.

Sistemele de magistrală I/O și de memorie pe disc partajat includ computere cu un subsistem de disc partajat. Conexiunile de memorie sunt mai puțin frecvente, deoarece magistrala de memorie este în general proiectată diferit pentru fiecare tip de computer. Cu toate acestea, multe astfel de sisteme sunt implementate în software sau printr-un mecanism de mapare I/O port-la-memorie, cum ar fi canalul de memorie.

În plus, există sisteme hibride care combină caracteristici din mai multe categorii, de exemplu, InfiniBand vă permite să trimiteți atât date pe disc, cât și mesaje către alte noduri. În mod similar, Scalable Coherent Interface (SCI) poate folosi ambele mecanisme de schimb.

Rețele de clustere

Rețeaua sistemului de cluster poate fi construită pe baza produselor de rețea tradiționale utilizate în rețele LAN sau proiectată special pentru calculul cluster. În acest din urmă caz, oferă suport hardware suplimentar care reduce latența.

Astăzi, tehnologiile Ethernet comutate, datorită costurilor scăzute ale portului și standardizării interfețelor, sunt lideri ca sisteme de interconectare în clustere disponibile pe scară largă. Multe computere sunt echipate cu porturi 1 GE încorporate; tot ce trebuie să faceți este să cumpărați un comutator ieftin. Cu toate acestea, pentru cerințe crescute, se folosesc și rețele specializate. Orice descriere detaliată a acestora ne-ar duce cu mult dincolo de limitele a ceea ce este posibil, prin urmare, din motive de completitudine, vom oferi doar informații foarte scurte despre fiecare dintre ele.

Giganet (cLAN). Tehnologia cLAN (colapsed LAN), acum deținută de Emulex, a fost dezvoltată pentru a sprijini VIA în hardware. Aceasta a fost prima implementare hardware nativă din industrie a standardului VIA. Caracteristicile cheie ale rețelei sunt următoarele.

La cel mai de jos nivel al modelului de comunicare se află memoria partajată distribuită incoerentă (DSM). O parte din spațiul de adrese virtuale al aplicației este mapată logic prin rețea la memoria fizică de pe un alt nod. Datele sunt transferate între aplicații prin scrierea într-o zonă de memorie partajată folosind instrucțiuni standard de scriere a procesorului. Buffer-ul de la nodul la distanță este reprezentat de un cookie de acces direct la memorie la distanță, care oferă nodului proprietar permisiunea de a accesa bufferul.

Myrinet. Această rețea full duplex este furnizată de Myricom. Este utilizat pe scară largă în multe proiecte academice, în special în Berkeley Network of Workstations (ACUM). Din punct de vedere fizic, rețeaua constă din două cabluri de fibră optică (în aval și în amonte) conectate la gazdă printr-un conector comun. Calculatoarele sunt conectate folosind routere sau comutatoare (acestea pot fi configurate pentru a oferi căi redundante). Este acceptată comutarea fără buffering de pachete (cut-through), ceea ce permite transmiterea mesajelor de la un capăt la altul cu întârziere minimă. Myrinet are un procesor programabil la bord - vă permite să experimentați cu multe protocoale de comunicare.

Myrinet implementează o serie de mecanisme pentru a asigura toleranța la erori. Acestea includ controlul fluxului, controlul erorilor și verificarea funcționalității canalelor (bătăi ale inimii).

Cea mai recentă versiune, așa-numita Myrinet 10G de a patra generație, acceptă rate de transfer de date de 10 Gb/s în fiecare direcție și este compatibilă cu 10 GE la nivel PHY. Latența rețelei este foarte scăzută - doar 5 µs.

QsNet. Această rețea de mare viteză și latență scăzută este dezvoltată de Quadrics Supercomputers World (QSW). Din punct de vedere structural, QsNet include două subsisteme:

  • o interfață de rețea constând din unul sau mai multe adaptoare de rețea în fiecare nod;
  • o rețea de date multi-bus care conectează computerele într-un cluster.

Interfața de rețea se bazează pe cipuri personalizate numite Elan. Modificarea Elan III combină un procesor I/O dedicat pentru descărcarea procesorului, o magistrală PCI (66 MHz, 64 biți), un canal duplex (400 MHz, 8 biți), o unitate de gestionare a memoriei (MMU), un cache și un interfață de memorie locală. Cipul efectuează trei tipuri de operații de bază:

  • citire și scriere de la distanță;
  • transferul direct de date din spațiul de adrese virtuale al utilizatorului al unui procesor la altul fără a fi nevoie de sincronizare;
  • managementul protocolului.

Rețeaua este construită pe baza unor comutatoare dedicate, care sunt combinate într-un șasiu special, formând o topologie de arbore groasă (cu cât ramura este mai aproape de rădăcină, cu atât este mai groasă, adică capacitatea sa este mai mare).

Modificarea rețelei, lansată în 2003, se bazează pe magistrala PCI-X 133 MHz și are o latență de 1,22 μs.

Interfață coerentă scalabilă (SCI). Aceasta este prima tehnologie de interconectare dezvoltată special pentru cluster-computing care va fi adusă la standard. Arhitectura SCI se bazează pe conexiuni punct la punct, dimensiuni mici ale pachetelor și tranzacții divizate. Standardul IEEE 1596 a fost publicat în 1992 și a specificat nivelul fizic al rețelei și mai sus pentru memoria cache-coerentă partajată în rețea (opțională). La niveluri superioare, standardul descrie un design cache coerent, distribuit, bazat pe pointeri. Acest design permite stocarea în cache a memoriei SCI la distanță: ori de câte ori datele aflate în memoria la distanță sunt modificate, toate liniile cache de pe toate nodurile în care sunt stocate sunt invalidate. Memorarea în cache a memoriei SCI la distanță îmbunătățește performanța și permite programarea directă și transparentă a memoriei partajate.

Desigur, acestea nu sunt toate tehnologiile pe baza cărora puteți construi un cluster destul de puternic. Clusterele entry-level folosesc de obicei soluții nespecializate care folosesc tehnologii de rețea tradiționale, cum ar fi Ethernet, ATM sau Fibre Channel.

Astăzi, piața oferă o gamă largă de clustere, care diferă prin tipul și viteza procesoarelor, dimensiunea memoriei partajate de noduri, tehnologie de interconectare a nodurilor, modele și interfețe de programare. Cu toate acestea, trebuie să înțelegeți că rezultatul obținut cu ajutorul lor depinde în mare măsură de caracteristicile aplicațiilor pe care intenționați să le implementați.

Schiță de bază de proiectare a sistemului de operare
Spațiu utilizator Procese de sistem Procesele utilizatorului
nefolosind
middleware-ul
Procesele utilizatorului folosind middleware
Middleware
Servicii de sistem Bibliotecile utilizatorilor
Nucleu Extensii de kernel legate de middleware
Sisteme de fișiere/Comunicare/Interfață programatică
Manager de memorie Programator Șoferii
Stratul de abstracție hardware
Resurse hardware Temporizatoare și întreruperi
RAM CPU-uri Discuri Reţea Interconectarea clusterului Alţii

(Apropo, este posibil să asamblați un cluster ieftin și eficient dintr-un xbox 360 sau PS3, procesoarele de acolo sunt aproximativ la fel ca și Power și puteți cumpăra mai mult de o consolă pentru un milion.)

Pe baza acestui fapt, remarcăm opțiuni de preț interesante pentru construirea unui sistem performant. Desigur, trebuie să fie multiprocesor. Intel folosește procesoare Xeon pentru astfel de sarcini, în timp ce AMD folosește procesoare Opteron.

Daca sunt multi bani


Separat, remarcăm linia de procesoare extrem de scumpă, dar productivă, bazată pe soclul Intel Xeon LGA1567.
Procesorul de top din această serie este E7-8870 cu zece nuclee de 2,4 GHz. Prețul său este de 4616 USD. Pentru astfel de procesoare, HP și Supermicro produc! opt procesoare! șasiu server. Opt procesoare Xeon E7-8870 2,4 GHz cu 10 nuclee cu suport HyperThreading acceptă 8*10*2=160 fire, care sunt afișate în managerul de activități Windows ca o sută șaizeci de grafice de încărcare a procesorului, o matrice 10x16.

Pentru ca opt procesoare să se potrivească în carcasă, acestea nu sunt plasate direct pe placa de bază, ci pe plăci separate care sunt conectate la placa de bază. Fotografia prezintă patru plăci cu procesoare instalate în placa de bază (două pe fiecare). Aceasta este soluția Supermicro. În soluția HP, fiecare procesor are propria sa placă. Costul soluției HP este de două până la trei milioane, în funcție de conținutul procesoarelor, memorie și alte lucruri. Șasiul de la Supermicro costă 10.000 de dolari, ceea ce este mai atractiv. În plus, Supermicro poate instala patru plăci de expansiune coprocesor în porturile PCI-Express x16 (apropo, va mai fi loc pentru un adaptor Infiniband pentru a asambla un cluster dintre acestea), în timp ce HP are doar două. Astfel, pentru crearea unui supercomputer, platforma cu opt procesoare de la Supermicro este mai atractivă. Următoarea fotografie din expoziție arată un supercomputer asamblat cu patru plăci GPU.


Cu toate acestea, este foarte scump.
Care este mai ieftin?
Există însă perspectiva asamblarii unui supercomputer pe procesoare AMD Opteron G34, Intel Xeon LGA2011 și LGA 1366 mai accesibile.

Pentru a alege un model anume, am alcătuit un tabel în care am calculat indicatorul preț/(număr de nuclee*frecvență) pentru fiecare procesor. Am exclus din calcul procesoare cu o frecvență sub 2 GHz, iar pentru Intel - cu un bus sub 6.4GT/s.

Model
Numărul de nuclee
Frecvenţă
Preț, $
Preț/core, $
Preț/Core/GHz
AMD





6386 SE
16
2,8
1392
87
31
6380
16
2,5
1088
68
27
6378
16
2,4
867
54
23
6376
16
2,3
703
44
19
6348
12
2,8
575
48
17
6344
12
2,6
415
35
13
6328
8
3,2
575
72
22
6320
8
2,8
293
37
13
INTEL





E5-2690
8
2,9
2057
257
89
E5-2680
8
2,7
1723
215
80
E5-2670
8
2,6
1552
194
75
E5-2665
8
2,4
1440
180
75
E5-2660
8
2,2
1329
166
76
E5-2650
8
2
1107
138
69
E5-2687W
8
3,1
1885
236
76
E5-4650L
8
2,6
3616
452
174
E5-4650
8
2,7
3616
452
167
E5-4640
8
2,4
2725
341
142
E5-4617
6
2,9
1611
269
93
E5-4610
6
2,4
1219
203
85
E5-2640
6
2,5
885
148
59
E5-2630
6
2,3
612
102
44
E5-2667
6
2,9
1552
259
89
X5690
6
3,46
1663
277
80
X5680
6
3,33
1663
277
83
X5675
6
3,06
1440
240
78
X5670
6
2,93
1440
240
82
X5660
6
2,8
1219
203
73
X5650
6
2,66
996
166
62
E5-4607
6
2,2
885
148
67
X5687
4
3,6
1663
416
115
X5677
4
3,46
1663
416
120
X5672
4
3,2
1440
360
113
X5667
4
3,06
1440
360
118
E5-2643
4
3,3
885
221
67

Modelul cu raportul minim este evidențiat cu italice aldine, cel mai puternic AMD și, după părerea mea, cel mai apropiat ca performanță de Xeon, sunt subliniați.

Astfel, alegerea mea de procesoare pentru un supercomputer este Opteron 6386 SE, Opteron 6344, Xeon E5-2687W și Xeon E5-2630.

Plăci de bază

PICMG
Este imposibil să instalați mai mult de patru plăci de expansiune cu două sloturi pe plăcile de bază obișnuite. Există o altă arhitectură - utilizarea de backplane, cum ar fi BPG8032 PCI Express Backplane.


O astfel de placă conține plăci de expansiune PCI Express și o placă de procesor, oarecum similare cu cele instalate în serverele bazate pe Supermicro cu opt procesoare discutate mai sus. Dar numai aceste plăci de procesor sunt supuse standardelor industriale PICMG. Standardele se dezvoltă lent și astfel de plăci adesea nu acceptă cele mai recente procesoare. Maximul de astfel de plăci de procesor disponibile în prezent este de două Xeon E5-2448L - Trenton BXT7059 SBC.

Un astfel de sistem fără GPU va costa cel puțin 5.000 USD.

Platforme TYAN gata făcute
Pentru aproximativ aceeași sumă puteți achiziționa o platformă gata făcută pentru asamblarea supercalculatoarelor TYAN FT72B7015. Acesta poate instala până la opt GPU-uri și două Xeon LGA1366.
Plăci de bază pentru server „obișnuite”.
Pentru LGA2011
Supermicro X9QR7-TF - aceasta placa de baza poate instala 4 placi de expansiune si 4 procesoare.

Supermicro X9DRG-QF - aceasta placa este special conceputa pentru asamblarea sistemelor de inalta performanta.

Pentru Opteron
Supermicro H8QGL-6F - această placă vă permite să instalați patru procesoare și trei plăci de expansiune

Consolidarea platformei cu carduri de expansiune

Această piață este aproape complet capturată de NVidia, care produce, pe lângă plăcile video pentru jocuri, și plăci de calcul. AMD are o cotă de piață mai mică, iar Intel Corporation a intrat pe această piață relativ recent.

O caracteristică a unor astfel de coprocesoare este prezența unei cantități mari de RAM la bord, calcule rapide cu precizie dublă și eficiență energetică.

FP32, Tflops FP64, Tflops Preţ Memorie, GB
Nvidia Tesla K20X 3.95 1.31 5.5 6
AMD FirePro S10000 5.91 1.48 3.6 6
Intel Xeon Phi 5110P 1 2.7 8
Nvidia GTX Titan 4.5 1.3 1.1 6
Nvidia GTX 680 3 0.13 0.5 2
Ediție AMD HD 7970 GHz 4 1 0.5 3
AMD HD 7990 Devil 13 2x3,7 2х0,92 1.6 2x3

Soluția de top de la Nvidia se numește Tesla K20X, bazată pe arhitectura Kepler. Acestea sunt cardurile care sunt instalate în cel mai puternic supercomputer din lume, Titan. Cu toate acestea, Nvidia a lansat recent placa grafică Geforce Titan. Modelele vechi au redus performanța FP64 la 1/24 din FP32 (GTX680). Dar în Titan, producătorul promite performanțe destul de ridicate în calcule cu dublă precizie. Soluțiile de la AMD sunt și ele bune, dar sunt construite pe o arhitectură diferită și acest lucru poate crea dificultăți pentru rularea calculelor optimizate pentru CUDA (tehnologia Nvidia).

Soluția de la Intel - Xeon Phi 5110P este interesantă deoarece toate nucleele din coprocesor se bazează pe arhitectura x86 și nu este necesară o optimizare specială a codului pentru a rula calcule. Dar favorita mea dintre coprocesoare este relativ ieftină AMD HD 7970 GHz Edition. Teoretic, această placă video va arăta performanță maximă pe cost.

Poate fi conectat la un cluster

Pentru a crește performanța sistemului, mai multe computere pot fi combinate într-un cluster, care va distribui sarcina de calcul între computerele incluse în cluster.

Utilizarea obișnuită Gigabit Ethernet ca interfață de rețea pentru a conecta computere este prea lentă. Infiniband este cel mai adesea folosit în aceste scopuri. Adaptorul gazdă Infiniband este ieftin în raport cu serverul. De exemplu, la licitația internațională Ebay astfel de adaptoare sunt vândute la prețuri începând de la 40 USD. De exemplu, un adaptor X4 DDR (20 Gb/s) va costa aproximativ 100 USD cu livrare în Rusia.

În același timp, comutarea echipamentelor pentru Infiniband este destul de costisitoare. Și așa cum am menționat mai sus, steaua clasică ca topologie de rețea de calculatoare nu este cea mai bună alegere.

Cu toate acestea, gazdele InfiniBand pot fi conectate între ele direct, fără un comutator. Apoi, de exemplu, această opțiune devine destul de interesantă: un grup de două computere conectate prin infinitband. Un astfel de supercomputer poate fi ușor asamblat acasă.

De câte plăci video ai nevoie?

În cel mai puternic supercomputer al timpului nostru, Cray Titan, raportul dintre procesoare și „plăci video” este de 1:1, adică are 18688 procesoare cu 16 nuclee și 18688 Tesla K20X.

În Tianhe-1A, un supercomputer chinezesc bazat pe xeon, relația este următoarea. Două procesoare cu șase nuclee pentru o placă video Nvidia M2050 (mai slabă decât K20X).

Vom accepta această atitudine pentru ansamblurile noastre ca fiind optimă (pentru că este mai ieftină). Adică 12-16 nuclee de procesor per GPU. În tabelul de mai jos sunt indicate cu aldine variante practic posibile, iar cele mai reușite din punctul meu de vedere sunt subliniate.

GPU Miezuri CPU cu 6 nuclee CPU cu 8 nuclee CPU cu 12 nuclee CPU cu 16 nuclee
2 24 32 4
5
3
4
2
3
2
2
3 36 48 6
8
5
6
3
4
2
3
4 48 64 8
11
6
8
4
5
3
4

Dacă un sistem cu un raport procesor/placă video deja stabilit poate lua la bord dispozitive de calcul suplimentare, atunci le vom adăuga pentru a crește puterea ansamblului.

Deci cat costa

Opțiunile prezentate mai jos sunt un șasiu de supercomputer fără RAM, hard disk și software. Toate modelele folosesc adaptorul video AMD HD 7970 GHz Edition. Poate fi înlocuit cu altul, după cum cere sarcina (de exemplu, xeon phi). Acolo unde sistemul permite, unul dintre AMD HD 7970 GHz Edition este înlocuit cu un AMD HD 7990 Devil 13 cu trei sloturi.
Opțiunea 1 pe placa de bază Supermicro H8QGL-6F


Placa de baza Supermicro H8QGL-6F 1 1200 1200
CPU AMD Opteron 6344 4 500 2000
Cooler CPU Thermaltake CLS0017 4 40 160
Carcasa 1400W SC748TQ-R1400B 1 1000 1000
Accelerator grafic Ediție AMD HD 7970 GHz 3 500 1500
5860

Teoretic, performanța va fi de aproximativ 12 Tflops.
Opțiunea 2 pe placa de bază TYAN S8232, cluster


Această placă nu acceptă Opteron 63xx, deci se folosește 62xx. În această opțiune, două computere sunt conectate într-un cluster prin Infiniband x4 DDR folosind două cabluri. Teoretic, viteza conexiunii în acest caz va fi limitată la viteza PCIe x8, adică 32Gb/s. Se folosesc două surse de alimentare. Cum să le coordonați unul cu celălalt poate fi găsit pe Internet.
Cantitate Preţ Sumă
Placa de baza TYAN S8232 1 790 790
CPU AMD Opteron 6282SE 2 1000 2000
Cooler CPU Noctua NH-U12DO A3 2 60 120
Cadru Antec Twelve Hundred Black 1 200 200
unitate de putere FSP AURUM PRO 1200W 2 200 400
Accelerator grafic Ediție AMD HD 7970 GHz 2 500 1000
Accelerator grafic AX7990 6GBD5-A2DHJ 1 1000 1000
Adaptor Infiniband X4 DDR Infiniband 1 140 140
Cablu Infiniband X4 DDR Infiniband 1 30 30
5680 (pe bloc)

Pentru un grup de astfel de configurații aveți nevoie de două și costul lor va fi $11360 . Consumul său de putere la sarcină maximă va fi de aproximativ 3000 W. Teoretic, performanța va fi de până la 31Tflops.