13–15 Nov 2023
America/New_York timezone

Introducing PAGEMAP_SCAN IOCTL for Windows syscalls translation and CRIU

13 Nov 2023, 14:35
25m
"James River Salon B" (Omni Richmond Hotel)

"James River Salon B"

Omni Richmond Hotel

83
Containers and checkpoint/restore MC Containers and checkpoint/restore MC

Speakers

Andrei VaginMr Muhammad Usama Anjum (Collabora)

Description

Windows APIs GetWriteWatch() and ResetWriteWatch() are used to get and clear the write-tracking state atomically of any number of pages in memory. Only the kernel can keep track of this state efficiently through the memory management component. Linux Kernel lacked this support.

Soft-dirty PTE flag was used initially. But it had to be left alone because of its short-comings and no way to fix it after years. UFFD_FEATURE_WP_ASYNC and UFFD_FEATURE_WP_UNPOPULATED are the new features which have been added in Userfaultfd to keep track of write-tracking state asynchronously and correctly. PAGEMAP_SCAN IOCTL has been added to filter the information about PTE bits and only get desired data. It is used to perform get and clear the write-tracking state atomically.

By using it, CRIU doesn’t need to freeze processes to pre-dump their memory and it’ll have the accurate information about pages to the moment of dumping them.

We'll discuss its evolution, current implementation, use cases, and benchmarks. The IOCTL is at v33. This discussion aims to advance patches and attract more users to this interface.

Primary author

Mr Muhammad Usama Anjum (Collabora)

Co-author

Presentation materials

Diamond Sponsors
Platinum Sponsor
Gold Sponsors
Silver Sponsors
Catchbox Sponsor
Livestream Sponsors
T-Shirt Sponsor
Conference Services Provided by