|
|||||||||||||
|
|
||||||||
Zoran Pavlović | |||
Paralelni svet |
|||
Više se ne postavlja pitanje da li ćete, već kada ćete početi da paralelizujete vaše aplikacije ako želite da izvučete maksimalne performanse iz vašeg hardvera. Upoznajmo Intel-ovu alatku VTune koja će vam pomoći u paralelnom svetu... |
U poslednjih 20 godina korišćenje paralelizma je omogućilo dostizanje vrhunskih performansi na novim arhitekturama Intel procesora. Murov zakon, po kome se broj tranzistora u procesorskom čipu duplira na svakih 18 meseci, približio se svom limitu zbog fizičkih granica, kao i potrošnje energije i zagrevanja. Intel je zato posegao za novom tehnikom postizanja viših performansi, podelom procesorskih zadataka između dva ili više procesora. Pogled je sada okrenut ka programerima, koji bi trebalo da menjaju svoje kompjuterske veštine i načine programiranja, i da se sve više oslanjaju na višenitne (multithreading) tehnike, kako bi iskoristili prednosti koje nude današnji čipovi sa više jezgara. Koriščenje niti u aplikacijama doživljava sve veću primenu u programerskom svetu, ali postoje i određena pravila kojih se moramo pridržavati, posebno kada koristimo ovu tehniku. Uprkos vremenu i naporima koje ste uloži u razvijanju Microsoft .NET ili Java aplikacija pisanih sa više niti (multithreaded), postoji mogućnost da se aplikacija ne ponaša onako kako bismo hteli. Ponekad aplikacije mogu raditi sporije na multi‑core ili multithreaded sistemu, nakon što smo uveli niti. Dakle, potreban nam je odgovarajući debagerski alat. Koliko niti je dovoljno?
Odabir broja niti u aplikaciji je jako bitno, ali i teško pitanje. Ukoliko kreirate mnogo niti, vaš sistem će imati problema sa obradom i umesto poboljšanja performansi, doživećete pad, sporiju aplikaciju nego kada ste krenuli bez niti! Trenutno važeća teoretska formula za određivanje broja niti glasi: NumThreads = NumCPUs / (1 – BP) gde je BP – vremenski procenat blokiranja. Ovo u praksi znači, da će broj niti biti jednak odnosu broja procesora sa vremenom potrebnim da se posao uradi. Nakon što smo kreirali aplikaciju sa više niti, neophodno je testiranje i pronalaženje uskih grla u procesu, i eventualnih problema prilikom izvršavanja. Pažljiva analiza u runtime modu je neophodna da se pronađe problem, jer se inače ti problemi ne mogu videti jednostavnim pregledom koda. Zato je neophodno da koristite alate za praćenje rada sistema kao i u svetu sve korišćeniji softver po imenu Intel VTune Performance Analyzer. VTune vam omogućava da razumete kako se ponaša vaša aplikacija u odnosu na ceo sistem, i to prikazuje grafički na nekoliko načina. U ovom tekstu ćemo vam prikazati samo nekoliko najkorisnijih funkcionalnosti analize vašeg koda, pisanog u višenitnoj tehnologiji, a vama stoji na raspolaganju demo verzija ovog softvera koju ćete preuzeti sa www.intel.com/software . Intel VTune Performance Analyzer radi na Windows i Linux operativnim sistemima, izuzetno lako se integriše u .NET i Java razvojna okruženja, i podržava sve Microsoft i Intel kompajlere: C, C++, Fortran...T akođe podržava Microsoft .NET 3.0 i programske jezike: C#, Visual Basic i Java. Opisaćemo njegov rad u Microsoft Visual Studio .NET okruženju. Nakon instalacije, otvorite Microsoft Visual Studio i videćete na meni baru novu stavku Tuning. Novi pogled na vaš kod
Sada pokrećete svoju .NET aplikaciju, a onda i neki od VTune alata koji će snimati kako aplikacija radi. Sampling View je prvi način pregleda, gde VTune u određenim vremenskim razmacima presreće i snima odnos procesora i operativnog sistema. Na slici je prikazan grafik koji pokazuje procese, module i funkcije koji uzimaju najviše vremena. Na osnovu Sempling view moda, ulazi se u sledeći pogled, Sampling over time, koji vam pruža pogled na različite niti aplikacije koja je pokrenuta – proverite da li sve angažovane niti izvršavaju prosečno istu količinu posla ili ne. Takođe, možete videti i da li postoji sinhronizacija između niti ili ne. Na prikazanom grafikonu vidite da testirana aplikacija nije dobro izbalansirana – nit obojena crvenom bojom ima mnogo više posla od niti prikazanih zelenom bojom. Call Graph Mode u obliku stabla prikazuje pozivne sekvence funkcija u vašoj aplikaciji. Tako stičete bolju predstavu o povezanosti funkcija i saznajete koliko svaka funkcija potroši resursa tokom svog rada, a koliko na pozive drugih funkcija. Crvenom bojom su obeležene putanje u aplikaciji koje troše najviše vremena. Ovo je naročito važno u managed runtime okruženjima, gde možete razumeti interakciju funkcija i videti da li ima funkcija koje su pozvane, a da vi to u kodu možda niste predvideli. Poboljšanje programskog koda
Iz VTune‑a odabirom funkcije koju hoćete da optimizujete/promenite možete ući direktno u svoju .NET aplikaciju. Sledeći grafik pokazuje linije koda koje treba optimizovati. Nakon što ste promenili program, ponovo pokrećete aplikaciju i testirate je kroz VTune. Ova ciklus nastavljate sve dok ne postignete željene rezultate: svaka nit treba da radi približno istu količinu posla, ne postoje skrivene beskonačne petlje u programu, a pozivi funkcija su optimizovani. Ovo je bio samo mali prikaz mogućnosti ovog sve češće korišćenog alata kompanije Intel, a vama savetujemo da preuzmete probnu verziju, instalirate i optimizujete vaše aplikacije zasnovane na paralelnom procesiranju. Za dodatne informacije možete se obratiti ovlašćenom distributeru i trening centru Intel‑a za Srbiju i Balkan, firmi „Pavlović Consulting d.o.o“ Korisne adrese:
Pavlovic Consulting
|
|