On Thu, Jul 25, 2024 at 7:55 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Wed, 10 Jul 2024 16:36:41 +0800 Zhiguo Jiang <justinjiang@xxxxxxxx> wrote: > > > The releasing process of the non-shared anonymous folio mapped solely by > > an exiting process may go through two flows: 1) the anonymous folio is > > firstly is swaped-out into swapspace and transformed into a swp_entry > > in shrink_folio_list; 2) then the swp_entry is released in the process > > exiting flow. This will result in the high cpu load of releasing a > > non-shared anonymous folio mapped solely by an exiting process. > > > > When the low system memory and the exiting process exist at the same > > time, it will be likely to happen, because the non-shared anonymous > > folio mapped solely by an exiting process may be reclaimed by > > shrink_folio_list. > > > > This patch is that shrink skips the non-shared anonymous folio solely > > mapped by an exting process and this folio is only released directly in > > the process exiting flow, which will save swap-out time and alleviate > > the load of the process exiting. > > Has any testing been performed to demonstrate any benefit? If so, what > were the results? I think I shared my demonstration in version 7: https://lore.kernel.org/linux-mm/20240710033212.36497-1-21cnbao@xxxxxxxxx/ I noticed a significant improvement with my small test program. I observed that this patch effectively skipped 6114 folios (either 4KB or 64KB mTHP), potentially reducing the swap-out by up to 92MB (97,300,480 bytes) during the process exit. The working set size is 256MB. If Zhiguo can add more test data from different (real) workloads, it would be greatly appreciated. Thanks Barry