No description
Find a file
Pavel Emelyanov 3bd08b7701 restore: Relax the FORKING stage
Here's why:

This stage is needed to make sure all tasks have appeared
and did some actions (that are called before restore_finish_stage()).
With this description there's no need in involving criu process
in it, this stage is purely inter-tasks sync point.

Taking into account we do already make root task wait for others
to complete forking (it calls restore_wait_ther_tasks()) we may
rework this stage not to involve criu process in it.

Here's how:

So the criu task starts the forking stage, then goes waiting for
"inprogress tasks". The latter wait is purely about nr_in_progress
counter, thus there's no strict requirement that the stage remains
the same by the time criu is woken up.

Siad that, the root task waits for other tasks to finish forking,
does fini_restore_mntns() (already in the code), then switches
the stage to the next (the RESTORE one). Other tasks do normal
staging barrier. Criu task is not woken up as nr_in_progress
always remains >= 1.

The result is -2 context switches -- from root task to criu and
back -- which gives us good boost when restoring single task app.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2017-05-10 04:26:55 +03:00
compel ia32: Rename has_compat_sigreturn => compat_cr 2017-05-10 04:13:40 +03:00
contrib scripts/install-debian-packages: add libnl-route-3-dev 2017-05-10 03:56:47 +03:00
coredump python: specify python2 as .py interpreter 2017-04-17 18:35:58 +03:00
crit python: specify python2 as .py interpreter 2017-04-17 18:35:58 +03:00
criu restore: Relax the FORKING stage 2017-05-10 04:26:55 +03:00
Documentation Extend the parser to accept negative options 2017-05-10 04:07:00 +03:00
images img: Move sigactions into core 2017-05-10 04:19:25 +03:00
include/common x86/asm: move user code selector values to common 2017-03-15 00:06:17 +03:00
lib pycriu: Dont produce zombies 2017-05-10 04:13:41 +03:00
scripts build/nmk: rename arm64 => aarch64 2017-05-10 04:13:43 +03:00
soccr soccr: fix log messages and add a few more 2017-05-10 04:13:42 +03:00
test test: restore ns_last_pid before executing restore in a second time 2017-05-10 04:20:37 +03:00
.gitignore .gitignore: remove a leftover 2017-04-02 18:12:10 +03:00
.mailmap repo: Add mailmap file 2012-03-25 23:31:20 +04:00
.travis.yml travis: run tests with asan 2017-04-11 09:00:49 +03:00
COPYING COPYING: fix a typo in a preamble 2016-08-11 16:18:43 +03:00
CREDITS Add the CREDITS file 2012-07-30 13:52:37 +04:00
INSTALL.md Makefile.install: rm unused vars/target 2017-02-06 13:48:49 +03:00
Makefile make: don't run feature-tests for tags/etags/cscope 2017-05-10 04:20:37 +03:00
Makefile.compel compel: make plugins .a archives 2017-04-02 18:12:10 +03:00
Makefile.config make: Report dependencies absence more exactly 2017-05-10 04:13:42 +03:00
Makefile.install Makefiles: remove @true 2017-03-15 09:36:08 +03:00
Makefile.versions criu: Version 3.0 2017-04-24 11:46:26 +03:00
README.md Add ascciinema tour on basic criu features. 2016-06-16 16:37:06 +03:00

CRIU (Checkpoint and Restore in Userspace)

An utility to checkpoint/restore tasks. Using this tool, you can freeze a running application (or part of it) and checkpoint it to a hard drive as a collection of files. You can then use the files to restore and run the application from the point it was frozen at. The distinctive feature of the CRIU project is that it is mainly implemented in user space.

The project home is at http://criu.org.

Pages worth starting with are:

A video tour on basic CRIU features

CRIU introduction

How to contribute