linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: shrink skip folio mapped by an exiting task
@ 2024-02-21 11:49 Zhiguo Jiang
  2024-06-30  9:35 ` Barry Song
  2024-07-02 13:26 ` David Hildenbrand
  0 siblings, 2 replies; 6+ messages in thread
From: Zhiguo Jiang @ 2024-02-21 11:49 UTC (permalink / raw)
  To: Andrew Morton, linux-mm, linux-kernel; +Cc: opensource.kernel, Zhiguo Jiang

If an anon folio reclaimed by shrink_inactive_list is mapped by an
exiting task, this anon folio will be firstly swaped-out into
swapspace in shrink flow and then this swap folio is freed in task
exit flow. But if this folio mapped by an exiting task can skip
shrink and be freed directly in task exiting flow, which will save
swap-out time and alleviate the load of the tasks exiting process.
The file folio is also similar.

And when system is low memory, it more likely to occur, because more
backend applidatuions will be killed.

This patch can alleviate the load of the tasks exiting process.

Signed-off-by: Zhiguo Jiang <justinjiang@vivo.com>
---
 mm/rmap.c | 7 +++++++
 1 file changed, 7 insertions(+)
 mode change 100644 => 100755 mm/rmap.c

diff --git a/mm/rmap.c b/mm/rmap.c
index 3746a5531018..146e5f4ec069
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -840,6 +840,13 @@ static bool folio_referenced_one(struct folio *folio,
 	int referenced = 0;
 	unsigned long start = address, ptes = 0;
 
+	/* Skip this folio if it's mapped by an exiting task */
+	if (unlikely(!atomic_read(&vma->vm_mm->mm_users)) ||
+		unlikely(test_bit(MMF_OOM_SKIP, &vma->vm_mm->flags))) {
+		pra->referenced = -1;
+		return false;
+	}
+
 	while (page_vma_mapped_walk(&pvmw)) {
 		address = pvmw.address;
 
-- 
2.39.0



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-07-08  9:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-21 11:49 [PATCH] mm: shrink skip folio mapped by an exiting task Zhiguo Jiang
2024-06-30  9:35 ` Barry Song
2024-07-08  3:40   ` zhiguojiang
2024-07-08  3:54     ` Barry Song
2024-07-08  9:24       ` zhiguojiang
2024-07-02 13:26 ` David Hildenbrand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox