minha

Minha: Middleware Testing Platform

View the Project on GitHub jopereira/minha

(formerly hosted at www.minha.pt)

The correctness and performance of large scale distributed systems depends on middleware components performing various communication and coordination functions. It is, however, very difficult to experimentally assess such middleware components as interesting behavior often arises exclusively in large scale settings, with costly and time consuming distributed deployments with realistic workloads.

Architecture of Minha

Minha virtualizes multiple JVM instances in each JVM while simulating key environment components, reproducing the concurrency, distribution, and performance characteristics of a much larger distributed system. It enables that multiple instances run in each JVM, significantly reducing the resources required by typical alternatives. Moreover, by virtualizing time using simulation, it reduces the interference resulting from competing for shared resources and provides a time reference and control point.

The application and middleware classes for each instance are loaded by a custom class loader that replaces native libraries and synchronization bytecode for references to simulation models. Most of the code is run unmodified and time is accounted using the CPU time-stamp counter to closely obtain true performance characteristics. Some of these simulation models are developed from scratch while others are produced by translating native libraries themselves. The resulting code makes use of the simulation kernel and time virtualization to run. Multiple instances are loaded under the control of a command line user interface and configuration loader.

Goals

This project is extending the Minha platform towards supporting a wider range of middleware and environments as follows:

Motivation

Experimental evaluation of middleware usually requires instances of a stub application deployed in multiple hosts to accurately reproduce the impact of distribution and avoid mutual interference. The amount of required hardware resources to assess systems aimed at large scale is thus significant. Moreover, a distributed system is inherently difficult to observe due to the lack of a time reference and central control point.

As a consequence, many middleware components have performance bottlenecks and even outright flaws that are exposed only in production in large scale deployments and with real workloads. For instance, in small scale deployments with several instances in the same or in a few physical hosts, concurrency issues might not be exposed, scalability challenges do not arise (e.g. unstable performance or oscillation), and run-time complexity of embedded algorithms is left unchecked.

The goal of this project is to provide a platform that has the following desirable properties:

Research and publications

Research leading to Minha is described here:

Some results obtained with Minha (current and past versions):

Team and funding

Minha is developed by José Pereira with contributions from N. Carvalho, J. Bordalo, F. Campos, J.M. Gomes, P. Guimarães, and N. Machado.

Research and development was funded by a Google Research Award and by FCT through project ReD.