Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead

As the number of execution environments increases dramatically, ever-changing non-functional requirements often lead to the challenge of frequent code refactoring. Despite help of traditional software engineering techniques, adapting software to meet each execution environment and application contex...

Full description

Bibliographic Details
Main Author: Huang, Wei-Chih
Other Authors: Knottenbelt, William
Published: Imperial College London 2015
Subjects:
004
Online Access:https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.749076
id ndltd-bl.uk-oai-ethos.bl.uk-749076
record_format oai_dc
spelling ndltd-bl.uk-oai-ethos.bl.uk-7490762019-03-05T15:34:00ZSelf-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overheadHuang, Wei-ChihKnottenbelt, William2015As the number of execution environments increases dramatically, ever-changing non-functional requirements often lead to the challenge of frequent code refactoring. Despite help of traditional software engineering techniques, adapting software to meet each execution environment and application context remains a non-trivial endeavour. Manually reimplementing software possibly takes months or years of programmer effort and requires high levels of expertise. Furthermore, to build software for different execution environments often results in either a small code base which cannot guarantee Quality of Service or a large manually-optimised code base which is difficult to maintain. This thesis presents a novel self-adaptive container framework which can dynamically adjust its resource usage in an effort to meet resource constraints and scalability requirements. Each container instance is associated with programmer-specified Service Level Objectives with respect to performance, reliability, and primary memory use. To prevent ambiguity among multiple Service Level Objectives, each of them is specified in the format of standard Web Service Level Agreement. This framework features tighter functionality specification than that of standard container frameworks, which enables greater scope for efficiency optimisations, including the exploitation of probabilistic data structures, out-of-core storage, parallelism, and cloud storage. These techniques are utilised in a low-cost way through the integration of third-party libraries, which also enable our framework to provide a wider class of Service Level Objectives. In addition, to reduce the time of learning how to use the framework, its interfaces are designed to be close to those of standardised libraries. The framework has been implemented in C++ and utilised in two case studies centred on explicit state-space exploration adopting a breadth-first search algorithm, and route planning adopting a Dijkstra’s shortest path algorithm. In order to illustrate the framework's viability and capability, various Service Level Objectives are assigned. Furthermore, the implementation of our framework is utilised to explore approximately 240 million states in the first case study and to find the shortest path of a graph representing the USA road network, containing approximately 24 million nodes and 58 million arcs. The experimental results show that the framework is capable of dynamically adjusting its resource usage according to assigned Service Level Objectives and dealing with large-scale data. At the same time, the programmer overhead is kept low in terms of the degree to which code is modified.004Imperial College Londonhttps://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.749076http://hdl.handle.net/10044/1/25278Electronic Thesis or Dissertation
collection NDLTD
sources NDLTD
topic 004
spellingShingle 004
Huang, Wei-Chih
Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead
description As the number of execution environments increases dramatically, ever-changing non-functional requirements often lead to the challenge of frequent code refactoring. Despite help of traditional software engineering techniques, adapting software to meet each execution environment and application context remains a non-trivial endeavour. Manually reimplementing software possibly takes months or years of programmer effort and requires high levels of expertise. Furthermore, to build software for different execution environments often results in either a small code base which cannot guarantee Quality of Service or a large manually-optimised code base which is difficult to maintain. This thesis presents a novel self-adaptive container framework which can dynamically adjust its resource usage in an effort to meet resource constraints and scalability requirements. Each container instance is associated with programmer-specified Service Level Objectives with respect to performance, reliability, and primary memory use. To prevent ambiguity among multiple Service Level Objectives, each of them is specified in the format of standard Web Service Level Agreement. This framework features tighter functionality specification than that of standard container frameworks, which enables greater scope for efficiency optimisations, including the exploitation of probabilistic data structures, out-of-core storage, parallelism, and cloud storage. These techniques are utilised in a low-cost way through the integration of third-party libraries, which also enable our framework to provide a wider class of Service Level Objectives. In addition, to reduce the time of learning how to use the framework, its interfaces are designed to be close to those of standardised libraries. The framework has been implemented in C++ and utilised in two case studies centred on explicit state-space exploration adopting a breadth-first search algorithm, and route planning adopting a Dijkstra’s shortest path algorithm. In order to illustrate the framework's viability and capability, various Service Level Objectives are assigned. Furthermore, the implementation of our framework is utilised to explore approximately 240 million states in the first case study and to find the shortest path of a graph representing the USA road network, containing approximately 24 million nodes and 58 million arcs. The experimental results show that the framework is capable of dynamically adjusting its resource usage according to assigned Service Level Objectives and dealing with large-scale data. At the same time, the programmer overhead is kept low in terms of the degree to which code is modified.
author2 Knottenbelt, William
author_facet Knottenbelt, William
Huang, Wei-Chih
author Huang, Wei-Chih
author_sort Huang, Wei-Chih
title Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead
title_short Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead
title_full Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead
title_fullStr Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead
title_full_unstemmed Self-adaptive containers : a novel framework for building scalable QoS-aware software with low programmer overhead
title_sort self-adaptive containers : a novel framework for building scalable qos-aware software with low programmer overhead
publisher Imperial College London
publishDate 2015
url https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.749076
work_keys_str_mv AT huangweichih selfadaptivecontainersanovelframeworkforbuildingscalableqosawaresoftwarewithlowprogrammeroverhead
_version_ 1718994372090920960