Software performance engineering using virtual time program execution

In this thesis we introduce a novel approach to software performance engineering that is based on the execution of code in virtual time. Virtual time execution models the timing-behaviour of unmodified applications by scaling observed method times or replacing them with results acquired from perform...

Full description

Bibliographic Details
Main Author: Baltas, Nikolaos
Other Authors: Field, Anthony ; Kelly, Paul
Published: Imperial College London 2013
Subjects:
004
Online Access:http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.587357
id ndltd-bl.uk-oai-ethos.bl.uk-587357
record_format oai_dc
spelling ndltd-bl.uk-oai-ethos.bl.uk-5873572017-06-27T03:23:31ZSoftware performance engineering using virtual time program executionBaltas, NikolaosField, Anthony ; Kelly, Paul2013In this thesis we introduce a novel approach to software performance engineering that is based on the execution of code in virtual time. Virtual time execution models the timing-behaviour of unmodified applications by scaling observed method times or replacing them with results acquired from performance model simulation. This facilitates the investigation of "what-if" performance predictions of applications comprising an arbitrary combination of real code and performance models. The ability to analyse code and models in a single framework enables performance testing throughout the software lifecycle, without the need to to extract performance models from code. This is accomplished by forcing thread scheduling decisions to take into account the hypothetical time-scaling or model-based performance specifications of each method. The virtual time execution of I/O operations or multicore targets is also investigated. We explore these ideas using a Virtual EXecution (VEX) framework, which provides performance predictions for multi-threaded applications. The language-independent VEX core is driven by an instrumentation layer that notifies it of thread state changes and method profiling events; it is then up to VEX to control the progress of application threads in virtual time on top of the operating system scheduler. We also describe a Java Instrumentation Environment (JINE), demonstrating the challenges involved in virtual time execution at the JVM level. We evaluate the VEX/JINE tools by executing client-side Java benchmarks in virtual time and identifying the causes of deviations from observed real times. Our results show that VEX and JINE transparently provide predictions for the response time of unmodified applications with typically good accuracy (within 5-10%) and low simulation overheads (25-50% additional time). We conclude this thesis with a case study that shows how models and code can be integrated, thus illustrating our vision on how virtual time execution can support performance testing throughout the software lifecycle.004Imperial College Londonhttp://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.587357http://hdl.handle.net/10044/1/12681Electronic Thesis or Dissertation
collection NDLTD
sources NDLTD
topic 004
spellingShingle 004
Baltas, Nikolaos
Software performance engineering using virtual time program execution
description In this thesis we introduce a novel approach to software performance engineering that is based on the execution of code in virtual time. Virtual time execution models the timing-behaviour of unmodified applications by scaling observed method times or replacing them with results acquired from performance model simulation. This facilitates the investigation of "what-if" performance predictions of applications comprising an arbitrary combination of real code and performance models. The ability to analyse code and models in a single framework enables performance testing throughout the software lifecycle, without the need to to extract performance models from code. This is accomplished by forcing thread scheduling decisions to take into account the hypothetical time-scaling or model-based performance specifications of each method. The virtual time execution of I/O operations or multicore targets is also investigated. We explore these ideas using a Virtual EXecution (VEX) framework, which provides performance predictions for multi-threaded applications. The language-independent VEX core is driven by an instrumentation layer that notifies it of thread state changes and method profiling events; it is then up to VEX to control the progress of application threads in virtual time on top of the operating system scheduler. We also describe a Java Instrumentation Environment (JINE), demonstrating the challenges involved in virtual time execution at the JVM level. We evaluate the VEX/JINE tools by executing client-side Java benchmarks in virtual time and identifying the causes of deviations from observed real times. Our results show that VEX and JINE transparently provide predictions for the response time of unmodified applications with typically good accuracy (within 5-10%) and low simulation overheads (25-50% additional time). We conclude this thesis with a case study that shows how models and code can be integrated, thus illustrating our vision on how virtual time execution can support performance testing throughout the software lifecycle.
author2 Field, Anthony ; Kelly, Paul
author_facet Field, Anthony ; Kelly, Paul
Baltas, Nikolaos
author Baltas, Nikolaos
author_sort Baltas, Nikolaos
title Software performance engineering using virtual time program execution
title_short Software performance engineering using virtual time program execution
title_full Software performance engineering using virtual time program execution
title_fullStr Software performance engineering using virtual time program execution
title_full_unstemmed Software performance engineering using virtual time program execution
title_sort software performance engineering using virtual time program execution
publisher Imperial College London
publishDate 2013
url http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.587357
work_keys_str_mv AT baltasnikolaos softwareperformanceengineeringusingvirtualtimeprogramexecution
_version_ 1718465528900616192