Difference between revisions of "CR tools"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
Line 14: Line 14:
  
 
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).
 
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).
 +
Which includes:
  
This includes:
 
 
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''')
 
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''')
 
* Pipes parameters
 
* Pipes parameters
 
* Memory maps (via '''/proc/$pid/maps''')
 
* Memory maps (via '''/proc/$pid/maps''')
  
Though not all parameters can be observed this way, say the current '''brk()''' value of a process is not exported at all.
+
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage:
 +
 
 +
# A '''$pid''' of a process group leader is obtained from the command line
 +
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.
 +
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''
 +
#* Collects VMA areas by parsing '''/proc/$pid/maps'''
 +
#*

Revision as of 21:17, 14 October 2011

What CRtools is

CRtools is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space, it tries to achieve the same target mostly in user space.

Agenda

  1. Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)
  2. What's required from kernel

Basic design

Checkpoint

The checkpoint procedure relies heavily on /proc file system (it's a general place where crtools takes all the information it needs). Which includes:

  • Files descriptors information (via /proc/$pid/fd and /proc/$pid/fdinfo)
  • Pipes parameters
  • Memory maps (via /proc/$pid/maps)

The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage:

  1. A $pid of a process group leader is obtained from the command line
  2. By using this $pid the dumper walks though /proc/$pid/status and gathers children $pids recursively. At the end we will have a process tree.
  3. Then it takes every $pid from a process tree, sends SIGSTOP to every process found, and performs the following steps on each $pid
    • Collects VMA areas by parsing /proc/$pid/maps