<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr"> Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>> wrote:<br></div><div dir="ltr" class="gmail_attr"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Issue:<br>
<br>
Currently test swapping01 read the system FreeSwap for counting usage of<br>
swap-size, that's not precise on system especially with eating-memory daemon<br>
in the background.<br>
<br>
Improvement:<br>
<br>
Considering that swap out unreferenced pages also could be occurred in a<br>
single process. So that we encapsulate all of the means in a single process<br>
to avoid involving the whole system swap-counting. Then only try to check the<br>
'VmSwap' in proc/PID/status per process, to get rid of the potential influence<br>
from other processes which easily leads to false positive.  e.g.<br>
<br>
Child:<br>
         touch unreferenced pages (via alloc&write&free 1.3*MemAvailable) [1]<br>
         alloc&wirte 1.3*MemAvailable<br>
         raise(SIGSTOP)<br>
         ...<br>
Parent:<br>
         waiting for child suspension<br>
         check child's VmSwap to see if heavy-swap occurs in a process<br>
         ...<br>
<br>
[1] As to perform alloc&write&free, the system pages will go through a<br>
completed life cycle from buddy-system to active-list to inactive-list<br>
then back to buddy-system, which reflect to a page status is theoretically like:<br>
"inactive,unreferenced -> active,referenced -> ... ->inactive,unreferenced"<br>
so that will helpful to produce what the kernel target commit fixed situation.<br>
<br>
New reproducer works well with unfix-kernel:<br>
<br>
  # uname  -r<br>
  2.6.39<br>
<br>
  # ./swapping01<br>
  tst_test.c:1263: TINFO: Timeout per run is 0h 05m 00s<br>
  swapping01.c:110: TINFO: available physical memory: 1896 MB<br>
  swapping01.c:113: TINFO: try to allocate: 2466 MB<br>
  swapping01.c:148: TFAIL: heavy swapping detected: 1905 MB swapped.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">BTW, t<span style="color:rgb(51,51,51);font-size:14px">o be on the safe side, </span>I tried on kernel-3.2.0 (with dropping that</div><div class="gmail_default" style="font-size:small">fix commit), it also could be reproduced in such a single process way.</div><div class="gmail_default" style="font-size:small">But after adding back the revert commit, swapping01 gets PASS in 100 times.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I think it can prove that the patch makes some sense to swapping01.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"></div><div></div># uname  -rm<br><div class="gmail_default" style="font-size:small">3.2.0+ s390x</div><br></div><div><br></div><div><div class="gmail_default" style="font-size:small">FAIL on kernel reverts that fix-commit </div><div class="gmail_default" style="font-size:small">----------------------</div></div><div><div class="gmail_default" style="font-size:small"># ./swapping01 -i 100</div>tst_test.c:1263: TINFO: Timeout per run is 0h 05m 00s<br>swapping01.c:110: TINFO: available physical memory: 1895 MB<br>swapping01.c:113: TINFO: try to allocate: 2464 MB<br>swapping01.c:148: TFAIL: heavy swapping detected: 1905 MB swapped.<br><div class="gmail_default" style="font-size:small"></div></div><div><br></div><div><br></div><div class="gmail_default" style="font-size:small">PASS on kernel includes that fix-commit</div><div class="gmail_default" style="font-size:small">----------------------</div></div><div><div class="gmail_default" style="font-size:small"># ./swapping01 -i 100</div>tst_test.c:1263: TINFO: Timeout per run is 0h 05m 00s<br>swapping01.c:110: TINFO: available physical memory: 1876 MB<br>swapping01.c:113: TINFO: try to allocate: 2439 MB<br>swapping01.c:152: TPASS: no heavy swapping detected, 593 MB swapped.<br>swapping01.c:110: TINFO: available physical memory: 1919 MB<br>swapping01.c:113: TINFO: try to allocate: 2495 MB<br>swapping01.c:152: TPASS: no heavy swapping detected, 650 MB swapped.<br><div class="gmail_default" style="font-size:small">...</div><div class="gmail_default" style="font-size:small"></div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>