<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 22, 2022 at 10:45 PM Michal Koutný <<a href="mailto:mkoutny@suse.com">mkoutny@suse.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello.<br>
<br>
On Tue, Feb 22, 2022 at 12:45:47PM +0000, Richard Palethorpe <<a href="mailto:rpalethorpe@suse.com" target="_blank">rpalethorpe@suse.com</a>> wrote:<br>
> + * "First, this test creates the following hierarchy:<br>
> + * A       memory.low = 50M,  memory.max = 200M<br>
> + * A/B     memory.low = 50M,  memory.current = 50M<br>
> + * A/B/C   memory.low = 75M,  memory.current = 50M<br>
> + * A/B/D   memory.low = 25M,  memory.current = 50M<br>
> + * A/B/E   memory.low = 500M, memory.current = 0<br>
> + * A/B/F   memory.low = 0,    memory.current = 50M<br>
> + *<br>
> + * Usages are pagecache<br>
> + * Then it creates A/G and creates a significant<br>
> + * memory pressure in it.<br>
> + *<br>
> + * A/B    memory.current ~= 50M<br>
> + * A/B/C  memory.current ~= 33M<br>
> + * A/B/D  memory.current ~= 17M<br>
> + * A/B/E  memory.current ~= 0<br>
<br>
This nicely misses the expected consumption of the F cgroup (I see it's<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">+1</div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
missing in the original too). But one can expect from complementarity<br>
it's zero (if one accepts these values, which unfortunately is not true<br>
with hierarchical & scaled reclaim protection).<br>
<br>
> +             if (i < E || (i == F && tst_cg_memory_recursiveprot())) {<br>
> +                     TST_EXP_EXPR(low > 0,<br>
> +                                  "(%c low events=%ld) > 0", id, low);<br>
> +             } else {<br>
> +                     TST_EXP_EXPR(low == 0,<br>
> +                                  "(%c low events=%ld) == 0", id, low);<br>
> +             }<br>
<br>
Despite this makes the test behavior consistent, I think this is<br>
unexpected behavior with recursive_memoryprot. With the given<br>
configuration, there should never be residual protection that F assumes.<br>
<br>
Unless there is a good explanation [1], I'd consider non-zero<br>
memory.events:low in F the test failure here.<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Hmm, the documentation does not give an explicit description for</div><div class="gmail_default" style="font-size:small">recursive_memoryprot. If things like you said, it is more like a </div><div class="gmail_default" style="font-size:small">CGroup bug in the kernel.</div><div class="gmail_default" style="font-size:small"><br></div></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>