<div dir="ltr">Hello,<div><br></div><div>

 I&#39;m trying to dump a set of tasks which share a lot of read only data but the dump size goes up in proportion to the number of child processes.

I&#39;ve read the page on Copy on Write optimization in CRIU (<a href="https://criu.org/Copy-on-write_memory">https://criu.org/Copy-on-write_memory</a>).</div><div><br></div><div>For example, if I try to dump the processes running this simple C code:</div><div><br></div><div><div style="box-sizing:border-box;font-size:14px"><font face="monospace">int main () {<br>
        int *mem = (int *) malloc(sizeof(int) * 1024 * 1024 * 1024);<br>
        for (int i = 0; i &lt; 1024 * 1024 * 1024; i ++) mem[i] = i;<br>
        fork();<br>
        while (1) {}<br>
        return 0;<br>
}</font></div></div><div style="box-sizing:border-box;font-size:14px"><font face="monospace"><br></font></div><div style="box-sizing:border-box"><font face="arial, sans-serif" style=""><span style="font-size:14px">The size of the images is 8G, but the 4G segment of VM is read only and thus need not be duplicated. Is it so that CRIU dumps the entire process space but marks the memory </span>segments<span style="font-size:14px"> as CoW only upon restore? In that case, would it be possible for CRIU to store only the memory segments that have changed to decrease dump size? I would be happy to take up this line of work if anyone can point me in the right direction.</span></font></div><div style="box-sizing:border-box"><font face="arial, sans-serif" style=""><span style="font-size:14px"><br></span></font></div><div style="box-sizing:border-box"><font face="arial, sans-serif" style=""><span style="font-size:14px">Thanks in advance for the help!</span></font></div><div style="box-sizing:border-box"><font face="arial, sans-serif" style=""><span style="font-size:14px"><br></span></font></div><div style="box-sizing:border-box"><font face="arial, sans-serif" style=""><span style="font-size:14px">Shubham Chaudhary</span></font></div></div>