NEŠPOR, A. Analýza výkonu programů v jazyce Go [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.

Posudky

Posudek vedoucího

Pavela, Jiří

Práce formálně splňuje všechny body zadání. Výstupem práce je prototyp nástroje pro jednoduché měření výkonu programů v jazyce Go, u kterého však bude zapotřebí ještě vyladit jednotlivé nedostatky a chybějící funkce. Kvalita technické zprávy a realizačního výstupu byla ovlivněna neaktivitou studenta v průběhu zimního semestru, kterou se však snažil vynahradit v průběhu letního semestru. Celkově je však výstup práce použitelný jako základ pro navazující rozšiřující práce v této oblasti.

Dílčí hodnocení
Kritérium Známka Body Slovní hodnocení
Informace k zadání Jedná se o průměrně obtížné zadání práce, v rámci kterého bylo potřeba nastudovat technologii eBPF (a konkrétně pak jedno její rozhraní v podobě knihovny libbpf) a vypořádat se s některými problémy při jejím využití pro sledování běhu programů v jazyce Go. Všechny body zadání byly formálně splněny, avšak vytvořený nástroj je spíše prototyp, který bude vyžadovat ještě další práci, aby byl skutečně použitelný v praxi.
Práce s literaturou Student si zvládal samostatně vyhledávat a studovat zdroje relevantní k řešení práce.
Aktivita během řešení, konzultace, komunikace Aktivita studenta byla v průběhu řešení práce spíše kolísavá. V průběhu zimního semestru student aktivně nekomunikoval. V rámci letního semestru však student komunikoval, konzultoval problémy při řešení práce a demonstroval dosažený pokrok.
Aktivita při dokončování Technická zpráva byla dokončena několik dní před termínem odevzdání, student ale stihl zapracovat jednotlivé připomínky a zpětnou vazbu včas.
Publikační činnost, ocenění Práce je dostupná v podobě open-source repozitáře. Aktuálně probíhá diskuze o možnosti začlenit dosažené výsledky do upstream repozitáře Perun.
Navrhovaná známka
C
Body
70

Posudek oponenta

Malík, Viktor

Celkovo sa jedná o priemerne zvládnutú prácu, ktorá prináša funkčné prototypy dvoch rozšírení existujúceho nástroja pre profilovanie programov Perun. Niektoré časti práce sú navyše využiteľné aj mimo kontext samotnej práce. Bohužiaľ, implementácia je na pomerne základnej úrovni a vyžadovala by netriviálne množstvo práce, aby mohla byť použitá na praktické profilovanie Go programov. Navyše, celkový dojem z práce znižuje slabá textová časť.

Dílčí hodnocení
Kritérium Známka Body Slovní hodnocení
Náročnost zadání
Rozsah splnění požadavků zadání
Rozsah technické zprávy Text obsahuje cca 35 vysádzaných strán, čo je tesne nad požadovaným minimom. Viaceré časti sú pomerne stručné a vyžadovali by rozšírenie o ďalšie informácie, ktoré by pomohli lepšiemu pochopeniu práce.
Prezentační úroveň technické zprávy 60 Prezentačná úroveň práce obsahuje pomerne zásadné nedostatky. Kapitoly na seba síce logicky naväzujú, ale v mnohých chýbajú informácie, ktoré by umožnili lepšie pochopenie textu. Napríklad, čitateľ sa až v kapitole 5 (na strane 19) dozvie, akú metriku bude vytvorený nástroj sledovať (wall time). Kapitola o nástroji Perun je dosť stručná a chýbajú v nej informácie. Sekcia o BPF obsajuje dosť nepresností. Ďalej mi v práci chýba lepšia motivácia za jednotlivými návrhovými a implementačnými rozhodnutiami (prečo nástroj sleduje wall time, prečo je využitá technológia BPF, apod.). Za najdôležitejší nedostatok však považujem to, že text vôbec neobsahuje časť o binárnej podobe Go programov, čo je absolútne kritická súčasť práce (napr. vôbec nie je vysvetlené, čo je to "goroutina", ktorých priebeh nástroj sleduje).
Formální úprava technické zprávy 70 Typografia práce je iba na priemernej úrovni. Text je pomerne dobre štrukturovaný ale obsahuje rôzne typografické nedostatky,ktoré zhoršujú jeho čitateľnosť. Práca je písaná v češtine, ktorú nemôžem úplne kvalitne posúdiť, ale text neobsahuje veľa preklepov a gramaticky vyzerá byť v poriadku.
Práce s literaturou 65 Vzhľadom na implementačný charakter práce považujem výber zdrojov za relevantný. Študent preskúmal niekoľko existujúcich nástrojov pre profilovanie Go programov, no v práci mi chýba lepšie porovnanie navrhnutého a implementovaného riešenia s týmito nástrojmi. Napr. v sekcií 4.2.4 sa píše, že existujúci nástroj fgprof   meria čas wall clock a vzápätí sa v sekcií 5.1 dočítame, že "vzhľadom k absencii nástrojov merajúcich wall clock sme sa rozhodli takýto nástroj implementovať".
Realizační výstup 70 Realizačný výstup má formu dvoch pluginov pre nástroj Perun. Prvý z nich pridáva kolektor gotrace, ktorý pomocou BPF programov meria wall clock jednotlivých goroutín v sledovanom programe. Mám mierne výhrady hlavne k implementácií BPF časti, kde študent podľa môjho názoru nedostatočne preskúmal rôzne možnosti, ktoré technológia BPF ponúka a ktoré by pravdepodobne dokázali výrazne znížiť réžiu vytvoreného nástroja gotrace. Tento nedostatok sa však dá čiastočne ospravedlniť tým, že technológia BPF je pomerne nová a často k nej chýba dokumentácia. Na druhej strane oceňujem to, že sa jedná o funkčnú implementáciu rozšírenia komplexného nástroja Perun, ktorá však bohužiaľ zatiaľ nie je začlenená do vývojovej vetvy Perunu. Druhým pluginom je pridanie vizualizácie pomocou tzv. Sankey grafov. Jedná sa o zaujímavú vizualizáciu výsledkov profilovania, ktorá môže byť prospešná aj mimo samotného nástroja gotrace.
Využitelnost výsledků Obidve implementované rozšírenia majú potenciál využitia v praxi. Samotný nástroj gotrace je zatiaľ vo forme prototypu a myslím si, že by vyžadoval ešte niekoľko úprav, aby mohol byť použitý na profilovanie reálnych programov. Vizualizácia pomocou Sankey grafov je nepochybne využiteľná aj mimo nástroja gotrace. Veľmi dôležitou súčasťou práce je, že študent detailne preskúmal binárnu podobu Go programov a odhalil ich vlastnosti, ktoré komplikujú použitie tradičných techník trasovania binárnych programov. Tieto poznatky by mohli byť veľmi prospešné pre ďalšie nástroje pre profilovanie Go programov. Škodou je, že v texte úplne chýba ucelená kapitola o tejto súčasti práce.
Navrhovaná známka
D
Body
65

Otázky

eVSKP id 157244