allows the application and its related data to be distributed independently of a running service. Through smart pre-distribution of services, possibly by application caching based on demand prediction, the overall migration time can be reduced to only the time it takes to migrate the instance layer.

In the current implementation, a layer contains its unique data (including files and possibly in-memory state) plus all the data from its preceding layers. We achieve pseudo-incremental layering for migration, by first cloning a lower layer (e.g., application layer), and then using incremental file synchronization to transfer only the difference between that and the higher layer (e.g., instance layer) we want to recreate. This process of cloning and incremental file synchronization is repeated depending on what layers are missing at the destination, the complete migration process is shown in Figure \[fig:migrationMechanism\]. The time to start the migration and the destination of migration can be determined by an optimization algorithm, see [@wang2015dynamic; @ceselli2015cloudlet] for details.

Experimentation Results and Discussions
=======================================

We study the live migration performance of our layered framework for a variety of applications. We ran experiments in three “host” VMs connected to an emulation framework, where the emulation framework is the open-source Common 