I have been researching Mobile Agents, and was wondering if it is possible to send a running process to another node in erlang. I know it is possible to send a process on another node a message. I know it is possible to load a module on all nodes in a cluster. Is it possible to move a process that might be in some state on a particular node to another node and resume it's state. That is, does erlang provide strong mobility? Or is it possible to provide strong mobility in erlang?
In Erlang, is it possible to send a running process to a different node?
2.1k views Asked by Matthew Sowders At
1
There are 1 answers
Related Questions in ERLANG
- modelica: compute minimum/maximum of continuous variable over time
- FMU Export of Python Code or Python Interface with FMI Standard for Use in EnergyPlus Co-Simulation
- Managing of Navier-Stokes PDEs by means of SBF in Dymola
- Simulation of Electrical drives using Dymola
- External Functions: Alternative Method to use .dll from a C-script
- alternative to sample function with varying sampling range
- Why has an FMU exported as FMI1 different statistics than if exported as FMI2
- ValveLinear Model Modelica Standard Library - Working Principle
- Change output file format to *.csv using dymosim.exe instead of *.mat
- Setting boolean for a time period
Related Questions in ACTOR
- modelica: compute minimum/maximum of continuous variable over time
- FMU Export of Python Code or Python Interface with FMI Standard for Use in EnergyPlus Co-Simulation
- Managing of Navier-Stokes PDEs by means of SBF in Dymola
- Simulation of Electrical drives using Dymola
- External Functions: Alternative Method to use .dll from a C-script
- alternative to sample function with varying sampling range
- Why has an FMU exported as FMI1 different statistics than if exported as FMI2
- ValveLinear Model Modelica Standard Library - Working Principle
- Change output file format to *.csv using dymosim.exe instead of *.mat
- Setting boolean for a time period
Related Questions in AGENT
- modelica: compute minimum/maximum of continuous variable over time
- FMU Export of Python Code or Python Interface with FMI Standard for Use in EnergyPlus Co-Simulation
- Managing of Navier-Stokes PDEs by means of SBF in Dymola
- Simulation of Electrical drives using Dymola
- External Functions: Alternative Method to use .dll from a C-script
- alternative to sample function with varying sampling range
- Why has an FMU exported as FMI1 different statistics than if exported as FMI2
- ValveLinear Model Modelica Standard Library - Working Principle
- Change output file format to *.csv using dymosim.exe instead of *.mat
- Setting boolean for a time period
Related Questions in MOBILITY
- modelica: compute minimum/maximum of continuous variable over time
- FMU Export of Python Code or Python Interface with FMI Standard for Use in EnergyPlus Co-Simulation
- Managing of Navier-Stokes PDEs by means of SBF in Dymola
- Simulation of Electrical drives using Dymola
- External Functions: Alternative Method to use .dll from a C-script
- alternative to sample function with varying sampling range
- Why has an FMU exported as FMI1 different statistics than if exported as FMI2
- ValveLinear Model Modelica Standard Library - Working Principle
- Change output file format to *.csv using dymosim.exe instead of *.mat
- Setting boolean for a time period
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Yes, it is possible, but there is no "Move process to node" call. However, if the process is built with a feature for migration, you can certainly do it by sending the function of the process and its state to another node and arrange for a spawn there. To get the identity of the process right, you will need to use either the global process registry or gproc, as the process will change pid.
There are other considerations as well: The process might be using an ETS table whose data are not present on the other node, or it may have stored stuff in the process dictionary (state from the random module comes to mind).
The general consensus in Erlang is that processes are not mobilized to move between machines. Rather, one either arranges for a takeover of applications between nodes should a node die. Or for distribution of the system so data are already distributed to another machine. In any case, the main problem of making state persistent in the event of errors still hold, mobility or not - and distribution is a nice tool to solve the persistence problem.