diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index c15da1ea7e639bc0ab56bc747a4f7110c38f7187..eb32d0707c80d554c040cd0ea350913b31888429 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -1879,8 +1879,16 @@ static void set_recommended_min_free_kbytes(void)
 	int nr_zones = 0;
 	unsigned long recommended_min;
 
-	for_each_populated_zone(zone)
+	for_each_populated_zone(zone) {
+		/*
+		 * We don't need to worry about fragmentation of
+		 * ZONE_MOVABLE since it only has movable pages.
+		 */
+		if (zone_idx(zone) > gfp_zone(GFP_USER))
+			continue;
+
 		nr_zones++;
+	}
 
 	/* Ensure 2 pageblocks are free to assist fragmentation avoidance */
 	recommended_min = pageblock_nr_pages * nr_zones * 2;