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

    • Distributed simulation kernel. The current implementation is centralized and takes very limited advantage of multi-cores, limiting the scale of experiments. By implementing or integrating a parallel and distributed simulation kernel, existing multi-core servers and cloud infrastructure can be used to scale-out experiments.
    • Additional platform APIs. Running a large diversity of middleware components requires providing all their dependencies on the Java platform API in terms of simulation models. Currently, the main limitation of Minha is a limited support for java.nio and java.util.concurrent APIs, that are required for many modern distributed middleware packages.
      • NIO support, including selectors, has been merged
      • support for JMX is in progress
    • Simulation of multi-core processors. Validation and optimization of middleware components for multi-core processors is increasingly important. By implementing a multi-core model with Minha, it will be possible to run experiments with a large number of cores thus preparing for current and future hardware configurations.
    • Storage models and calibration. Although the main model required for distributed components is the network, storage I/O has also a significant impact in the performance many systems due to the use of logging for recovery. Implementing and calibrating a storage model will also allow data management systems to be tested.
    • Support for application models. Building a global application model on Minha currently requires in depth knowledge of the simulation kernel and a substantial amount of boilerplate code. We aim at simplifying this task, namely, by building a support infrastructure and integrating an object mocking framework.
      • pt.minha.api.* package provides support for mocking and unit testing
      • Distributed traces can be visualized with DrawMinha
    • Case studies. The evolution of the Minha platform is driven mainly by the components that it is able to run, and then, what contribution to those components can be done by applying Minha.