Frederic Suter [Tue, 23 Jan 2018 11:24:37 +0000 (12:24 +0100)]
Making MSG fade away (part 1)
most of the MSG_host functions already have a sg_host equivalent.
Don't duplicate the code or multiply the layer and use #define in
include/simgrid/host.h to guarantee backward compatibility
Frederic Suter [Mon, 22 Jan 2018 10:39:38 +0000 (11:39 +0100)]
get rid of vm->isMigrating()
There already was an equivalent in the live migration plugin. This
method was only used internally to detect if a VM was destroyed while
it was migrating. This is now useless.
Frederic Suter [Mon, 22 Jan 2018 10:09:30 +0000 (11:09 +0100)]
Close #105
When a VM is shutdown, a signal is triggered which is captured in the VM
live migration plugin. If the VM was currently migrating, it kills the
RX and TX actors and the actor that was used to call sg_vm_migrate in
an asynchronous way. Smart pointers on these three actors are stored
in a new extension of the VM which is created when started a migration.
A test for this feature has been added in
teshsuite/s4u/cloud-interrupt-migration which corresponds to the
scenario described in the issue
Frederic Suter [Thu, 11 Jan 2018 12:40:24 +0000 (13:40 +0100)]
Messing up with VM
- move VM tracing to S4U
- move last functions related to migration to the plugin
- MSG_vm_create is now MSG_vm_create_migratable and tagged
as DEPRECATED (will be removed in 3.21)
- Assume that the live migration plugin is always loaded in JAVA
(because all VMs are create with MSG_vm_create there)
- add a proper destroy function to S4U VMs (shutdown first, then
destroy)
- pimpl_vm_ is now private (with getImpl() as accessor)
- and use the user level interface as much as possible
Conclusion: The MSG_vm interface is now just a dummy wrapper on the
S4U interface and live migration is fully isolated in a plugin. Only
the is_migrating bool remains in VirtualMachineImpl, but is not (and
should not be) accessed or modified from outside the plugin. We can live
with that.
Frederic Suter [Tue, 26 Dec 2017 23:29:25 +0000 (00:29 +0100)]
get rid of the vm_params struct
this migration related stuff is now part of the plugin (which grows)
the set/get parameters for VM have thus been removed
some examples have been simplified in the process has they created VM
with useless parameters (no migration)
Martin Quinson [Tue, 26 Dec 2017 22:06:06 +0000 (23:06 +0100)]
improve the doc of SMPI privatization (fix #137)
I just kept the bug open for reference until it got correctly
documented, and it's done now. I admit, the full feature solution is
not implemented, but the current one is good enough, and the doc links
to #137 for future reference.
Martin Quinson [Tue, 26 Dec 2017 21:26:15 +0000 (22:26 +0100)]
fix #245: migrating an actor does not migrate its execution
Before, the migration was only taking place when the actor got awaken
after an activity. Now, it takes place right away, and if it's
blocking on an execution, the activity is also migrated. If it's another
kind of activity, then an error is raised as this is not implemented
yet.
Also rewrite the s4u-actor-migrate example to be less funny but more
informative, and to test that feature.
Frederic Suter [Tue, 26 Dec 2017 09:57:08 +0000 (10:57 +0100)]
allow zero-cost migration (a.k.a. setPm)
remove assert in suspend related to migration to be able to use it
during the migration (was a crappy hack before). This implies that we
assume that migration is a blocking operation (which is it) and that
nobody will try to let another process do a suspend.
Frederic Suter [Tue, 26 Dec 2017 09:23:47 +0000 (10:23 +0100)]
vm_migrate is now part of the live_migration plugin \o/
there are still some cleanups to do to complete the plugin
- is_migrating in VirtualMachineImpl and related functions
- the vm_params_t are only used by the migration
- some factoring in VmLiveMigration.hpp
- See if the final ack can be spared
- check valgrind and sonar feedback