public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH][mm] swsusp: limit image size
@ 2005-12-07 21:46 Rafael J. Wysocki
  2005-12-07 21:52 ` Pavel Machek
                   ` (2 more replies)
  0 siblings, 3 replies; 23+ messages in thread
From: Rafael J. Wysocki @ 2005-12-07 21:46 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Pavel Machek, LKML

Hi,

The following patch limits the size of the suspend image to approx. 500 MB,
which should improve the overall performance of swsusp on systems with
more than 1 GB of RAM.

It introduces the constant IMAGE_SIZE that can be set to the preferred size
of the image (in MB) and modifies the memory-shrinking part of
swsusp to take this constant into account (500 is the default value
of IMAGE_SIZE).

Please apply (Pavel, please ack if that's ok).

Greetings,
Rafael


Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

 kernel/power/power.h  |    8 +++-----
 kernel/power/swsusp.c |   17 ++++++++---------
 2 files changed, 11 insertions(+), 14 deletions(-)

Index: linux-2.6.15-rc5-mm1/kernel/power/power.h
===================================================================
--- linux-2.6.15-rc5-mm1.orig/kernel/power/power.h	2005-12-05 22:07:12.000000000 +0100
+++ linux-2.6.15-rc5-mm1/kernel/power/power.h	2005-12-07 22:16:55.000000000 +0100
@@ -53,12 +53,10 @@
 extern struct pbe *pagedir_nosave;
 
 /*
- * This compilation switch determines the way in which memory will be freed
- * during suspend.  If defined, only as much memory will be freed as needed
- * to complete the suspend, which will make it go faster.  Otherwise, the
- * largest possible amount of memory will be freed.
+ * Preferred image size in MB (set it to zero to get the smallest
+ * image possible)
  */
-#define FAST_FREE	1
+#define IMAGE_SIZE	500
 
 extern asmlinkage int swsusp_arch_suspend(void);
 extern asmlinkage int swsusp_arch_resume(void);
Index: linux-2.6.15-rc5-mm1/kernel/power/swsusp.c
===================================================================
--- linux-2.6.15-rc5-mm1.orig/kernel/power/swsusp.c	2005-12-05 22:07:12.000000000 +0100
+++ linux-2.6.15-rc5-mm1/kernel/power/swsusp.c	2005-12-07 14:15:40.000000000 +0100
@@ -626,7 +626,7 @@
 
 int swsusp_shrink_memory(void)
 {
-	long tmp;
+	long size, tmp;
 	struct zone *zone;
 	unsigned long pages = 0;
 	unsigned int i = 0;
@@ -634,11 +634,11 @@
 
 	printk("Shrinking memory...  ");
 	do {
-#ifdef FAST_FREE
-		tmp = 2 * count_highmem_pages();
-		tmp += tmp / 50 + count_data_pages();
-		tmp += (tmp + PBES_PER_PAGE - 1) / PBES_PER_PAGE +
+		size = 2 * count_highmem_pages();
+		size += size / 50 + count_data_pages();
+		size += (size + PBES_PER_PAGE - 1) / PBES_PER_PAGE +
 			PAGES_FOR_IO;
+		tmp = size;
 		for_each_zone (zone)
 			if (!is_highmem(zone))
 				tmp -= zone->free_pages;
@@ -647,11 +647,10 @@
 			if (!tmp)
 				return -ENOMEM;
 			pages += tmp;
+		} else if (size > (IMAGE_SIZE * 1024 * 1024) / PAGE_SIZE) {
+			tmp = shrink_all_memory(SHRINK_BITE);
+			pages += tmp;
 		}
-#else
-		tmp = shrink_all_memory(SHRINK_BITE);
-		pages += tmp;
-#endif
 		printk("\b%c", p[i++%4]);
 	} while (tmp > 0);
 	printk("\bdone (%lu pages freed)\n", pages);


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

end of thread, other threads:[~2005-12-18 18:24 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-07 21:46 [PATCH][mm] swsusp: limit image size Rafael J. Wysocki
2005-12-07 21:52 ` Pavel Machek
2005-12-09 15:45 ` Stefan Seyfried
2005-12-09 15:48 ` Stefan Seyfried
2005-12-09 17:04   ` Rafael J. Wysocki
2005-12-09 18:30     ` Stefan Seyfried
2005-12-09 19:17       ` Pavel Machek
2005-12-09 22:08         ` Rafael J. Wysocki
2005-12-10 13:21           ` [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size) Rafael J. Wysocki
2005-12-10 16:06             ` Pavel Machek
2005-12-10 20:06               ` Rafael J. Wysocki
2005-12-10 22:56                 ` Rafael J. Wysocki
2005-12-10 23:01                   ` Pavel Machek
2005-12-16  2:09                   ` Andy Isaacson
2005-12-16 10:16                     ` Stefan Seyfried
2005-12-16 14:26                       ` Christian Trefzer
2005-12-16 18:08                         ` Rafael J. Wysocki
2005-12-16 19:29                           ` Christian Trefzer
2005-12-16 21:09                             ` Rafael J. Wysocki
2005-12-17 16:47                               ` [RFC] swsusp: brainstorming on a freaked-out approach (was: Re: [RFC/RFT] swsusp: image size tunable) Christian Trefzer
2005-12-18 17:44                                 ` Pavel Machek
2005-12-18 18:24                                   ` [RFC] swsusp: brainstorming on a freaked-out approach Christian Trefzer
2005-12-10 22:59                 ` [RFC/RFT] swsusp: image size tunable (was: Re: [PATCH][mm] swsusp: limit image size) Pavel Machek

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