Background. Performance monitoring of C/C++ programs has often been a tedious and straining process, where insufficient and complex tools/APIs are required. Performance monitoring tools and APIs tend to focus on ease of use or flexibility, but rarely both. Hence, a tool that combines ease of use and flexibility while enhancing abstraction, would greatly simplify the monitoring of C/C++ programs and seamlessly integrate them into pre-existing projects. Objectives. This study aims to extend the developed EDPM prototype used for the manual performance monitoring of C/C++ programs. The extension will comprise the dynamic nesting feature which will be the primary focus of this thesis study. Method. In this thesis study, experiments that evaluate the extended EDPM version will be conducted. These experiments will be conducted using a homogeneous testing environment using an independent benchmark created for this study: strncpy, and a C/C++ benchmark: rodinia. The experiments will consist of measuring the execution benefits, overheads, and precision of the initial EDPM version, extended EDPM version, and the raw Performance API(PAPI) which will be used manually. For this purpose, four sets of tests will be orchestrated; iterative and recursive test programs for the strncpy benchmark; binary search tree and b+tree test programs for the rodinia benchmark. Additionally, each set is divided into two scenarios: nested and alternate structures. The iterative tests will be used to evaluate all of the three aformentioned subjects, and the recursive tests will evaluate the extended EDPM version and the PAPI API. The binary search tree and b+tree tests will further evaluate the initial and extended EDPM versions in CPU and memory-intensive environments. Furthermore, the test sets will each adopt different configurations, depending on the specific test. Additionally, the reason why the initial EDPM version won’t be evaluated using the recursive tests is because it doesn’t support the dynamic nesting feature. Results. The results show that the extended EDPM version had an improved execution time, for each respective configuration, for each benchmark. The results also show that the PAPI API outperforms both of the EDPM versions significantly but with the compromise of sacrificing some precision. Conclusions. As of this thesis study, EDPM is a prototype in development, but now with the implemented dynamic nesting extension, EDPM will facilitate the implementation of further extensions, such as the multithreading monitoring, by primarily using the PAPI API as its core backend. Additionally, the extended EDPM version is slightly optimized compared to the initial EDPM version but significantly unoptimized when compared to the PAPI API, depending on how a program has been annotated. / Bakgrund. Prestandamätning av C/C++ program har ofta varit en påfrestande process, där otillräckliga och komplexa verktyg samt API:er är nödvändiga. Verktyg och API:er ämnade för prestandamätning fokuserar vanligen på en sida av spektrumet; användarvändlighet eller flexibilitet, men oftast inte båda. Därför, ett verktyg som slår ihop användarvändlighet och flexibilitet, som samtidigt också höjer abstraktionsnivån hade underlättat både processen av prestandamätning men även integrationen av ett sådant verktyg i existerande och framtida projekt. Syfte. Denna studie fokuserar på att utöka EDPM prototypen som används för manuell prestandamätning av C/C++ program. Utökningen kommer att omfatta implementationen av funktionaliteten dynamisk nestning. Metod. I denna studie kommer experiment som utvärderar den utökade EDPM versionen att utföras. Experimenten kommer att använda en homogen testmiljö och två teststandarder, där en teststandard kommer att skapas: strncpy; och en C/C++ teststandard att återanvändas: rodinia. Experimenten kommer att bestå av att mäta fördelarna, överhuvudet för exekveringstiden samt precisionen för den initiala EDPM versionen, utökade EDPM versionen och det råa/manuellt använda Performance API:et(PAPI). Experimentet kommer att omfatta fyra distinkta par av tester; de iterativa och rekursiva testerna för strncpy teststandarden; de binary search tree och b+tree testerna för rodinia teststandarden. Varje par är uppdelat i två scenario: nästade och alternerande strukturer. De iterativa testerna kommer att användas för att utvärdera alla tidigare nämnda testsubjekt, medan de rekursiva testerna kommer att utvärdera den utökade EDPM versionen och PAPI API:et. De binary search tree och b+tree testerna kommer att användas för att ytterligare utvärdera den initiala och utökade EDPM versionerna i en CPU and minnes-intensiv programmiljö. Paren av tester kommer dessutom att använda sig av olika konfigurationer, beroende på det specifika testet som utförs. Anledningen till varför den initiala EDPM versionen inte kommer att utvärderas med de rekursiva testerna är eftersom versionen inte stödjer funktionaliteten dynamisk nesting. Resultat. Resultaten visar att den utökade EDPM versionen presterar både snarlikt och bättre i jämförelse mot den initiala EDPM versionen, för respektive test från samt konfiguration. Resultaten visar även att PAPI API:et överträffar båda EDPM versionerna genom att offra någon andel precision. Slutsatser. Under tiden av skrivandet av detta examensarbete är EDPM endast en prototyp under utveckling, men genom additionen av funktionaliteten dynamisk nesting, kommer implementation av framtida utökningar att underlättas, t.ex. mätning av multitrådade program genom att primärt använda PAPI API:et. Utöver den generella utökningen har EDPM blivit något mer optimerad jämförelsevis med den initiala EDPM versionen men avsevärt sämre jämförelsevis med PAPI API:et, detta beroende på hur ett program blivit annoterat.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:bth-24740 |
Date | January 2023 |
Creators | Bosnjak, David |
Publisher | Blekinge Tekniska Högskola, Institutionen för datavetenskap |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0027 seconds