Line 1:
Line 1:
−
{{FIXME|this is for [[User:Ebatalov]] to fill in}}
+
= The concept of process tree final states =
+
+
Final state is the state that ps tree will have after its dump or restore.
+
+
There are 3 possible final states in CRIU:
+
# 'Running' (ps tree is executed as usual)
+
# 'Stopped' (ps tree is stopped using SIGSTOP)
+
# 'Dead' (ps tree is destroyed using SIGKILL)
+
+
= CLI options for changing of process tree final state =
+
You can use --leave-stopped option with CRIU dump/restore commands to set process tree final state to 'Stopped'.
+
+
Use --leave-running option to set final state to 'Running'.
+
+
= Process tree final state after CRIU dump command =
+
+
By default final state of process tree after dump is 'Dead'.
+
So CRIU will kill process tree after it was dumped. But why? Suppose you leave your
+
process tree running after it was dumped. What if it deleted some files it was using
+
during its dump? What if it closed some tcp connections? After that CRIU won't be able
+
to restore process tree from the dump it has created earlier.
+
System simply won't have resources that this process tree requires at
+
the moment captured in dump.
+
+
If your process tree doesn't destroy resources it depended on before dump then you'll be able to restore it after dump with --leave-running option.
+
But be aware that your process tree left running after dump may modify some state (for example a file) in way not compatible on application level with process tree restored from this dump later.
+
+
What about leaving process tree stopped after dump was performed? When it is needed?
+
It may be needed for debugging of CRIU. If CRIU wasn't accurate during dump command
+
then it would leave some traces in dumped process tree. You can investigate such process tree in
+
stopped state. You'll probably find some other use cases for --leave-stopped option with CRIU dump command.
+
+
Leaving process tree running is necessary for predump command and currently --leave-stopped and
+
--leave-running options have on effect on it.
+
+
= Process tree final state after CRIU restore command =
+
By default final state of process tree after restore is 'Running'. That's because you usually
+
want to immediately start execution of process tree after its restore. You can use --leave-stopped
+
option to restore process tree in 'Stopped' state.
+
+
= Moving process tree from 'Stopped' state to 'Running' =
+
After criu has dumped/restored process tree in 'Stopped' state we sometimes need to continue
+
its execution putting process tree into 'Running' state. For this purpose use this [https://github.com/xemul/criu-scripts/blob/master/pstree_cont.py script]. It has only single argument - PID of process tree root.
+
+
[[Category: Under the hood]]