Promotor: prof.dr. J.J. Lukkien (TU/e)
Copromotor: dr. R.H. Mak (TU/e)
Technische Universiteit Eindhoven
Date: 7 September, 2015, 16:00
Component-based systems engineering is a software engineering technique that allows building complex systems from predefined building blocks. One of the main advantages of this technique is the possibility to distribute the components among different nodes. Running component-based applications on distributed platforms requires resource management. The key aspect of resource management is enforcement of predictable execution of applications. In order to achieve predictable execution, a resource amount that suffices individual components for meeting their deadlines has to be reserved in advance. These resource reservations can be performed in two different phases of an application’s lifecycle: at design time (a.k.a. static or offline reservations) or at run time (a.k.a. dynamic or online reservations).
Static reservations are mainly suitable when component demands are fairly stable and can be estimated at design time. In this situation, appropriate resource reservations can be made at deployment time that last for the entire operation time of the application. Moreover, although these reservations are conservative, the amount of waste and failures is low because of the stable behavior which is, in most of the cases, close to and below the reserved amount. Contrary, enabling static reservations to components with highly fluctuating resource demands results in either a high amount of resource waste or/and a high rate of application failures. Therefore, in such cases, dynamic re-allocation of resources is more cost-effective than static allocation.
Dynamic resource allocation, however, requires strategies and mechanisms for predicting the requested resources of individual components and resource reservation adjustments at run time on a regular basis. The typical goal of resource reservation adjustment is to make sure that resource provisions exceed resource demands, but only with a minimal amount. Ideally, a component’s resource reservation should be such that it resembles its resource utilization profile as closely as possible, but always being conservative, which means that a resource reservation should be based on an accurate prediction of resource utilization. Performing an accurate resource prediction presupposes knowledge of component resource demands. This is difficult, especially, when components have highly fluctuating resource demands, as for instance, in case of multimedia applications, which we address as a driving example in this work.
The main contribution of this thesis is threefold. Firstly, two metrics for evaluating the resource management quality are introduced: the failure rate (Fail), which measures the fraction of the reservation periods for which the reserved budget was insufficient, and resource waste (Waste), which measures unused budget. In addition, two video components from the OpenCV framework and a synthetic component, used for the simulation setup, are described and a monitoring method used for state-based monitoring is presented, analyzed and validated.
Secondly, this work introduces two novel resource models for capturing the resource utilization of a software component: a state-based and a mode-based resource model. The state-based resource model allows capturing the resource utilizations of a component in a fine-grained way using the states, where states represent resource utilization intervals. Using this resource model, we investigate the effect of a simple resource management policy that predicts a resource usage state for the next time slot based on the resource utilization state of the current time slot. The quality of this management scheme depends on two parameters, namely, state size and reservation time slot length, and is measured using Waste and Fail metrics.
Capturing resource utilization intervals using states enables us to make the transition from time domain to state-density domain. The state-density resource utilization profiles of different components exhibit only a few regions at a high density of clustered states called resource-usage modes. This enables us to introduce the novel mode-based resource model. Since predicting modes instead of states is a more coarse-grained activity, it can be done more efficiently and, as shown, also with a higher accuracy. Moreover, a fast convergence of the detected modes of different video components indicates that our mechanism can detect modes stably with just little history of the monitored component, at run time. Consequently, in order to exploit the benefits of resource-usage modes, a detection mechanism, suitable for use at run time and heuristics for choosing proper parameters for mode detection are introduced. On top of that, in order to enable mode-based reservations, a method for run-time mode prediction is required.
Finally, an investigation of the sojourn times in different resource-usage modes at run time, reveals a high reoccurrence rate of the similar sequences of modes of the same length. This enables us to define and identify resource-usage patterns by analyzing the transition between individual modes. Also, a method for detecting patterns based on the mode transition probabilities is introduced. Defining, identifying and detecting patterns at run time allow accurate mode prediction at run time and therefore, enables the run-time mode-based reservations. In addition, it reduces the resource management efforts in terms of resource re-allocation activities for every reservation time slot and therefore resulting in significant improvements of mode-based resource management workflow.