You are on page 1of 14

Szakmai gyakorlat beszmol

Thaler Benedek
EDDO10

2012

1.

Bevezet

10 hetes nyri szakmai gyakorlatomat a Morgan Stanley budapesti irodjban vgeztem mint informatikus gyakornok. A program keretben egy csoport munkjba kellett bekapcsoldni egy manager vezetse alatt. A program cljai kztt szerepel a vllalattal val ismerkeds szemlletbeli, hierarchikus s projektszervezsi tekintetben , a csapat munkjhoz kapcsold projekt vgigvitele valamint angolnyelv kommunikcis fejlds. A projekt rtkelse a manager ltal elre denilt clok gyelembevtelvel trtnt. A kvetkezkben ismertetem a projektfeladatot: motivcijt, cljait, a fejleszts sorn felmerl kihvsokat s ezek megoldsait, valamint az elkszlt alkalmazs architejtrjt s szolgltatsait, felhasznlsi lehetsgeit s mdjt, tovbbfejlesztsnek tvlati terveit. A vllalati titkok vdelme rdekben a bels fejleszts knyvtrak s alkalmazsok cljait nem rszletezem, azok nevt elhallgatom vagy megvltoztatom. A tovbbiakban a projekt keretben elksztett alkalmazsra deadlockHunter nven fogok hivatkozni.

2.

Motivci

A befogad csapatom feladata egy komplex tzsdei kereskedelemhez kthet meglehetsen sokrt alkalmazsstack egy szeletnek fejlesztse, karbantartsa, integrcija s supportlsa volt. A legnagyobb komponens egy C++ nyelven rt szerveroldali alkalmazs tovbbiakban GlobalContractor mely egy MIMO rendszerrel modellezhet: Sok forrsbl gyjt adatokat melyeket transzformci utn tbb elzet fel publikl. A multi input-multi output modell real time mkdsnek biztostsa rdekben az alkalmazs folyamatosan tbb egymstl klnbz feladat, de azonos adathalmazon dolgoz szlat alkalmaz. Sajnlatos mdon a tbbszl szervezs magval von nhny kellemetlen problmt, gy tbbszr elfordult, hogy egy j komponens bevezetsekor a futs semmiflekppen sem determinisztikus mdon holtpontra jutott. A holtpont megjelense termszetesen production krnyezetre koncentrldott, gy az ott elfordul problmk tovbbi teszteli rk felldozst kveteltk. Egy olyan megoldsra volt szksg, ami a holtpont jelleg problmkat teljes egszben megsznteti vagy megszntethetv teszi, valamit bizonyossgot ad arra, hogy a vizsglt applikci holtpontmentes amennyiben valjban az.

3.

Megolds

A clok denilsa utn teljesen szabad kezet kaptam a megolds megtervezsre s implementlsra. A problma ltalnostsa a kvetkez: "Egy ltez rendszerben kell holtpontokat megelzni vagy elkerlni". A szakirodalom szmos lehetsget kvn ennek az ltalnostott problmnak a megoldsra, gymint "Tervezzk a rendszert holtpontmentesre" vagy "Biztostsuk az erszakos erforrselvtelt" valamint "Erforrsokat csak elre denilt sorrendben zroljunk". Mivel a konkrt cl egy ltez alkalmazs kijavtsa volt, tervezsi idej megoldsok nem jhettek szba. A natv zrak ltal vdett mdosthat struktrk preemtv hozzfrsek biztostsa egy olyan feladatnak tnt, ami tlzottan sok mdostst ignyel a javtand programban, tovbb temez feladatokat lt el, ami blokkolst, szksgkppen zrakat ignyel, gy a helyzetnkn nem segt. Az alternatvk mrlegelse utn a kvetkez tervezi dntst hoztam: Az elksztend alkalmazs hajtson vgre egy mrst a javtand alkalmazson, s a mrs eredmnye kppen ksztsen egy jelentst, amely rszletezi a megtallt holtpontokat (ill. holtpont lehetsgeket) s segti a karbantart programozt a hibt okoz metdusok lokalizlsban. A holtponttal fenyeget szitucik azonostsnak alapja a dinamikusan denilt zrolsi sorrend megsrtse. A megkzelts elnye, hogy a mrs denilhat gy, hogy az ksbb tetszleges alkalmazst ki tudjon szolglni, valamint nem, vagy csak kis mrtkben ignyli a mrt alkalmazs mdostst. Htrnya, hogy csak diagnosztizl, a holtponthelyzetek tnyleges kikszblse emberi beavatkozst ignyel. A mdosts helynek megbecslsben a mreszkz segti a programozt. A mrs lehetv ttelhez vlasztanom kellett, hogy dinamikus vagy statikus kdanalzist vgezzen a program. Mivel a statikus kdanalzis implementlst arnytalanul nagy feladatnak tltem (melyet nem tudtam volna kivitelezni a rendelkezsre ll 10 ht alatt), gy a dinamikus kdanalzis mellett dntttem. A dinamikus mdszer szksgess teszi a mrt alkalmazs mdostst s tfogbb tesztelst ignyel, viszont a megvalstsa nagysgrendekkel egyszerbb. A mrs formai szempontbl hrom fzisra tagoldik: adatgyjts, a gyjttt adat rtelmezse s feldolgozsa, eredmnyek megjelentse. A kvetkezkben formalizlom ezen fzisokat anlkl, hogy kitrnk architekturlis vagy implementcis rszletekre.

3.1.

Adatgyjts

Mivel az alkalmazsban kialakul zrolsi sorrendek felvtelre van szksg, elg, ha a futs sorn regisztrljuk az egyes zrak egymsutnisgt. A holtpontok detektlst komolyan megnehezti, hogy azok elfordulsa gyakran egy versenyhelyzet kimenetelnek fggvnye, a nemdeterminisztikus viselkeds nagyon megnyjtja a reproduklsra fordtand idt valamint nagyon krlmnyes arrl ismtelt futtatsokkal megbizonyosodni, hogy a rendszer garantltan holtpontmentes. A deadlockHunter nagyon fontos jellemzje, hogy a fent ismertetett bizonytalansgot kikszbli. Az erforrsok zrolsnak s elengedsnek egymsutnisgt szlanknt kln-kln trolkba menti. Csak logikai sorrendet trol, az idztsi paramtereket gyelment kvl hagyja, gy lehetv tve azt, hogy egy ksbbi fzisban a szlak egyenknt rgztett aktivitst idfggetlenl aggregljuk. A mrs elvgzshez esemnyek rgztsre van szksg. Esemny vltdik ki minden egyes alkalommal, amikor egy szl egy erforrst zrol vagy felszabadt. Minden esemnyhez logikailag kt informcit szksges trolni: Esemny tpusa: Erforrs zrolsa vagy felszabadtsa trtnt Erforrs azonostsa: Brmi, ami alapjn az erforrs egyrtelmen azonosthat a rendszerben, pldul a zr memriacme. A deadlockHunter ezen fell trolja a fjlt, a metdust s a kdsort, ami az esemnyt kivlt utastst tartalmazza, gy megknnytve a felhasznl szmra az eredmnyek ksbbi rtelmezst. Teht a mrs a kvetkezkppen formalizlhat (csak a legszksgesebb jellemzkre szortkozva, eltekintve a ksbb trgyaland implementcis rszletektl): Mrs: { Szl[] szlak } Szl: { Esemny[] esemnyek } Esemny: { EsemnyTpus tpus, Erforrs erforrs } o o EsemnyTpus: boolean Erforrs: integer o

3.2.

Adatfeldolgozs

A fent denilt adatstruktra feldolgozsa utn egy irnytott G grfot szeretnnk kapni eredmnyl, mely a kvetkez kppen denilhat: v V ( G ) v ltal reprezentlt erforrs a mrs folyamn zrolsra kerlt e : (u, v) E( G ) (u, v V ( G ) egy szl az u ltal reprezentlt 3

erforrst kzvetlenl v ltal reprezentlt erforrs zrolsa eltt zrolta s v zrolsakor mg nem szabadtotta fel. ) Az gy denilt grf elnye, hogy szigoran az esemnyek sorrendisgt tekintve kpes az egymstl idben tvol vgbemen esemnyeket szlfggetlenl sszefslni, megoldva ezzel a versenyhelyzetek nehz vizsglhatsgnak problmjt. Tekintsk a kvetkez mrsi pldt, melynek vizulis reprezentcija az 1. brn lthat: Szl1: Szl2: zr(A), zr(B), el(B), zr(C), zr(D) zr(A), zr(B), el(B), zr(D), zr(C)

1. bra. Plda mrsbl elll grf

3.3.

Megjelents

A feldolgozott adatok clja, hogy a karbantart szmra vilgoss tegye, hogy elfordulhat-e holtpont a mrt alkalmazsban (azaz van-e kt olyan szl, ami azonos erforrsokon klnbz zrolsi sorrendet alkalmaz) s ha van, akkor segtse a karbantart szmra a problms programrszek azonostst. Ezen cloknak megfelelen a megjelents kt rszre oszlik. Egyrszrl az alkalmazs biztost egy grfot (lsd 1. bra), mely az erforrsok zrolsnak sorrendjt brzolja. llts: Amennyiben a ltrejv grf egy fa, a vizsglt erforrsok klcsns kizrst okoz zrolsok nem juttatjk holtpontra a mrt alkalmazst. Bizonyts: Indirekt mdon. Tegyk fel, hogy az alkalmazst lemrtk, nem jutott holtpontra, a mrs eredmnyekppen elll grf egy fa s megfelel idzts esetn mgis elfordulhat holtpont. A holtpont kialakulsnak felttele az egymsra vrs, vagyis T1 szl zrolta A 4

erforrst s vr B-re mg T2 szl zrolta B erforrst s vr A-ra. Mivel ms idztsi paramterek mellett ez a kt szl nem jutott holtpontra a mrs folyamn s sikeresen zroltk az erforrsokat, az eredmnygrf dencija miatt A s B erforrst reprezentl cscsok megjelennek s kztk irnytott t tallhat, teht a grfban kr van, teht a grf nem fa, gy ellentmondsra jutunk. A felhasznl a mrs utn ellenrzi a grfot; amennyiben az fa, az alkalmazs a fenti lltsnak megfelelen a mrt lefuts folyamn semmilyen idztsi paramterek mellett nem futhat holtpontra, teht nincs tovbbi mdostsra szksg. Ha az eredmnygrf nem fa, azaz tartalmaz irnytott krt, akkor fennll a holtpont elfordulsnak veszlye, tovbbi vizsglatra van szksg. Az rintett erforrsok vizsglatt segti a megjelentst vgz fellet msik rsze. Az egyes erforrsokat azonost alapjn mely megjelenik a grf cscsain kereshetjk ki a gyjttt adatok kzl, gy kpet kapva arrl, hogy mely metdusok mentn trtntek az egyes zrolsok. A klnbz zrolsi hierarchikat elemezve a karbantart megllapthatja, hogy melyik szl zrsorrendje tekinthet hibsnak, lokalizlva ezzel a mdostand kdrszletet.

4.

Implementci

Az elzekben a motivcira adott absztrakt vlaszt rszleteztem, kitrve a megolds helyessgnek bizonytsra s rtelmezsre, szortkozva a felttlenl szksges logikai komponensekre, eltekintve az implementcis rszletektl ott, ahol ez lehetsges volt. A kvetkezkben az elksztett deadlockHunter programot ismertetem elszr architekturlis szinten, majd vgigmegyek az egyes komponensek implementcis rszletein, kln kiemelve a felmerl kihvsokra adott vlaszokat.

4.1.

Architektra

A fent speciklt alkalmazs megvalstsa architekturlis szempontbl kt f rszt tesz szksgess; Egy adatgyjtsrt s egy megjelentsrt felels komponenst. A deadlockHunter programban ez egy knyvtr (shared object) s egy binris llomny formjban realizldik. Az implementci rdekessge, hogy a kt komponens programkdja tlnyom rszben megegyezik. A 2. bra szemllteti a komponensek kommunikcijt. A mrst vgz komponens a gyjttt adatokat sorostja s egy XML dokumentumba rja. A kinyert dokumentumot a megjelent komponens beol-

2. bra. Mrs komponenseinek elrendezse vassa s azokbl egy grfot kszt valamint egy keres felletet biztost. A tovbbiakban a kt komponens jellemz rszeit mutatom be rviden.

4.2.

Adatgyjts

Az adatgyjtst gy kellett megvalstani, hogy a GlobalContractor alkalmazsba knnyen integrlhat legyen. A kdon vgzett elzetes vizsglat sorn kiderlt, hogy minden krdses erforrs tbbnyire rekurzv mutexek preprocesszor makrk egy szk halmaznak segtsgvel van zrolva s felszabadtva, a kvetkez kt idima egyikvel: Guard idiom: A makr egy osztlyt pldnyost a stacken. A konstruktor zrolja a megadott erforrst, a blokk vgre rve a stack lebontsakor pedig a destruktor felszabadtja azt. Acquire/Release idiom: Kln makrk llnak rendelkezsre az erforrs zrolsra s felszabadtsra, melyek az tadott cmen tallhat struktrn hvnak elre denilt metdusokat (acquire() s release()). Lthatan mindkt megolds knnyen kibvthet gy, hogy a zrols s felszabadts tnyt egy kls meggyel fel jelezze, anlkl, hogy a makrdenciktl eltekintve a mrt rendszeren brmilyen vltoztatst kne eszkzlni. Az els idima esetn egy tovbbi osztly pldnyostsa, a msodik esetben egy-egy metdus meghvsa elegend. A makrk jradenilst egy fordtsi idben llthat kapcsolhoz kthetjk, gy az alkalmazs futsidej terhelst kizrlag a mrs sorn szenved el, egyb esetekben a teljestmny a mdostatlan vltozattal megegyezik (mivel ugyan az a programkd kerl fordtsra).
#ifdef DEADLOCK_HUNTER DH::MutexGuard dh_##GUARD(MUTEX); APP::MutexGuard GUARD(MUTEX); #else APP::MutexGuard GUARD(MUTEX); #endif

Ezeket a jelzseket fogadja a mrs sorn az alkalmazshoz linkelt knyvtr. Minden szl szlspecikus trban (thread local storage) elrhet egy egyke mintt kvet (singleton) osztly pldnya, ami a jelzseket trolja. A szlspecikus trol hasznlatnak elnye, hogy az esemnyek regisztrlsa sorn a versenyhelyzetek gyelmen kvl hagyhatak (mivel minden szl sajt memriaterlett mdostja). Az egyes loklis trolkat egy globlis trol fogja ssze. Elsdleges feladata a mrs vgn a gyjttt adatok sorostsa s fjlba rsa. Ezen globlis pldny felletn keresztl szksg esetn mg a mrs futsa kzben is diagnosztikai informcikhoz juthatunk (lsd Megjelents) valamint tmenetileg felfggeszthetjk vagy jraindthatjuk az adatgyjtst. A GlobalContractor alkalmazs esetben a mrs vezrlse egy adminisztrcis felletbe integrldott.

4.3.

Megjelents

A megjelentst vgz program feladata a mrs sorn elzleg sorostott adatok beolvassa s rtelmezse. A feldolgozott adatokbl egy grfot pt (az erforrsok azonostsra a memriacme szolgl), amibl egy graphviz .dot formtum struktrt kszt, ami alapjn a graphviz program a grfot brzol kpfjlokat kpes ellltani. A program ltal biztostott formtumok kzl rdemes az svg formtumot vlasztani, s azt Google Chrome bngszvel megtekinteni. Brmely ms tesztelt kombinci (megjelents: Mozilla Firefox, Google Chrome, Microsoft Internet Explorer, Windows Image and Fax Viewer; formtumok: jpg, png, svg) elfogadhatatlan hibkat okozott a megjelentsben, a kpfjlok szokatlanul nagy mrete miatt (pl.: 20.0005000 pixel). A grf egyes cscsain megjelen feliratok a cscs ltal reprezentlt erforrst denil osztly neve tallhat amit a program a kapcsold fjl neve alapjn hatroz meg egy egyedi azonostval kiegsztve, pl.: ModelProxy.23. Az osztly nv megjelentsre azrt esett a vlaszts, hogy a program futsa a tapasztalt karbantart szmra knnyen kvethet legyen. Az egyedi azonostra az egyes osztlyok klnbz pldnyaiban denilt klnbz erforrsok megklnbztetse miatt van szksg. A fellet ezen tl egy keresfelletet biztost, ami a grfon megjelentett nevek alapjn keres az elemzett adatok kztt, s megjelenti a keresett erforrsra jellemz zrolsokat s krnyezetket, szlanknt csoportostva. A szlak azonostsa platformfgg. Linux platformon a szlhoz rendelt LWP jelenik meg. Ennek elnye, hogy a gdb program ugyanezt az azonostt hasznlja, gy pldul egy coredump elemzse sorn az egyes szlak knnyen azonosthatak.

Az egyes esemnyek szveges reprezentcija egy formtumsztring megadsval kongurlhat. A megjelenthet mezk a kvetkezek: %t Esemny tpusa (zrols vagy felszabadts) %f Esemnyt kivlt metdus neve (GCC fordt hasznlata esetn a __PRETTY_FUNC__ kiegszts hasznlatval) %F Kivlt utastst tartalmaz fjl neve %l Kivlt utastst tartalmaz sor szma %a Erforrs memriacme Az egyes mezk tetszlegesen kombinlhatak s kiegszthetek ms karakterekkel. Thread #12345 > lockFirst() (App.cc:186) > lockSecond() (App.cc:219) [*] < lockSecond() (App.cc:219) [*] < lockFirst() (App.cc:186) Thread #54321 > lockSecond() (App.cc:219) [*] > lockFirst() (App.cc:186) < lockFirst() (App.cc:186) < lockSecond() (App.cc:219) [*]

3. bra. Keress eredmnye (plda). A *-al jellt sorok a keresett erforrsra vonatkoz esemnyek

5.

Optimalizls

A deadlockHunter a fent lert formban funkcionlisan ksznek tekinthet, azonban hasznlhatsg tren a gyakorlatban kvnnivalkat hagy maga utn. A kezdeti tesztelsek megmutattk, hogy egy igazn komplex alkalmazs 8

hosszas mrse komoly teljestmnybeli problmkat okozhat. A konkrt problmkat a kvetkez alfejezetekben ismertetem a megoldsaikkal egytt. Amikor ezek a problmk felmerltek, a kiutat nem a kd mikrooptimalizlsban kerestem, egy-egy gpi utasts megsprolsa itt-ott nem segtett volna hanem az adatstruktrk s algoritmusok javtsban. Ennek megfelelen aprlkos kdoptimalizlsra nem kerlt sor, mivel nem volt r szksg.

5.1.

A mrs optimalizlsa

Az egyik problmt a mrs folyamn az esemnyek vlogats nlkli regisztrlsa jelentette. A mrt alkalmazsban gyakran elfordult a kvetkez minta: Egy nagy elemszm listn iterlt, minden elem feldolgozsa eltt az elemet zrolta egy megfelel mutexen keresztl, majd a feldolgozs vgeztvel a zrat elengedte. Ez sok esemny bejegyzst jelentette. Mivel ezeket az itercikat az alkalmazs minden gerjeszts mellzse esetn, "resjratban" is folytatta, a trolt esemnyek szma nagyon gyorsan nvekedett, hamar tllpve a rendelkezsre ll memrit (A tesztkrnyezetben 16 GB-ot). A trivilis megoldsa a problmnak, hogy a trolt esemnyek szmnak fggvnyben azokat idnknt a httrtrra mentjk s a memribl eltvoltjuk. Ennek a megkzeltsnek tbb htultje is van: Tovbbra is rengeteg esemnnyel kell majd foglalkozi a megjelents sorn, ami ott jabb teljestmnyproblmkhoz vezethet, a hatalmas kimeneti fjlok kezelse nehzkes s archivlsuk kltsges valamint a folyamatos fjlmveletek feleslegesen lasstjk a mrst. Egy jobb megoldshoz jutunk, ha a fent emltett mintt gyeljk meg. A ciklus ismtelt futtatsa jbl s jbl ugyan azokat az esemnysorokat eredmnyezi. Egyszeren addna, hogy akkor ezeket az ismtlseket csoportostsuk, s sproljuk meg pldul az ismtld stringek trolst egy string cache hasznlatval. Ez egy letkpes elgondols, azonban az esemnycsoportok sszehasonltsa jabb felismershez vezet el: Kizrlag az idztsi paramtereikben klnbznek, vagyis egy olyan jellemzben, amit szndkosan nem vesznk gyelembe mivel a grfalkots sorn ez az informci eldobsra kerl. Teht az egyes esemnycsoportok kzl egy tetszleges kivtelvel a tbbi eldobhat, anlkl, hogy vesztennk a mrs pontossgbl. Ennek megfelelen az esemnyeket regisztrl komponens a kvetkez kppen vltozik: 1. Kezdetben egy res csoportlistval s egy res tmeneti listval jn ltre 2. A berkez esemnyeket az tmeneti listban rgzti 9

3. A csoport vgn az tmeneti listt sszehasonltja az sszes eddigi csoporttal. Ha tall olyan csoportot, amely megegyez sorrendben tartalmaz az tmeneti csoportban tallhat esemnyekkel ekvivalens esemnyeket, s csak azokat, akkor az tmeneti listt eldobja, s jat kezd. Egybknt az tmeneti listt elmenti j csoportknt, s ezutn rti. Hogy a megolds mkdhessen kt fogalmat kell denilni: Mikor van egy csoportnak vge, valamint mikor mondunk kt esemnyt ekvivalensnek. Mindkt fogalom nagyon komolyan befolysolja a mrs kimenetelt, a dencikat gy hatroztam meg, hogy azok segtsk a GlobalContractor mrst. Ms alkalmazs esetn elfordulhat, hogy egy alkalmasabb denci tallhat. A csoportok hatrnak meghatrozsra a szl ltal zrva tartott erforrsok szmt hasznltam fel. Ehez nyilvn kell tartani a mrszmot, ami konstans idben megtehet. Amennyiben a zrolt erforrsok szma elr egy elre meghatrozott korltot, az aktulis csoport lezrsra kerl. A korltot alkalmasan kell megvlasztani, a gyakori mintk fggvnyben. A GlobalContractor esetben ezt a korltot a 0 szinten hatroztam meg. Amennyiben egy szl elenged minden erforrst, zroldik az addigi tevkenysge. (Ez a vlaszts elsegtette azt is, hogy a csoportok hasznlata egy teljesen ms helyzetben nyjtson segtsget) Ha elfordul, hogy egy szl futsnak kezdetn maghoz ragad egy erforrst, s azt hossz idn keresztl nem engedi el, mikzben sok klnbz tevkenysget hajt vgre sok esemnyt generl akkor megfontoland a korlt felemelse, hogy az gy kialakul nagymret csoportokat feldaraboljuk. Ennek ra van, 0-tl klnbz korlt hasznlata tovbbi vintzkedseket ignyel, egy esetleges hibs mrst megelzend. Az egyes esemnyek kztti egyenlsg opertor denilsa sorn ugyancsak rdemes gyelembe venni az alkalmazs jellegzetessgeit. Amennyiben ezt nem tesszk meg, a vlasz trivilisan addik: Kt esemny megegyezik, ha minden rla trolt informci megegyezik (pl.: fjl, sor s memriacm). Ez a vlaszts helyessgt tekintve megfelel, viszont a kritrium relaxlsval knnyebben feldolgozhat eredmnyt kapunk. Bizonyos esetekben elfordulhat, hogy megengedhejk a memriacm klnbzsgt (s csak a fjlt valamint a sort ellenrizzk). Ez a vlaszts a legtbb esetben nem helyes, viszont alkalmanknt mgis j s knnyen elemezhet grfhoz vezet minket, amin jobban meggyelhetek az egyes zrolsi mintk. A GlobalContractor esetben, ms optimalizcik hasznlata mellett a vlaszts a fjl nevt, a forrskd sorszmt s az erforrs memriacmt gyelembe vev egyenlsg opertorra esett. Az optimalizci megvalstst kveten a mrkddal elltott alkalmazs memriahasznlata alig trt el az alaprtelmezett mkds kzben meg10

gyelhet ignyektl, s resjratban semmilyen emelkedst nem mutatott, gy teljes mrtkben elrte cljt.

5.2.

A megjelents optimalizlsa

Egy kiterjedt teszt futtatsa mg a fenti optimalizci gyelembe vtelvel is nagyon sok regisztrlt esemnyhez vezet, ami a grf reprezentcit ttekinthetetlenn teszi. A problma forrsa, hogy olyan esemnyek is megjelennek, amelyek nem vesznek rszt holtpont kialaktsban. Az ilyen esemnyeket reprezentl cscsokat eltntethetjk, ha az eredmnygrf levl cscsainak levgst addig ismteljk, amg van ilyen cscs. llts: A grf leveleinek ismtelt levgsval nem vesztnk el lehetsges holtpontra utal mintt. Bizonyts: Korbban belttuk, hogy a grf konstrukcija miatt csak akkor alakulhat ki holtpont az alkalmazsban, ha az irnytott grf nem fa, vagyis ha irnytott krt tartalmaz. Teht amg nem vgunk le olyan cscsot, ami egy irnytott kr eleme, addig nem vesztnk el rtkes informcit sem. Mivel egy cscs pontosan akkor levl, ha nincs belle kimen irnytott l, ezrt egy levl nem lehet irnytott kr eleme, teht elhagyhat. Mivel az gy keletkez grf pontosan ugyan azt az rtkes informcit hordozza, mint az elz, a lpst megismtelhetjk, egszen addig, amg van levl cscs. Megjegyzs: Ha az eredmnygrf fa, az sszes cscsot eldobhatjuk s res grfot kapunk teht holtpontra nincs lehetsg ami megfelel a korbbi lltsnak. Az gy kapott, jelentsen reduklt mret grf sokkal knnyebben elemezhet, m egy az elzhz nagyon hasonl tlettel mg tbb cscsot hagyhatunk el. llts: A grf gykr cscsainak ismtelt levgsval nem vesztnk el lehetsges holtpontra utal mintt. Bizonyts: Az elz mintjra. Egy cscs pontosan akkor gykr, ha nem mutat r irnytott l, teht nem mehet t rajta irnytott kr, vagyis eldobhat. Az rtkes informci megmaradsa miatt a lps ismtelhet, amg van gykr pont. Megjegyzs: Az elz mdszerhez hasonlan, csak ezt az eljrst alkalmazva pontosan akkor lesz a kimeneti grf az res grf, ha a bemeneti grf fa volt. 11

Megjegyzs 2: A mdszert alkalmazva a grf elvesztheti sszefggsgt. A bemutatott kt mdszerrel transzformlt grf nagysgrendekkel kevesebb cscsot tartalmazott a GlobalContractor esetben s emberi vizsglatra sokkal alkalmasabbnak bizonyult. Tekintve, hogy a fenti ttelek szerint informcit nem vesztettnk, az optimalizci hasznosnak tlhet.

6.

Fejlesztsi tervek

A deadlockHunter jelen formjban hasznlhat s betlti a cljt, viszont a fejleszts s tesztels sorn felmerltek tovbbi tletek, melyek nvelnk a felhasznlbartsgot vagy a project fejldse miatt fontosak. Az rks fejlds ignye egy szoftver sajtja s szerves rsze, ezrt ezen tletek kzl a kvetkezkben ismertetem a legfontosabbakat.

6.1.

Mrs mentse Google Protocol Buer hasznlatval

Jelenlegi formjban a mrst vgz alkalmazs az eredmnyeket egy XML dokumentumba rja. Ez elnys, mivel ember szmra is knnyen olvashat s kereshet, valamint gpi feldolgozsa is egyszer is rengeteg krnyezetben tmogatott natv mdon vagy knyvtrakon keresztl. Htrnya az XML formtumnak, hogy a naplfjl mrete nagyon nagy, amit krlmnyes trolni s lass beolvasni. A Google Protocol Buer1 elnyei s htrnyai pont fordtottak. Azonos adatmennyisg sorosts utn sokkal kisebb mret, mint XML esetben, a sorostott llomny beolvassa gyorsabb, viszont maga az llomny emberi olvas szmra rtelmezhetetlen s az rtelmezse klnbz platformokon kln tmogatst s karbantartst ignyel. A Google Protocol Buert, mint opcionlis kimeneti formtumot az XML mellett szeretnm elrhetv tenni.

6.2.

Forrskd megnyitsa

A project nem jhetett volna ltre a fejleszts sorn hasznlt szmtalan nylt forrskd szoftver nlkl (pl.: Linux, GCC, Eclipse, git, boost, graphviz s msok), gy egyrtelm a forrs megnyitsnak motivcija, tekintve tovbb, hogy az eszkz ltalnos cl, gy ms krnyezetben is hasznosnak bizonyulhat.
1

Google Protocol Buer: https://developers.google.com/protocol-buers

12

A deadlockHunter nyltt ttelnek jelenleg akadlyai vannak, mivel a forrs tbb zrt forrskd fggsget tartalmaz melyek funkcijt ezrt nem rszletezhetem. A proprietary fggsgekkel funkcionlisan ekvivalens, nylt forrskd knyvtrakat mr elksztettem, a jvben ezek cserjt szeretnm vgrehajtani. Ezen tl a megnyitst a Morgan Stanley megfelel testletnek is jv kell hagynia.

6.3.

Intelligens trace

A rgztett esemnyeket listz felleten (3. bra) megjelen kontextusok sora adott esetben hosszra nylhat, s dacra minden optimalizcinak, tbbnyire egy erforrsra vonatkozan hasonl rszleteket mutat, amelyek kzl krlmnyes kikeresni az rdekes mintkat (de megfelel kereskifejezs hasznlatval ez is megvalsthat). A leggyakoribb feladat olyan mintk keresse, ahol kt erforrs mindkt lehetsges sorrendben lefoglalsra kerl. A krdses erforrsok azonostsa az eredmnygrf vizsglatval egyszer, a keresfelletet olyan lehetsggel szeretnm kiegszteni, ami egyszerre tbb zr elfordulst vizsglja egy adott kontextusban, s ezek kzl heurisztikusan kikeresi a hibsnak rtkelt zrolsi sorrendet alkalmazt.

6.4.

Grf leinek szl szerinti sznezse

Az eredmnygrfon knnyen azonosthat az erforrsok kztt kialaktott sorrendisg s hierarchia. Mivel az eredmnygrf dencija szerint tbb grf egyestsbl szrmazik, ezrt az egyes szlak egyni kontribcija nehezen klnthet el. Hogy a vizulis reprezentcit mg intuitvabb tegyem, szeretnm, hogy az egyes szlak ltal kialaktott lek a szlnak megfelel sznkddal jelenjenek meg, mg alaposabb kpet nyjtva a rendszer mkdsrl.

13

You might also like