Re: Free memory never fully used, swapping

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Shaohua Li
Date: Thursday, November 25, 2010 - 7:00 pm

On Fri, 2010-11-26 at 00:15 +0800, Mel Gorman wrote:
record the order seems not sufficient. in balance_pgdat(), the for look
exit only when:
priority <0 or sc.nr_reclaimed >= SWAP_CLUSTER_MAX.
but we do if (sc.nr_reclaimed < SWAP_CLUSTER_MAX)
                        order = sc.order = 0;
this means before we set order to 0, we already reclaimed a lot of
pages, so I thought we need set order to 0 earlier before there are
enough free pages. below is a debug patch.


diff --git a/mm/vmscan.c b/mm/vmscan.c
index d31d7ce..ee5d2ed 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2117,6 +2117,26 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
 }
 #endif
 
+static int all_zone_enough_free_pages(pg_data_t *pgdat)
+{
+	int i;
+
+	for (i = 0; i < pgdat->nr_zones; i++) {
+		struct zone *zone = pgdat->node_zones + i;
+
+		if (!populated_zone(zone))
+			continue;
+
+		if (zone->all_unreclaimable)
+			continue;
+
+		if (!zone_watermark_ok(zone, 0, high_wmark_pages(zone) * 8,
+								0, 0))
+			return 0;
+	}
+	return 1;
+}
+
 /* is kswapd sleeping prematurely? */
 static int sleeping_prematurely(pg_data_t *pgdat, int order, long remaining)
 {
@@ -2355,7 +2375,8 @@ out:
 		 * back to sleep. High-order users can still perform direct
 		 * reclaim if they wish.
 		 */
-		if (sc.nr_reclaimed < SWAP_CLUSTER_MAX)
+		if (sc.nr_reclaimed < SWAP_CLUSTER_MAX ||
+		    (order > 0 && all_zone_enough_free_pages(pgdat)))
 			order = sc.order = 0;
 
 		goto loop_again;


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Free memory never fully used, swapping, Simon Kirby, (Mon Nov 15, 12:52 pm)
Re: Free memory never fully used, swapping, Andrew Morton, (Mon Nov 22, 4:44 pm)
Re: Free memory never fully used, swapping, Simon Kirby, (Mon Nov 22, 6:34 pm)
Re: Free memory never fully used, swapping, Dave Hansen, (Tue Nov 23, 1:35 am)
Re: Free memory never fully used, swapping, Mel Gorman, (Tue Nov 23, 3:04 am)
Re: Free memory never fully used, swapping, Simon Kirby, (Tue Nov 23, 11:43 pm)
Re: Free memory never fully used, swapping, Simon Kirby, (Wed Nov 24, 1:46 am)
Re: Free memory never fully used, swapping, Mel Gorman, (Wed Nov 24, 2:27 am)
Re: Free memory never fully used, swapping, Simon Kirby, (Wed Nov 24, 12:17 pm)
Re: Free memory never fully used, swapping, Shaohua Li, (Wed Nov 24, 6:07 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Wed Nov 24, 6:18 pm)
Re: Free memory never fully used, swapping, Simon Kirby, (Thu Nov 25, 2:03 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Thu Nov 25, 3:18 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Thu Nov 25, 3:51 am)
Re: Free memory never fully used, swapping, Mel Gorman, (Thu Nov 25, 9:12 am)
Re: Free memory never fully used, swapping, Mel Gorman, (Thu Nov 25, 9:15 am)
Re: Free memory never fully used, swapping, Simon Kirby, (Thu Nov 25, 10:13 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Thu Nov 25, 5:07 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Thu Nov 25, 5:33 pm)
Re: Free memory never fully used, swapping, Shaohua Li, (Thu Nov 25, 6:05 pm)
Re: Free memory never fully used, swapping, Mel Gorman, (Thu Nov 25, 6:25 pm)
Re: Free memory never fully used, swapping, Shaohua Li, (Thu Nov 25, 7:00 pm)
Re: Free memory never fully used, swapping, Shaohua Li, (Thu Nov 25, 7:05 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Thu Nov 25, 7:31 pm)
Re: Free memory never fully used, swapping, Shaohua Li, (Thu Nov 25, 7:40 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Fri Nov 26, 2:18 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Fri Nov 26, 4:03 am)
Re: Free memory never fully used, swapping, Mel Gorman, (Fri Nov 26, 4:11 am)
Re: Free memory never fully used, swapping, Christoph Lameter, (Fri Nov 26, 8:48 am)
Re: Free memory never fully used, swapping, Shaohua Li, (Sun Nov 28, 6:03 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Sun Nov 28, 6:13 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Mon Nov 29, 2:31 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Mon Nov 29, 5:25 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Mon Nov 29, 11:31 pm)
Re: Free memory never fully used, swapping, Simon Kirby, (Tue Nov 30, 1:22 am)
Re: Free memory never fully used, swapping, Simon Kirby, (Tue Nov 30, 2:13 am)
Re: Free memory never fully used, swapping, Mel Gorman, (Tue Nov 30, 3:41 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Tue Nov 30, 4:19 am)
Re: Free memory never fully used, swapping, Christoph Lameter, (Tue Nov 30, 12:10 pm)
Re: Free memory never fully used, swapping, Christoph Lameter, (Tue Nov 30, 12:13 pm)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Wed Dec 1, 3:17 am)
Re: Free memory never fully used, swapping, Christoph Lameter, (Wed Dec 1, 8:29 am)
Re: Free memory never fully used, swapping, KOSAKI Motohiro, (Wed Dec 1, 7:44 pm)
Re: Free memory never fully used, swapping, Christoph Lameter, (Thu Dec 2, 7:39 am)