Difference between revisions of "Userfaultfd"

From CRIU
Jump to navigation Jump to search
m
Line 3: Line 3:
 
== Concepts ==
 
== Concepts ==
  
* Tasks after restore should have lazy VMAs being backed by userfaultfd, the fd itself should be sent before resume to CRIU daemon and closed
+
* Only MAP_PRIVATE | MAP_ANONYMOUS will be supported in the 1st version due to kernel constraints.
* Only MAP_PRIVATE | MAP_ANONYMOUS will be supported in the 1st version due to kernel constraints
+
* The <code>restore</code> action should accept yet another [[CLI]] option <code>--lazy-pages</code>.
* On source side the [[page server]] should be taught to get pages from tasks dumped and send them out on the destination node
+
 
 +
=== Daemon ===
 +
 
 +
Tasks after restore should have lazy VMAs being backed by userfaultfd, the fd itself should be sent before resume to CRIU daemon and closed. This is that daemon who will monitor the UFFD events and repopulate the tasks address space. The daemon should be able to get pages from both -- remote and local images.
 +
 
 +
=== Local images ===
 +
 
 +
The daemon should just use local page-read engine and read pages from images
 +
 
 +
=== Remote images ===
 +
 
 +
* The page-read engine should be patched to learn how to talk to the [[page server]] on the other end
 +
* The page server should get pages from tasks dumped and send them out on the destination node.
 
* Protocol should include out-of-order pages and background pages pushing (sending them before demand from the process)
 
* Protocol should include out-of-order pages and background pages pushing (sending them before demand from the process)
* The now dump-only <code>--page-server</code> option should be used for restore action to tell that the memory will be sucked in through page server
+
* The now dump-only <code>--page-server</code> option should be used for restore
  
 
[[Category:Memory]]
 
[[Category:Memory]]

Revision as of 16:18, 26 February 2015

Collected on this page is the design notes about supporting userfaultfd in CRIU

Concepts

  • Only MAP_PRIVATE | MAP_ANONYMOUS will be supported in the 1st version due to kernel constraints.
  • The restore action should accept yet another CLI option --lazy-pages.

Daemon

Tasks after restore should have lazy VMAs being backed by userfaultfd, the fd itself should be sent before resume to CRIU daemon and closed. This is that daemon who will monitor the UFFD events and repopulate the tasks address space. The daemon should be able to get pages from both -- remote and local images.

Local images

The daemon should just use local page-read engine and read pages from images

Remote images

  • The page-read engine should be patched to learn how to talk to the page server on the other end
  • The page server should get pages from tasks dumped and send them out on the destination node.
  • Protocol should include out-of-order pages and background pages pushing (sending them before demand from the process)
  • The now dump-only --page-server option should be used for restore