A brief description
SIMCAN is a simulation platform for modeling and simulating both distributed systems and applications, which is currently available as open source software. SIMCAN has been written in C++ using OMNeT++, a simulation framework focused on building network simulators. Although the first version of SIMCAN was developed focusing to research, the current version of SIMCAN has been adapted to be used in teaching.
The main objective of SIMCAN is three-fold. First, to provide a high level of flexibility and scalability, allowing users to model a wide range of highly distributed system configurations. Second, to ease the development of distributed applications by providing intuitive APIs. Third, to investigate the performance of distributed and HPC applications executed over distributed systems with different architectural configurations.
The simulation core of SIMCAN relies on its repository. Basically, this repository contains a collection of models that represents the most relevant components of a distributed system, such as CPUs, disks and communication networks. These models are hierarchically classified into four basic systems: storage, CPU, memory and network. The same component can be represented by different models, e.g. a CPU processor can be modeled as a Single-Core CPU model and as a Quad-Core CPU model. Moreover, new models can be included in the repository, increasing the number of system configurations that can be built by combining the existent models.
Using this structure, users are able to model large distributed systems, like HPC clusters and data-centers for supporting cloud computing environments. In this case, several computer models are interconnected through a communication network. SIMCAN provides the same aggregation method as the one used in real distributed systems, that is, a rack structure contains several node boards, where each board contains several computers. The size of these racks and node boards is fully configurable. Hence, large systems can be easily deployed by using this aggregation structure.
In SIMCAN, a computer can be modeled by defining the four basic systems that correspond to the different components that can be found in the repository. Each computer model contains an API module that connects the applications with the four basic systems. Thus, user applications are able to request hardware resources by invoking the functions provided by the API module. SIMCAN provides different APIs to develop distributed applications. These APIs are inspired by real APIs, which eases the coding process. For instance, SIMCAN provides a POSIX-like API, which contains the main functions to interact with files, memory and network facilities. Similarly, SIMCAN provides a subset of the MPI calls for executing MPI applications in a simulated scenario modelled using SIMCAN.