Performance based adaptation of Scala programs
Adaptace programů ve Scale zaměřená na výkon
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/90479Identifikátory
SIS: 189772
Kolekce
- Kvalifikační práce [10923]
Autor
Vedoucí práce
Oponent práce
Horký, Vojtěch
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové systémy
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
6. 9. 2017
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
adaptivní systémy, optimalizace výkonu, predikce běhuKlíčová slova (anglicky)
adaptive systems, performance optimization, run time predictionDynamická adaptivita počítačových systémů je jejich schopnost měnit své chování v závislosti na prostředí, v němž běží. Systém díky ní může dosáhnout lepšího výkonu, ale většinou je třeba přizpůsobit jeho architekturu, což komplikuje řešení. V rámci diplomové práce předkládáme analýzu a návrh frameworku pro jednoduchý a přímočarý vývoj zahrnující výkonnostní adaptivitu na úrovni funkcí a metod. Zkoumáme požadavky na rozhraní takového frameworku a možnost jeho integrace do prostředí programovacího jazyka Scala za použití pokročilých jazykových prostředků, jež nabízí. Na teoretické úrovni dále probíráme problém výběru nejvhodnější funkce pro použití s daným vstupem na základě měření výkonu předchozích běhů. Práce dále obsahuje implementaci tohoto frameworku, u níž byl kladen důraz na modularitu a snadnou rozšiřitelnost, neboť v práci je nastíněno mnoho potenciálních možností vylepšení. Řešení je vyhodnoceno prostřednictvím pestré škály scénářů, od algoritmů adaptujících se podle vstupních dat až po adaptace na běhové prostředí při distribuovaných výpočtech v systému Apache Spark.
Dynamic adaptivity of a computer system is its ability to modify the behavior according to the environment in which it is executed. It allows the system to achieve better performance, but usually requires specialized architecture and brings more complexity. The thesis presents an analysis and design of a framework that allows simple and fluent performance-based adaptive development at the level of functions and methods. It closely examines the API requirements and possibilities of integrating such a framework into the Scala programming language using its advanced syntactical constructs. On theoretical level, it deals with the problem of selecting the most appropriate function to execute with given input based on measurements of previous executions. In the provided framework implementation, the main stress is laid on modularity and extensibility, as many possible future extensions are outlined. The solution is evaluated on a variety of development scenarios, ranging from input adaptation of algorithms to environment adaptations of complex distributed computations in Apache Spark.