summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Yang <yang.yang29@zte.com.cn>2022-06-23 02:08:34 +0000
committerLiam R. Howlett <Liam.Howlett@oracle.com>2022-07-19 20:15:12 -0400
commit5152f794109852e2f15621cf61529bccc9f5fefa (patch)
treef43a18638e137b1c5625af3819edac93115a3627
parent47ccb42187e695f8d42becca54d47abbeae2e2ac (diff)
mm/page_alloc: make the annotations of available memory more accurate
Not all systems use swap, so estimating available memory would help to prevent swapping or OOM of system that not use swap. And we need to reserve some page cache to prevent swapping or thrashing. If somebody is accessing the pages in pagecache, and if too much would be freed, most accesses might mean reading data from disk, i.e. thrashing. Link: https://lkml.kernel.org/r/20220623020833.972979-1-yang.yang29@zte.com.cn Signed-off-by: Yang Yang <yang.yang29@zte.com.cn> Signed-off-by: CGEL ZTE <cgel.zte@gmail.com> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/page_alloc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 49161e86f2e1..3a8725c8bb1b 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5879,14 +5879,14 @@ long si_mem_available(void)
/*
* Estimate the amount of memory available for userspace allocations,
- * without causing swapping.
+ * without causing swapping or OOM.
*/
available = global_zone_page_state(NR_FREE_PAGES) - totalreserve_pages;
/*
* Not all the page cache can be freed, otherwise the system will
- * start swapping. Assume at least half of the page cache, or the
- * low watermark worth of cache, needs to stay.
+ * start swapping or thrashing. Assume at least half of the page
+ * cache, or the low watermark worth of cache, needs to stay.
*/
pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE];
pagecache -= min(pagecache / 2, wmark_low);