[CRIU] Optimize pre-dump algorithm

Radostin Stoyanov rstoyanov1 at gmail.com
Tue Jul 30 09:59:10 MSK 2019


On 30/07/2019 05:34, Andrei Vagin (C) wrote:
> pls use git send-email to send a series of patches. All patches have to
> be in reply to the cover letter.
Example:

$ git send-email -6 --cover-letter --annotate --to=criu at openvz.org

Where '-6' is the number of commits that will be send to the mailing list.
> The cover letter should contain a description for a whole series.
>
> You need to describe how you optimize pre-dump algorithm, give some
> numbers how fast it is now, etc.
>
> On Thu, Jul 25, 2019 at 06:48:00AM +0530, Abhishek Dubey wrote:
>> [PATCH 1/6] Skip adding PROT_READ flag
>> [PATCH 2/6] Skip generating iov for non PROT_READ region
>> [PATCH 3/6] Drain memory using process_vm_readv syscall
>> [PATCH 4/6] Adding new function cnt_sub
>> [PATCH 5/6] Hack to handle vmsplice fail: resolve later
>> [PATCH 6/6] Refactor time accounting macros
>>
>>
>> Stats Dump:
>> ===========
>>
>> Optimized pre-dump:
>> ===================
>>
>> s
>> === Run 1/1 ================ zdtm/transition/maps007
>> ======================= Run zdtm/transition/maps007 in h
>> =======================
>> Start test
>> Test is SUID
>> ./maps007 --pidfile=maps007.pid --outfile=maps007.out
>> Run criu pre-dump
>> {
>>      "magic": "STATS",
>>      "entries": [
>>          {
>>              "dump": {
>>                  "freezing_time": 227,
>>                  "frozen_time": 81509,
>>                  "memdump_time": 33139,
>>                  "memwrite_time": 15374,
>>                  "pages_scanned": 134211,
>>                  "pages_skipped_parent": 0,
>>                  "pages_written": 2626,
>>                  "irmap_resolve": 0,
>>                  "pages_lazy": 0,
>>                  "page_pipes": 10,
>>                  "page_pipe_bufs": 22,
>>                  "shpages_scanned": 2,
>>                  "shpages_skipped_parent": 0,
>>                  "shpages_written": 2
>>              }
>>          }
>>      ]
>> }
>> Run criu dump
>> {
>>      "magic": "STATS",
>>      "entries": [
>>          {
>>              "dump": {
>>                  "freezing_time": 216,
>>                  "frozen_time": 173619,
>>                  "memdump_time": 93012,
>>                  "memwrite_time": 40636,
>>                  "pages_scanned": 264466,
>>                  "pages_skipped_parent": 45,
>>                  "pages_written": 7019,
>>                  "irmap_resolve": 0,
>>                  "pages_lazy": 0,
>>                  "page_pipes": 18,
>>                  "page_pipe_bufs": 18,
>>                  "shpages_scanned": 2,
>>                  "shpages_skipped_parent": 0,
>>                  "shpages_written": 2
>>              }
>>          }
>>      ]
>> }
>> Run criu restore
>> {
>>      "magic": "STATS",
>>      "entries": [
>>          {
>>              "restore": {
>>                  "pages_compared": 184,
>>                  "pages_skipped_cow": 176,
>>                  "forking_time": 1209,
>>                  "restore_time": 90484,
>>                  "pages_restored": 6888
>>              }
>>          }
>>      ]
>> }
>> Send the 15 signal to  38
>> Wait for zdtm/transition/maps007(38) to die for 0.100000
>> Wait for zdtm/transition/maps007(38) to die for 0.200000
>> Removing dump/zdtm/transition/maps007/38
>> ====================== Test zdtm/transition/maps007 PASS
>> =======================
>>
>>
>> Vanilla pre-dump:
>> =================
>>
>> criu at criu-gsoc:~/vanilla/criu$ sudo python test/zdtm.py run --pre 1 -t
>> zdtm/transition/maps007 --show-stats
>> === Run 1/1 ================ zdtm/transition/maps007
>> ======================= Run zdtm/transition/maps007 in h
>> =======================
>> Start test
>> Test is SUID
>> ./maps007 --pidfile=maps007.pid --outfile=maps007.out
>> Run criu pre-dump
>> {
>>      "magic": "STATS",
>>      "entries": [
>>          {
>>              "dump": {
>>                  "freezing_time": 225,
>>                  "frozen_time": 112146,
>>                  "memdump_time": 50245,
>>                  "memwrite_time": 42774,
>>                  "pages_scanned": 264402,
>>                  "pages_skipped_parent": 0,
>>                  "pages_written": 7120,
>>                  "irmap_resolve": 0,
>>                  "pages_lazy": 0,
>>                  "page_pipes": 17,
>>                  "page_pipe_bufs": 29,
>>                  "shpages_scanned": 2,
>>                  "shpages_skipped_parent": 0,
>>                  "shpages_written": 2
>>              }
>>          }
>>      ]
>> }
>> Run criu dump
>> {
>>      "magic": "STATS",
>>      "entries": [
>>          {
>>              "dump": {
>>                  "freezing_time": 212,
>>                  "frozen_time": 168895,
>>                  "memdump_time": 92811,
>>                  "memwrite_time": 41312,
>>                  "pages_scanned": 264541,
>>                  "pages_skipped_parent": 50,
>>                  "pages_written": 7296,
>>                  "irmap_resolve": 0,
>>                  "pages_lazy": 0,
>>                  "page_pipes": 18,
>>                  "page_pipe_bufs": 18,
>>                  "shpages_scanned": 2,
>>                  "shpages_skipped_parent": 0,
>>                  "shpages_written": 2
>>              }
>>          }
>>      ]
>> }
>> Run criu restore
>> {
>>      "magic": "STATS",
>>      "entries": [
>>          {
>>              "restore": {
>>                  "pages_compared": 637,
>>                  "pages_skipped_cow": 631,
>>                  "forking_time": 1254,
>>                  "restore_time": 109873,
>>                  "pages_restored": 6715
>>              }
>>          }
>>      ]
>> }
>> Send the 15 signal to  38
>> Wait for zdtm/transition/maps007(38) to die for 0.100000
>> Wait for zdtm/transition/maps007(38) to die for 0.200000
>> Removing dump/zdtm/transition/maps007/38
>> ====================== Test zdtm/transition/maps007 PASS
>> =======================



More information about the CRIU mailing list