Open main menu

OpenVZ Virtuozzo Containers Wiki β

CR tools

Revision as of 21:17, 14 October 2011 by Cyrillos (talk | contribs)

Contents

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