# A Survey on Malleability Solutions for High-Performance Distributed Computing
## 6 Other Malleability Solutions
### EasyGrid Application Management System  
In [63], the authors leveraged EasyGrid framework [64] to transform a traditional moldable MPI application into an autonomic malleable version that inherits the benefits of both malleability [12] and autonomy [65]. As such, applications will thus be capable of adjusting the number of their processes, if appropriate, and/or reallocating them to be adapted to the applications' requirements, resources availability, or resource failures in the system. The most notable point is that this reconfiguring capability does not depend on an external system nor the ability of the programmer, but an application management system.  
EasyGrid was designed to generate a system-aware version of the application capable of using the Grid resources available to the user in the most appropriate manner. The EasyGrid methodology uses a middleware oriented to the application. This means the service middleware is part of, and specific to, each particular grid application. A _application management system_ (AMS) distributed within each system-aware application will be will be responsible for the efficient use of resources.  
The AMS EasyGrid uses Local Area Multicomputer library (LAM), an predecessor of modern MPI standard implementations. It transforms applications into system-aware versions, capable of adapting their execution under changes in the grid environment. AMS does not create all application processes at once, but rather according to an application-specific scheduling policy. Since this is transparent to users' MPI programs, AMS must also manage all communications between processes.  
EasyGrid AMS integrates functional layers for monitoring processes and resources, and for dynamic reshaping the processes layout of a job. It employs over-provisioning, in particular, to harness heterogeneous resources, and temporal process partitioning where long-running processes are divided into a series of subprocesses; therefore, processes are only created when they are ready for execution.  
Figure 10 depicts how to generate an EasyGrid system-aware application from MPI source code.  
Figure 9: Invasive Malleability—invasive architecture developed whit X10 invasive framework [60]. Based on: [[https://pp.ipd.kit.edu/uploads/publikationen/bungartz13](https://pp.ipd.kit.edu/uploads/publikationen/bungartz13) invasive.pdf]([https://pp.ipd.kit.edu/uploads/publikationen/bungartz13](https://pp.ipd.kit.edu/uploads/publikationen/bungartz13) invasive.pdf) (accessed on 13 April 2022). Adapted with permission from [60]. Copyright 2013, [PERSON].  
The authors in [63] extend EasyGrid AMS to support process malleability. For this purpose, AMS, periodically, evaluates the need to rescale a job based on the monitoring information collected during its execution. Thus, to incorporate malleability in this environment, a new set of functions were added in order to:  
* Define reconfiguration points where applications can be rescaled.
* Design the reconfiguration mechanism that calculates the new processes layout in the next time step based on information gathered in previous ones.
* Define the moment during the execution when the reconfiguration mechanism will be called (invocation point).  
Experimental evaluations demonstrated that the EasyGrid AMS enhanced version allows the creation of a malleable version of an application (in this particular case, N-body simulation), and it is capable of automatically rescaling it by reconfiguring processes and reallocating resources. In addition, results presented a low overhead that decreases as the problem size increases.