Clustere în linux

Subiectul acestui articol este calculul paralel în Linux. Acest articol abordează problemele generale de grupare, software-ul cluster, în special PVM. La sfârșitul articolului veți găsi legături către literatura suplimentară pe această temă.

Informații generale despre clustere


Mai întâi trebuie să înțelegeți ce este un grup în cazul general. De regulă, un cluster constă din noduri (computere individuale) și o rețea care le unește. Pentru a construi rețeaua de obicei folosită tehnologia Fast Ethernet (100Mbit / sec), dar în cel mai simplu caz (de exemplu, crearea cluster-ului în casă sau într-un scop demonstrativ) și adecvat, un segment Ethernet la 10Mbit / sec.

De obicei, grupurile sunt utilizate de organizațiile de cercetare pentru a simula diferite sarcini sau pentru a efectua calcule complexe. Prețul supercomputerelor este inaccesibil pentru majoritatea organizațiilor, așa că a venit ideea să vă colectați "supercomputerul" de la "materiale la îndemână" - stații de lucru bazate pe procesoarele Intel. Performanțele procesoarelor Intel sunt acum aproape atinse de nivelul procesoarelor de arhitectură RISC (procesoare Intel inclusiv Pentium III utilizează arhitectura CISC și P4 - VLIW).

Ne adunăm clusterul

Configurația nodurilor de cluster depinde de sarcinile pe care le vor efectua. În cazul în care obiectivul dvs. - crearea cluster-ului în sine, fără a rezolva ceea ce unele sarcini importante costum și o mașină veche, cu procesor de 482-(de preferință DX2 sau DX4). Pentru decizii cu privire la sarcini importante se potrivesc cu calculatoare Pentium II procesor de 400Mhz sau Pentium III (de la 600Mhz).

Un computer (nod) va fi central. Este de dorit ca acesta să fie mai puternic decât celelalte noduri ale clusterului. Pe acesta trebuie să instalați un procesor mai puternic, de două ori mai mult decât RAM decât pe celelalte noduri (minimum 128MB). Este de dorit să se utilizeze un disc SCSI pe computerul central, dar este de asemenea adecvată o viteză ATA133 / 7200 rpm. Mai bine pentru a pune un SCSI rapid, și pe noduri, la toate pentru a abandona hard disk - deci va fi mai ieftin. Toate aceste cerințe sunt de dorit, dar nu obligatorii.

Acum hai să vorbim despre rețea. După cum am scris deja, este de dorit să utilizați Fast Ethernet. Dacă numărul de noduri este suficient (20) de mare pentru a minimaliza ciocnirile trebuie împărțite în segmente separate sau utilizate pentru comutatorul lor de conectare (swith), în loc de un repetor (hub).
În unele cazuri, este logic să rupeți rețeaua în segmente, chiar și cu un număr mic de noduri (de la 8), de exemplu, dacă utilizați Ethernet (10Mbit / sec).

Atunci când utilizați Ethernet, discurile greșite nu sunt recomandate. Clusterul va funcționa foarte încet, va exista un număr mare de coliziuni.
Una dintre cele mai eficiente soluții pentru conectarea nodurilor de cluster este utilizarea comutatoarelor Myrinet de 1.28GB. De asemenea, puteți utiliza tehnologia Gigabit Ethernet.

software-ul

Ca sisteme de operare, puteți utiliza:
  1. Linux
  2. FreeBSD
  3. Windows NT

Este preferabil să utilizați orice sistem Unix, deoarece aceste sisteme de operare utilizează mai eficient resursele de rețea. Soluția optimă este sistemul de operare Linux - este gratuit și destul de simplu de configurat.

Puteți folosi orice sistem Linux cu versiunea kernel 2.2. * Și mai mare. Aș recomanda să utilizați sasea versiune Linux RedHat, deoarece are resurse minime de sistem (minim de configurare - 486 33MHz / 8MB RAM / 120MB HDD) și în distribuția include un relativ nou software peste versiunea 5.2, care poate fi de asemenea folosite pentru a construi cluster. Versiunea de kernel utilizată de această distribuție (RH 6), 2.2.5-15.

După instalarea compilatoarelor, trebuie să instalați mediul de distribuire a sarcinilor. În acest articol voi descrie lucrul cu mediul PVM, deși alte instrumente sunt disponibile - MPI. Condor.

MPI Chameleon este o implementare a standardului industrial MPI 1.1. MPI Chameleon permite programelor să ruleze în interiorul unui sistem local sau într-un cluster de rețea utilizând conexiuni TCP.
Condor asigură o încărcare uniformă asupra clusterului prin migrarea proceselor între mai multe mașini.

Am ales o versiune mai simplă - PVM (Virtual Machine Paralelă). PVM oferă condițiile pentru efectuarea unei sarcini (sau mai multe - în majoritatea cazurilor) pe mai multe mașini. Cu alte cuvinte, PVM distribuie pur și simplu procesele pe nodurile clusterului, la fel cum planificatorul de sistem de operare alocă timp CPU pentru mai multe sarcini.
PVM poate lucra pe următoarele arhitecturi:

Aceasta nu este toata arhitectura care sustine PVM. O listă a tuturor arhitecturilor disponibile poate fi găsită în documentația pvm. Arhitecturile care ne interesează (sau, mai degrabă, accesibile pentru noi) sunt afișate cu caractere aldine.

Lucrul cu o mașină paralelă este destul de simplă. Trebuie să o instalați pe toate mașinile de tip cluster. Meu "grup" compus din două mașini de clasă Pentium (100 si 150MHz) cu 32Mb de RAM și un (central) Celeron 433 (128Mb). Am refuzat boot-ul de rețea din cauza utilizării de 10Mbit Ethernet. În plus, hard-discurile au fost deja instalate pe toate nodurile. Pe sistemul central a fost instalat Linux Mandrake 7, iar pe mașinile auxiliare Linux RedHat 6.0 Hedwig. Nu am instalat nici un complimente comerciale, ci am folosit cele care sunt incluse în distribuție.
Apropo, PVM poate lucra pe platforma Windows 9x, dar nu recomand sa o fac. Din motive de interes, am instalat PVM pentru Windows 98. Viteza aplicațiilor de testare chiar (fără să menționez calculele reale) a fost semnificativ mai mică. Faptul că clusterul se desfășoară mai lent a fost vizibil chiar și cu "ochiul liber". Cel mai probabil, acest lucru se datorează funcționării ineficiente a rețelei Windows. În plus, destul de des întregul cluster "atârnat" chiar și atunci când efectuează sarcini de testare, care fac parte din pachetul PVM.

Utilizarea PVM

PVM este compilată folosind echipa cunoscută trei:
configurați; face; face instalare

Înainte de a începe să faceți, setați variabila de mediu PVM_ROOT. În această variabilă de mediu, trebuie să specificați directorul unde sunt localizate directoarele PVM (de exemplu, $ HOME / pvm, dacă ați dezarhivat arhiva în directorul de acasă). O altă variabilă importantă de mediu este PVM_ARCH. Acesta conține numele arhitecturii sistemului de operare. Această variabilă ar trebui setată automat, dar dacă acest lucru nu sa întâmplat (ca în cazul meu), trebuie să instalați singur arhitectura. Când utilizați Linux, această variabilă trebuie să conțină valoarea LINUX.

După cum am scris deja, trebuie să instalați PVM pe toate nodurile clusterului. Întreaga mașină paralelă constă în daemon pvmd și consola pvm. Puteți afla opțiunile de pornire a daemonului executând comanda om pvmd. Pe mașina centrală, trebuie să porniți daemonul pvmd și să executați comanda:
PVM
Aceasta va lansa consola, cu care vom gestiona întregul cluster.

După ce executați consola, ar trebui să vedeți o invitație care indică faptul că clusterul este gata de utilizare:
PVM>
Introduceți comanda conf pentru a imprima configurația clusterului. Ar trebui să vedeți ceva de genul:
Listarea 1.

Listarea 1 arată că acum clusterul nostru este format dintr-o singură mașină - nodul central care rulează Linux. Acum este momentul să adăugăm încă două noduri la clusterul nostru. Adăugați noduri utilizând comanda:
adăugați numele de gazdă
După ce nodul este adăugat cu succes la cluster, acesta trebuie să fie afișat în lista nodurilor de cluster. Acum este deja posibilă rularea programelor care susțin PVM. Exemple de astfel de programe pot fi găsite în directorul $ PVM_ROOT / bin / $ PVM_ARCH / .În acest caz, este directorul / rădăcină / PVM / bin / LINUX (am instalat PVM directorul / root). În primul rând, executați programul cel mai simplu, salut. Înainte de a le rula, trebuie să faceți câteva note:
  1. Nu puteți porni procesele direct din consola pvm. Consola servește doar pentru gestionarea clusterului.
  2. Sarcina este pornită în mod obișnuit - de la consola sistemului de operare. Dar "procesele" care susțin pvm vor fi "paralelizate". Folosind comanda spawn, puteți genera și o sarcină (vezi mai jos)
Când începeți bine, ar trebui să vedeți un mesaj
salut, lume de la numele de gazdă.
unde hostname este nodul de cluster. Cu alte cuvinte, toate nodurile grupului ar trebui să vă salute.

Afișează versiunea libpvm

În tabelul 1, nu am descris toate comenzile consolei pvm, putem citi despre toate celelalte comenzi tastând man pvm.
Acum, luați în considerare câteva comenzi în detaliu. Să începem cu cea mai simplă - alias. Folosind-o, puteți defini, de exemplu, aliasuri pentru comenzile utilizate frecvent
alias. ajutor
Acum, în loc de comanda de ajutor, puteți doar tasta.

Comanda ID afișează ID-ul consolei Pvm:

Comanda mstat afișează starea nodului, de exemplu:

Similar cu comanda ps cunoscută, comanda pvm ps -a este, de asemenea, utilizată pentru a afișa toate sarcinile paralele efectuate de aparat:

Comanda pstat afișează starea sarcinii:

Acum ajungem la una dintre cele mai interesante echipe - spawn. Această comandă generează o sarcină. Cu ajutorul acestuia, puteți specifica anumiți parametri ai sarcinii, de exemplu, nodul pe care ar trebui să fie executat.
spawn [opt] a.out
a.out - orice fișier binar executabil - un program care nici nu suportă biblioteca libpvm. Pentru astfel de programe, puteți specifica și pe ce mașină se va executa. În mediul Windows, parametrul a.out este un fișier exe sau com.
Puteți specifica astfel de parametri pentru comanda spawn:

Articole similare