Memory changes tracking

Revision as of 17:35, 14 May 2013 by Xemul (talk | contribs) (Added article about memory changes tracking)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

CRIU can detect what memory pages a task (or tasks) has changed sine some moment of time. This page describes why this thing is required, how it works and how to use it.

Why do we need to track memory changed

There are several scenarios when detecting what parts of memory has changed is required:

Incremental dumps
When you take a series of dumps from a process tree, it is a very good optimization not to dump all the memory every time, but get only those memory pages that has changed since previous dump
Smaller freeze time for big Applications
When a task uses a LOT of memory, dumping it may take time and during all this time this task should be frozen. To reduce the freeze time we can
  • get memory from task and start writing it in images
  • freeze task and get only changed memory from it
Live migration
When doing live migration a lot of time takes the procedure of copying tasks' memory on remote host. And yet again, during this time process is frozen. Acting like in the previous example also reduces the freeze time, i.e. -- the live migration becomes really Live.