Master's Thesis

Performance Analysis Based on Noise Injection

Final Thesis 2.64 MB

Author of thesis: Ing. Matúš Liščinský

Acad. year: 2020/2021

Supervisor: Ing. Tomáš Fiedor, Ph.D.

Reviewer: Ing. Viktor Malík, Ph.D.

Abstract:

In this work, we proposed a Perun-Blower framework which utilises the perfblowing technique: injecting of noise into the functions of the tested program, followed by collecting of runtime data of these functions from the program run and evaluating the impact of the noise on the program performance. We build on the dynamic binary instrumentation of the Pin framework to inject the noise into program. We then focus on finding functions with high impact on performance as well as estimate the thread run's potential acceleration when optimising the particular functions. Moreover, we have extended the existing Trace collector used in the Perun framework to collect the runtime of functions with a new so-called engine based on the Pin framework. We tested the functionality of our implementation on two non-trivial projects, where we were able to find functions (1) with considerable impact on performance, (2) with the most significant optimisation benefit, and (3) whose degradation forces the non-termination of the program after several hours of running.

Keywords:

causal profiling, performance testing, virtual amplification, noise injection, performance bottlenecks, optimisation

Date of defence

24.06.2021

Result of the defence

Defended (thesis was successfully defended)

znamkaBznamka

Grading

B

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Otázky u obhajoby:

  1. I did not understand the intuition behind the selection of the next candidate function in the perfblowing loop. Could you please explain this in more detail (perhaps using an example)?
  2. How did you determine the configurations for the experiments? Was it empirical or did you perform some measurements?
  3. How do you propose optimizing conditional wait?
  4. What time domain did you use? Define performance in context of your work?
  5. Did you try to contact the authors of the thirdparty benchmarked code?
  6. One of your benchmark got stuck after injecting sufficient amount of noise. What do you think was the reason for this behavior?

Language of thesis

English

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Software Verification and Testing (NVER)

Composition of Committee

prof. Ing. Tomáš Vojnar, Ph.D. (předseda)
doc. Mgr. Adam Rogalewicz, Ph.D. (místopředseda)
doc. RNDr. Milan Češka, Ph.D. (člen)
doc. Ing. Vladimír Drábek, CSc. (člen)
Dr. Ing. Petr Peringer (člen)
Ing. Aleš Smrčka, Ph.D. (člen)

Supervisor’s report
Ing. Tomáš Fiedor, Ph.D.

Grade proposed by supervisor: A

File inserted by supervisor Size
Hodnocení vedoucího [.pdf] 85,94 kB

Reviewer’s report
Ing. Viktor Malík, Ph.D.

Grade proposed by reviewer: B

File inserted by the reviewer Size
Posudek oponenta [.pdf] 88,29 kB

Responsibility: Mgr. et Mgr. Hana Odstrčilová