Resource management in cloud computing
Cloud computing is a popular paradigm for offering compute capacity as a service. In particular, the cloud gives flexibility to decide and modify the speed, the number, and the lease time of virtual machines (VMs). There are several pricing strategies for renting VMs, such on-demand pricing and spot pricing, and VMs differ for the amount of resources and performance guarantees they offer.
My research tries to help companies in deciding how to best take advantage from cloud deployments. A non-exhaustive list of questions that I am trying to answer include:
- What type of virtual resources should be rented for a given application?
- How to efficiently map the components of an application (e.g., web server VMs, a database VMs) to the rented resources?
- For spot VMs, what is the lowest bid price that still allows to fulfill quality of service requirements?
- How to use nonlinear optimisation algorithms to address these questions?
I have recently co-authored a survey that reviews the state-of-the-art in cloud resource management.
Enterprise performance engineering
Enterprise applications rely on the interaction of web servers, application servers, databases, and storage systems, typically deployed according to a multi-tiered architecture. My research has investigated methods to improve the predictability of enterprise applications with the aim of supporting design-time and run-time decision making. Recent contributions include models of software and hardware layering of commercial software, including enterprise resource planning (ERP) systems (e.g. SAP Business Suite), web servers, in-memory databases (e.g., SAP HANA) and pricing methods for software-as-a-service applications.
I am currently applying machine learning to address inference and tuning problems that arise in such systems. Recent works include:
- Methods for self-tuning of enterprise systems based on Bayesian optimisation and Gaussian processes
- Methods for statistical inference of resource consumption of requests across a distributed set of resources
- DevOps tools to automatically bring back monitoring feedbacks into an IDE or UML models
- Analysis of enterprise business process models (e.g., BPMN) via stochastic modelling and simulation
Mathematical foundations of computer system modeling: queueing theory and Markov processes
I also investigate stochastic modelling methods to support decision-making in enterprise performance engineering, especially queueing theory and Markov chains. These theoretical methods complement my performance engineering research by offering fundamental insights on the behaviour of distributed systems. They also provide efficient computational algorithms for integrating queueing models within optimisation programs.
Recent works include:
- Numerical algorithms for fitting Markovian point-processes using empirical datasets
- Fixed-point methods for solving queueing network models
- Large-scale computational optimization to bound the solution of large-scale Markov chains that cannot be treated analytically
- Asymptotic limits for optimal scheduling in parallel queueing systems