Utilizarea optimă a sistemelor distribuite eterogen

Și în România, procesul de informatizare se caracteri zează prin apariția și dezvoltarea în interiorul diverselor organizații a unor rețele de calculatoare care, de cele mai multe ori, sunt sau devin eterogene. Diversitatea se manifestă fie la nivel hardware, fie al sistemului de operare, fie la ambele. Această evoluție nu trebuie să sperie, pentru că este un proces natural, care ține cont de evoluția explozivă a domeniului, dominată la momente succesive de timp de tehnologii diferite (sparc, alpha, PII, ca procesor, UNIX, și acum NT si LINUX ca sistem de operare).

După ce prin crearea rețelei s-a reușit partajarea informației și comunicarea între utilizatori și programe, următoarea întrebare logică a oricărui proprietar sau administrator de rețea este dacă resursele instalate nu pot fi folosite eficient și la execuția aplicații lor. Avem în vedere creșterea indicelui de utilizare, ca și a numărului de aplicații executate în unitatea de timp (throughput). De multe ori, observăm într-o organizație următoarea situație paradoxală: unele calculatoare sunt neutilizate, în timp ce altele nu fac față prelucrărilor de date. Evident, nu este vorba de acele aplicații, cum sunt bazele de date, care fac apel la anumite resurse dedicate. În interiorul unei firme, colectivul de contabili tate folosește calculatoarele numai un interval limitat de timp, în timp ce colectivul de proiectare a unui produs nou are nevoie de resurse puternice până la realizarea obiectivului. La fel, într-o universitate, un colectiv folosește mai puțin resursele sale de calcul, în timp ce altul își pune problema achiziționării unor resurse suplimentare.

Utilizarea resurselor este un aspect. Altul se referă la momentul deciderii cumpărării unor noi calculatoare. Orice evoluție natu rală presupune întâi epuizarea posibilităților sistemelor instalate, cu eventuala amortizare a investiției, după care, apoi, se pune problema up-gradării.

În fine, există profiluri diferite de utilizatori și de aplicații. Printr-o administrare inteligentă a acestora, se poate ajunge la un grad ridicat de satisfacere a cerințelor lor, simultan cu un indice apropiat de maximum pentru utilizarea resurselor de calcul.

Pentru administrarea eficientă a resurselor eterogene ale unui sistem distribuit, este necesar un software adecvat, care să pună în practică strategii de gestiune a resurselor, ținând cont, în același timp, de nivelele diferite de importanță și termene de execuție ale aplicațiilor din sistem. Eficiența soft-ului de administrare este dictată de cele două componente ale sale:

• Resource tasking, care selectează job-urile ce urmează a fi lansate în execuție, decide asupra resurselor ce vor fi folosite și asupra procentului din resursele partajate care va fi alocat fiecărui job;

• Workload regulation, care decide alocarea de resurse, astfel încât resursele partajate să fie în concordanță cu obiectivele de administrare a resurselor – aplicațiile cele mai importante, sau cu termenele cele mai apropiate vor obține un procent adecvat din resurse.

Componenta de resource tasking utilizează importanța relativă a aplicațiilor ce candidează pentru execuție, corelează instanțe concurente ale acelorași utilizatori, aplicații și proiecte în vederea implementării eficiente a strategiilor de partajare a resurselor. Sistemele care nu au atributele prezentate mai sus, vor suferi pe mai multe planuri:

• Aplicații importante /urgente pot fi întârziate sau "sufocate" din lipsa resurselor, în timp ce alte aplicații sunt inițiate și executate;

• Utilizatori neautorizați pot domina resursele partajate și determină, în consecință, o scădere a productivității, prin lansarea în execuție a celei mai mari cantități de programe;

• Un utilizator poate depăși în timp nivelul de utilizare al resurselor, pe care și l-a propus.

Aceste efecte sunt contrare politicilor de utilizare a resurselor, care urmăresc maximalizarea beneficiului întregii comunități de utilizatori ai sistemului distribuit.

Pentru a rezolva problemele prezentate, multe organizații se bazează pe intervenția manuală, prin dedicarea resurselor unor funcții selectate, sau prin păstrarea unor re zerve în utilizarea resurselor, mai mari decât este necesar.

O altă problemă importantă este echilibrarea sarcinilor de lucru între resursele partajate, prin luarea unor decizii inteligente de alocare, atunci când job-urile sunt trimise pentru execuție. Practica curentă este de a folosi ca parametru încărcarea curentă a fiecărui calculator (de exemplu, numărul de procese aflate în coada proceselor gata de execuție, sau numărul de utilizatori conectați), fără a se ține cont de caracteristicile proceselor în execuție (priorități, urgențe, utilizatori). Utilizarea exclusivă a încărcării calculatorului poate fi sursa unor decizii ineficiente de alocare a aplicațiilor la calculatoare, care determină dezechilibre între calculatoare și, în consecință, timpi de execuție mai mari. De exemplu, o aplicație urgentă poate fi alocată unui calculator mai slab ca performanțe, doar pentru că momentan acesta era slab utilizat (neîncărcat). Sau, resursele de calcul cele mai puternice sunt ignorate pentru că performanțele lor practice sunt ignorate.

Inițial, o aplicație este alocată unui calculator dat, fără a se ține cont de evoluția sa dinamică și, posibil, imprevizibilă. Aceasta înseamnă că utilizarea resurselor poate să difere în mod semnificativ, după un interval de timp. De aceea, componenta de workload regulation este esențială pentru implemen tarea strategiilor necesare. Din păcate, cele mai multe sisteme au în vedere numai alocarea inițială, ignorând evoluția ulterioară a aplicației și a sistemului distribuit, în ansamblu.

Sistemele, care încearcă să trateze aspectul importanței relative sau urgenței unei aplicații, nu sunt eficiente deoarece folo sesc strategii de lansare în execuție cu priori tate (nice), fără a urmări în continuare regularizarea sarcinii de lucru.

Pentru a îmbunătăți gradul de utilizare al resurselor, se încearcă uneori modificarea manuală a priorităților job-urilor. Această operație poate fi dificilă, pentru că presupune că operatorul a identificat poziția tuturor proceselor componente și poate executa modificările pe toate calculatoarele gazdă. Mai mult, după toate aceste modificări, este posibil ca efectul să nu fie cel scontat – controlul priorității prin nice nu are efecte previzibile și proporționale cu utilizarea resurselor.

Unele aplicații, mari consumatoare de resurse, sunt amânate pentru intervale de timp când nu există o încărcare mare a sistemului (noaptea, la sfârșit de săptămână), deși ele ar putea beneficia de perioadele de neutilizare din cadrul intervalului obișnuit de lucru.

Există mai multe produse academice sau comerciale care își propun administrarea optimă a unui sistem distribuit eterogen, cele mai importante dintre ele fiind recenzate în cadrul catalogului software publicat pe Internet de către NHSE, la capitolul instrumente de prelucrare distribuită (distributed processing tools).

În continuare, vom prezenta succint sistemul CODINE (COmputing in DIstributed NEtworks), realizat de GENIAS Software GmbH pentru administrarea aplicațiilor într-un sistem distribuit UNIX eterogen. În momentul de față se lucrează și la versiunea pentru Windows NT. Am selectat acest sistem datorită multiplelor sale posibilități, ușurinței în instalare și utilizare, a gradului înalt de interacțiune dintre utilizator și sistem, ca și a performanțelor sale remarcabile.

Prezentare generală CODINE

Arhitectura sistemului

CODINE poate administra mai multe tipuri de job-uri: batch (scripturi shell), interactive, paralele și cu puncte de verificare (checkpointing). Acestea sunt introduse în cozi de așteptare de unde sunt apoi lansate în execuție pe calculatoare care sunt neutilizate, sau care au o încărcare mică. Activitățile de calcul sunt distribuite calculatoarelor sistemului, în funcție de starea de încărcare a fiecărei mașini și de necesitățile lor de resurse. Pentru job-urile cu puncte de verificare, se asigură migrarea acestora de la o stație la alta, fără intervenția utilizatorului, ca urmare a evoluției parametrului de încărcare.

Sistemul administrat de CODINE, care mai este cunoscut și cu denumirea de cluster sau celulă, este format din calculatoare care au o variantă de UNIX ca sistem de operare (IRIX, Solaris, Linux, etc.) și sunt interconectate. Un calculator administrat de CODINE este o gazdă (host).

CODINE folosește mai multe tipuri de demoni, dintre care cei mai importanți sunt demonul master (cod_qmaster), demonul planificator (cod_schedd), demonii pentru comunicații (cod_commd) și demonii pentru execuție (cod_execd).

Demonul master este administratorul ansamblului, folosind în acest scop o bază de date. Baza de date conține informații despre cozi, job-urile în execuție sau în așteptare, ca și despre resursele disponibile în cluster. În mod periodic, demonul master primește de la d emonii de execuție informații privind parametrii de încărcare ai gazdelor din cluster si actualizează, în mod corespunzător, baza de date. Tot el preia în numele sistemului CODINE job-urile care sunt primi te pentru execuție, după care solicită planificatorului luarea deciziilor de alocare a resurselor.

Deoarece funcționarea sa continuă și corectă este esențială, demonul master este multiplicat sub forma unor demoni master de rezervă (shadow). Într-o situație critică, când acesta nu mai funcționează, se selectează o nouă gazdă, unde este pornit automat un demon master nou. În acest interval de timp, nu se pierde nici o informație si nici un job.

Planificatorul asigură introducerea job-urilor în cozile de așteptare cele mai adecvate. Când sosește în sistem, un job este însoțit de lista de resurse cerute. Astfel, planificatorul poate decide dacă necesarul de resurse poate fi satisfăcut imediat, sau job-ul trebuie să aștepte în coadă până ce acele resurse vor deveni disponibile. Decizia luată este comunicată demonului master, care actualizează baza de date. Apoi, demonul master transmite demonului de execuție de pe gazda aleasă să lanseze în execuție job-ul respectiv.

Pe fiecare mașină CODINE există un demon de execuție, care startează și oprește job-uri. El comunică starea mașinii și, deci, modul de evoluție locală al activităților de calcul, demonului master.

În fiecare cluster se execută unul sau mai mulți demoni de comunicație. Ei asigură comunicația asincronă între ceilalți demoni CODINE, ceea ce conduce la creșterea eficienței sistemului. Toate comunicațiile se realizează cu un singur port TCP.

Cozile CODINE

O coadă CODINE este definită pentru o mașină și poate "executa" mai multe job-uri simultan (concurent dacă sistemul are un singur procesor). Aceasta înseamnă că fiind o coadă pentru job-uri gata de execuție, numărul ei de sloturi definește gradul de concurență. Are sens ca atunci când mașina are o singură unitate centrală, coada să aibă 1-2 sloturi, iar dacă mașina este bi-procesor, să aibă 2-4 sloturi. Bineînțeles, o mașină poate găzdui mai multe cozi. Cozi speciale pot fi definite pentru calculatoare paralele.

Fiecare coadă de pe o mașină este o reprezentare a clasei de aplicații care poate fi executată pe mașina respectivă. Ea este configurată pe baza unor atribute diverse, cum ar fi, de exemplu, proprietarul cozii, limita superioară a încărcării, nivelul de prioritate.

Există o coadă generală, administrată de demonul master, unde sunt primite job-urile de către sistemul CODINE – pending queue, si cozi de execuție, administrate de demonii de execuție.

Cozile pot fi de tipul: batch, interactiv, cu punct de verificare paralel. Acest atribut definește tipul aplicațiilor care pot fi introduse pentru execuție în această coadă. Alte atribute importante sunt:
• Numărul job-urilor /coadă;
• Mașina gazdă;
• Proprietarul cozii și lista cu utilizatorii care au acces la această coadă;
• Procesoarele unei mașini multi-procesor ce vor fi folosite de job-urile care se execută în această coadă;
• Complexele cozii.

Conceptul de complex permite transmiterea unor informații importante, cum ar fi, de exemplu, atributele resurselor pe care un utilizator le cere pentru un job, valorile de încărcare ale gazdei, dar și ale sistemului în ansamblu. Mai multe cozi pot fi grupate prin atribuirea unui complex particular în comun. Apoi, ele vor putea fi adresate în comun prin atributele acelui complex. Există trei tipuri de complexe:
• Implicit (default), care conține toate atributele pre-definite, cum ar fi numele cozii, gazda, prioritatea, limitele cozii;
• De încărcare (load). Există două tipuri de complexe de încărcare, încărcarea gazdei (host load) care reflectă starea unei mașini particulare din cluster, și încărcarea globala (global load) care se referă la resursele clusterului, cum ar fi numărul de licențe al unui anumit software, spațiul liber de pe disc, sau traficul din rețea. Atât complexul local, cât și cel global pot fi extinse sau modi ficate de către administratorul sistemului.
• Utilizator (user defined), care reprezintă o colecție de atribute și definiția privind modul lor de utilizare de către CODINE. Și în acest caz, mai multe cozi pot fi grupate cu un complex definit pentru ele de utilizator.

Un job poate avea acces la resursele sistemului, în interiorul unor limite, care sunt definite tot ca atribute ale cozilor. O posibilitate ar fi să se definească cozi pentru job-uri cu o durată de execuție mică, medie și mare. Există și alte limite definite prin intermediul cozilor:
• Timpul WallClock;
• Timpul CPU;
• Dimensiunea datelor și a fișierelor;
• Dimensiunea stivei, a memoriei centrale și a spațiului pe disc.

Cozile pot fi organizate ierarhic. O coadă subordonată altei cozi va fi considerată ca un dispozitiv cu o prioritate scăzut㠖 ea va fi suspendată atunci când este atins un număr pre-definit de job-uri în coada părinte. Nu există decât un singur nivel de subordonare, deși o coadă poate fi subordonată la mai multe cozi simultan.

Ce este interesant, componenta de interfațare cu alte sisteme de cozi (Queuing System Interface – QSI) permite transferul unor job-uri din sistemul CODINE către alte sisteme, cum ar fi NQS de la CRAY. În felul acesta, se pot integra într-o structură unică diverse sisteme de cozi, care interfațează în fond sisteme de calcul diferite ca putere de calcul.

Planificarea job-urilor

Planificatorul CODINE implementează mai multe strategii:

First-in-first-out, primele job-uri sosite sunt primele lansate în execuție, dacă solici tarea lor de resurse poate fi satisfăcută;
• Equale-share, dacă mai mulți utilizatori trimit simultan mai multe job-uri, acestea vor fi astfel planificate încât fiecare utilizator să aibă în execuție aproximativ același număr de job-uri;
• Limited-job-count, la fel ca mai înainte, doar că numărul de job-uri în execuție este limitat pentru fiecare utilizator;
• Priority poate fi folosită adițional față de una din celelalte strategii. Întâi se execută job-urile cu prioritatea cea mai mare, iar la prioritate egală se folosește una din celelalte strategii.

Dacă cererea de resurse a unui job poate fi satisfăcută de mai multe cozi, sau job-ul nu are cereri exprese, pentru introducerea job-ului într-o coadă se pot folosi variante diferite:
• Job-ul este trimis gazdei cu încărcarea cea mai mică. Parametrul de încărcare poate fi definit astfel încât să țină cont de performanțele gazdei;
• Administratorul definește ordinea în care vor fi selectate cozile.

Atât timp cât un job nu a fost încă alocat unei cozi (se află în pending queue), utilizatorul poate modifica cererea privind necesarul de resurse, iar administratorul poate modifica prioritatea sa.

Prezentarea necesarului de resurse

CODINE presupune că un job poate fi executat pe orice gazdă. În practică, cele mai multe job-uri impun îndeplinirea anumitor condiții, înainte de a fi executate: memorie suficientă, un anumit software, sau un anumit sistem de operare – acestea sunt cereri hard. Există și cereri soft, a căror îndeplinire nu condiționează lansarea în execuție a job-ului. De asemenea, și administratorul sistemului (clusterului) poate să impună anumite restricții în utilizarea mașinilor. De exemplu, se poate restricționa timpul CPU.

Tot ceea ce trebuie să facă utilizatorul este să specifice, în general, necesitățile job-ului, lăsând sistemului CODINE sarcina să identifice o gazdă potrivită.

Cererea de resurse se completează printr-un dialog REQUESTED RESOURCES, în fereastra Job Submission. O cerere echivalentă se poate lansa și cu o linie de comandă:

%qsub –l natran, arch=irx6, h_cpu=6:0:0 –soft –l h_rss=80M nastran.sh

Cum procesează sistemul cererea de resurse și cum sunt acestea alocate ?

După ce s-au colectat toate cererile, acestea sunt evaluate. Se începe cu cererile hard, care sunt alocate. Dacă o cerere nu este validă, introducerea job-ului în sistem este anulată. Dacă o cerere nu poate fi satisfăcută, job-ul este trecut în așteptare, urmând ca cere rea sa să fie reanalizată ulterior. Dacă toate cererile hard pot fi îndeplinite, resursele sunt alocate și job-ul poate fi lansat în execuție.

Resursele soft sunt numai verificate, deoarece un job poate fi executat chiar și atunci când o parte din ele, sau toate, nu poate (pot) fi satisfăcută (-e). Dacă există mai multe cozi care satisfac cerințele hard, se va alege cea care îndeplinește un număr mai mare de cerințe soft.

Pentru executarea job-urilor paralele, CODINE folosește medii de tip message passing ca PVM, sau MPI. Se pot configura mai multe medii paralele (PE – Parallel Environment).

Este important să se aleagă o interfață PE potrivită pentru un job paralel. Acestea pot să nu utilizeze sisteme cu transfer de mesaje, sau sisteme diferite, pot aloca procesele pe o singură gazdă sau pe mai multe. De asemenea, accesul la PE poate fi interzis anumitor utilizatori, numai un anumit set de cozi poate fi folosit de un PE și numai un anumit număr de sloturi poate fi ocupat în orice moment.

GRD – Global Resource Director

GRD a fost realizat prin integrarea unor produse de la trei firme diferite, Raytheon E-Systems care a contribuit cu un nou planificator și o componentă pentru echilibrarea dinami că a încărcării (Global Dynamic Scheduler), Genias Sofware cu Codine și Instrumental cu un colector dinamic de informații privind performanțele sistemului. Putem spune că, în acest caz, Codine este nucleul GRD. De aceea, sistemul își păstrează arhitectura, ca și conceptele de bază. Noutatea constă în actualizarea continuă a datelor, privind performanțele sistemului și replanificarea dinamică a job-urilor (un mod de echilibrare dinamică).

Planificarea job-urilor se execută la intervale fixe de timp ( de la 15 sec până la 2 min., funcție de configurație). Atunci, planificatorul determină importanța relativă a job-urilor din cozile de așteptare și a celor în execuție, ca și necesarul lor de resurse. De asemenea, clasifică gazdele pentru a determina care gazdă va primi, în acest interval, primul job, care al doilea ș.a.m.d. Un factor important în ordonarea mașinilor este încărcarea lor. Apoi, GRD lansează în execuție job-uri noi, suspendă unele job-uri, crește sau scade cantitatea de resurse alocate job-urilor în execuție, sau menține status quo-ul.

Daca se folosește algoritmul de planificare cu partajare, calculul ține cont de utilizarea consumată a resurselor de către acel job, utilizator sau departament. Dacă nu, se clasifică toate job-urile în execuție sau așteptare și se execută în ordinea priorităților.

Strategia de planificare a job-urilor, folosită de GRD, se exprimă ca o combinație ponderată a patru algoritmi, dintre care primii doi sunt de rutină:
• Pe baza partajării;
• Funcțional;
• Cu termen de încheiere;
• Override.

Algoritmul, care se bazează pe conceptul de partajare, încearcă să aloce fiecărui utilizator partea de resurse la care este îndreptățit, în cursul unui interval de timp prestabilit. Realizează acest lucru prin ajustarea continuă a cantității de resurse alocată pentru intervalul care urmează. Acest mod de planificare, cu feed-back, se definește la ni vel de utilizator, sau proiect, dar niciodată simultan.

Planificarea funcțională, sau cu priorități, asociază importanța unui job cu utilizatorul său, proiectul, departamentul sau clasa din care face parte. În cadrul acestei politici se folosește și partajarea. Astfel, dacă un utilizator X are 200 părți, iar Y are numai 100, job-ul lansat de X va avea un număr dublu de bilete față de job-ul lansat de Y.

GRD este setat să folosească fie o politică bazată pe partajare, fie funcțională, fie amândouă. Ele pot fi combinate în orice proporție, cu ponderi de la 0 la 1. În afara acestor poli tici de rutină, se pot lansa în execuție job-uri cu termene de încheiere. Administratorii și operatorii pot crește (override) în mod temporar importanța unui job, proiect sau utilizator, fără a influența configurația de ansamblu a sistemului. În plus, un utilizator își poate stabili el prioritățile între job-urile sale. El poate stabili că, de exemplu, job-ul 5 este cel mai important, iar celelalte 4 sunt de aceeași importanță, mai mică decât a job-ului 5.

Politicile de planificare se implementează cu bilete. Fiecare algoritm are un pool de bilete, de unde alocă bilete job-urilor sosite în sistem. De exemplu, dacă pentru algoritmul cu partajare sunt alocate 1000 bilete și nu există un istoric al execuției, job-ul unui utilizator, care are alocat 1% din sistem, va primi 10 bilete. Pentru un utilizator cu 5%, se vor aloca 50 bilete. Fiecare politică activă alocă un număr de bilete fiecărui job nou. Prin bilete se măsoară ponderea fiecărei politici. De exemplu, dacă algoritmii funcțional și pe baza partajării au un număr egal de bilete, ambii vor determina în mod egal importanța unui job. Apoi, unui job i se pot aloca noi bilete pentru a indica un termen apropiat sau o importanță sporită. Fiecare job în execuție poate câștiga bilete, în situația expusă anterior, pierde bilete, de exemplu, deoarece a folosit mai mult decât îi este partea, sau poate păstra același număr de bilete în cursul fiecărui interval de planificare. Când un job părăsește sistemul, biletele sale acordate de politicile de partajare și funcțională sunt returnate în mod cores punzător, în timp ce biletele alocate pentru override sau îndeplinirea unui termen sunt pur și simplu eliminate – încă o expresie a caracterului dinamic al sistemului de planificare.

SPINEware

SPINEware a fost realizat la Laboratorul național aero-spațial olandez (NRL) cu scopul principal de a crea un software distribuit care să adapteze infrastructura de calcul nevoilor unui inginer proiectant. Evident, necesitatea sa a fost impusă de situația actuală, când inginerul trebuie să se adapteze el la o structură de calcul în permanentă evoluție și din care nu folosește decât un anumit procentaj.

SPINEware permite dezvoltarea și utilizarea operațională a unor medii de lucru ce pot fi atât generale, cât și specifice, plasate pe rețele de calculatoare. Utilizatorul primește din rețea instrumente (tools), programe, date și documentație, ca și cum ar fi furnizate de un singur calculator. El creează, într-o fereastră grafică, prin drag-and-drop aplicația sa, o lansează în execuție, o salvează, o poate relua, fără a ști sau avea nevoie să cunoască pe ce mașini se află plasate componentele aplicației sale. Primul mediu de lucru creat a fost pentru simularea numerică a curgerii fluidelor (CFD), într-o rețea formată dintr-un supercalculator (NEC SX4), mainframes, servere și mai mult de 1000 stații de lucru, PC-uri și terminale

SPINEware permite utilizarea instrumentelor native (specifice sistemului de opera re), comerciale împreună cu cele create de către utilizator. Există un editor gra fic care permite scrierea de tools wrappers, fără a fi deci nevoie de a scrie scripturi shell. Aceste interfețe sunt utile la mascarea detalii lor specifice privind activarea instrumentelor native și permit utilizatorului activarea instrumentelor într-un mod uniform.

De asemenea, produsul are o componentă puternică pentru gestiunea informației la nivel de directoare și fișiere, organizarea și manipularea fișierelor de date, a formelor electronice cât și verificarea versiunii soft-ului.

Toate componentele enumerate sunt conectate prin middleware cu resursele de calcul și de informație disponibile în rețea, formând astfel un tot unitar, care ar putea fi considerat sistemul de operare al "metacalculatorului". Sarcina principală a middleware-ului este de a gestiona resursele disponibile, astfel încât să se asigure un mo del de calculator unic, ale cărui resurse (în rețea) sunt exploatate la maximum.

La acest sistem nu este vorba numai despre o gestiune omogenă și unică a resurselor unei rețele eterogene, ci de o filozofie nouă care încearcă să realizeze o adaptare a organizației la realitățile vieții [4].

Pentru a face față competiției globale, o întreprindere trebuie să-și crească în permanență know-how-ul, capacitatea de a utiliza această cunoaștere într-un mod flexibil în procesul de producție și, la un nivel superior, dobândirea de know-why pentru a asigura posibilitatea întreprinderii de a se adapta unui mediu în schimbare.

Combinația dintre know-how, know-why și aplicarea acestora reprezintă competența întreprinderii. Adaptarea rapidă la schimbare înseamnă:
• Atragerea persoanelor potrivite;
• Instruirea și perfecționarea forței de muncă;
• Introducerea unui stil de lucru în întreprindere, orientat spre competență și crearea unor instrumente specifice.

În timp ce întreprinderile caută continuu ingineri competenți, aceștia caută și ei locuri de muncă, care să le crească valoarea de piață. Situația care se obține este una a unei fluctuații permanente a forței de muncă. Poziția întreprinderii este dictată de sinergia dintre competența individuală a inginerilor și competența acumulată în întreprindere. Dacă mai de mult, competența întreprinderii era conservată prin stabilitatea forței de muncă, acum ea trebuie conservată prin mijloace informatice – software, date, documente, organizate în mod corespunzător. Iată una din aplicațiile posibile ale unui produs ca SPINEware, crearea, conservarea și dezvoltarea competenței întreprinderii. Rezultatul este oarecum neașteptat, dacă ținem cont că s-a plecat din domeniul calculului de înaltă performanță (paralel și distribuit) și s-a ajuns și la gestiunea calității.

Bibliografie

[1] Codine User’s Guide

[2] GRD User’s Guide

[3] E. Baalberg, SPINEware: a practical and holistic approach to metacomputing, in P.Sloot, M.Bubak, B.Hertzberger (editori), High-Performance Computing and Networking, HPCN Europe 1998, Springer verlag 1998, p.1008-1011.

[4] W.Loeve si M.E.S. Vogels, Competence management in engineering environments with HPCN, in P.Sloot, M.Bubak, B.Hertzberger (editori), High-Performance Computing and Networking, HPCN Europe 1998, Springer verlag 1998, p.13-22.


BYTE România - septembrie 1998


(C) Copyright Computer Press Agora