<div dir="ltr">Hi all,<div><br></div><div>thank you both for you help!</div><div><br></div><div>I ended up solving the problem with MADVISE_DONTNEED (which does not require changes to CRIU).</div><div><br></div><div>I did not need to use compel but it looks like a great tool and it gave me some ideas for future research :-)</div><div><br></div><div>Cheers,</div><div>rodrigo</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-05 8:45 GMT+00:00 Pavel Emelyanov <span dir="ltr">&lt;<a href="mailto:xemul@virtuozzo.com" target="_blank">xemul@virtuozzo.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 12/04/2016 08:20 PM, Raghavendra Prabhu wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I have seen similar problem manifesting in the form such as<br>
&gt; <a href="https://bugs.launchpad.net/percona-server/+bug/1092645" rel="noreferrer" target="_blank">https://bugs.launchpad.net/<wbr>percona-server/+bug/1092645</a> wherein people<br>
&gt; don&#39;t want large memory pools in their coredumps. In this case, they<br>
&gt; mark it as MADV_DONTDUMP.  Is it good to  assume that whatever is not<br>
&gt; required in the coredump is not good for checkpoint images either.  If<br>
&gt; not MADV_DONTDUMP, /proc/$pid/coredump_filter is used.<br>
&gt;<br>
&gt; So, wondering if something like<br>
&gt; <a href="https://gist.github.com/ronin13/59c6ffab786db7ef9e54db4fb29b4992" rel="noreferrer" target="_blank">https://gist.github.com/<wbr>ronin13/<wbr>59c6ffab786db7ef9e54db4fb29b49<wbr>92</a> would<br>
&gt; be useful here.<br>
<br>
</span>I tend to agree, but ... from my perspective, pages that are not required<br>
in a core-dump might still be required for an application to work. So your<br>
patch is OK, but it required a CLI option to be turned on. Always silently<br>
dropping the MADV_DONTDUMP pages may cause problems.<br>
<span class="HOEnZb"><font color="#888888"><br>
-- Pavel<br>
</font></span><span class=""><br>
&gt;<br>
&gt; On Wed, Nov 30, 2016 at 11:17 AM, Pavel Emelyanov &lt;<a href="mailto:xemul@virtuozzo.com">xemul@virtuozzo.com</a>&gt; wrote:<br>
&gt;&gt; On 11/30/2016 12:47 PM, Rodrigo Bruno wrote:<br>
&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I am using CRIU to checkpoint JVMs with heaps &gt; 10GB.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I want to reduce the size of the checkpoint and I know that there are memory ranges that<br>
&gt;&gt;&gt; although being allocated and touched by the JVM, represent garbage and could be discarted<br>
&gt;&gt;<br>
&gt;&gt; Heh... This is something I thought of long ago. The idea by that time was<br>
&gt;&gt; that we could ship a library that applications can link with, and, when<br>
&gt;&gt; criu dumps them, it can detect the library is there and call some code from<br>
&gt;&gt; victim task. So that application can do some preparatory work before being<br>
&gt;&gt; checkpointed. But this would require patching JVM :\<br>
&gt;&gt;<br>
&gt;&gt;&gt; when dumping the JVM (don&#39;t worry, I can ensure that the JVM is stopped while running this operation).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Q1. Does CRIU support this?<br>
&gt;&gt;<br>
&gt;&gt; Nope :)<br>
&gt;&gt;<br>
&gt;&gt;&gt; Q2. Without changing CRIU, is there any way to achieve this? Could I change a page table<br>
&gt;&gt;&gt; entry to force a page with garbage to be mapped to the zero page?<br>
&gt;&gt;<br>
&gt;&gt; Yes and no. There are no standard knobs for this, but (!) we have announced<br>
&gt;&gt; compel recently. With it you can cook a parasite code that would call<br>
&gt;&gt; MADVISE_DONTNEED on the desired ranges thus punching the holes in memory.<br>
&gt;&gt;<br>
&gt;&gt; -- Pavel<br>
&gt;&gt;<br>
&gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; CRIU mailing list<br>
&gt;&gt; <a href="mailto:CRIU@openvz.org">CRIU@openvz.org</a><br>
&gt;&gt; <a href="https://lists.openvz.org/mailman/listinfo/criu" rel="noreferrer" target="_blank">https://lists.openvz.org/<wbr>mailman/listinfo/criu</a><br>
</span>&gt; .<br>
&gt;<br>
<br>
</blockquote></div><br></div>