[linux-pm] Re: swsusp: Not enough free pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

> > >    > I got this error when I'm hacking suspend-to-disk on my IA64 box
> > >    with 1G
> > >    > memory.
> > >    > (Pagesize 64K,MemTotal:  1002112 kB ,MemFree:  395008 kB)
> > >    > Do you plan to improve it by compressing pages ?
> > >    >
> > >    > swsusp: Need to copy 9878 pages
> > >    > suspend: (pages needed: 9878 + 512 free: 6486)
> > >    > swsusp: Not enough free pages: Have 6486
> > >    I have not seen one of those for a long time (on i386). Does this
> > >    happen
> > >    every time? 
> > 
> > So far, yes. I just tried 2 times.
> 
> always. (I check that swap dev is on)
> 
> Sometimes, my ia32 laptop free 0 pages too.
> I think we should always free some pages 
> from various caches. 

Try this hack... it is basically mm problem I don't know how to fix,
but this seems to help.
								Pavel

Index: kernel/power/disk.c
===================================================================
--- 805a02ec2bcff3671d7b1e701bd1981ad2fa196c/kernel/power/disk.c  (mode:100644)
+++ ecd8559cc08319bb16a42aac06cf7d664157643a/kernel/power/disk.c  (mode:100644)
@@ -88,23 +92,25 @@
 
 static void free_some_memory(void)
 {
-	unsigned int i = 0;
-	unsigned int tmp;
-	unsigned long pages = 0;
-	char *p = "-\\|/";
-
-	printk("Freeing memory...  ");
-	while ((tmp = shrink_all_memory(10000))) {
-		pages += tmp;
-		printk("\b%c", p[i]);
-		i++;
-		if (i > 3)
-			i = 0;
+	int i;
+	for (i=0; i<5; i++) {
+		int i = 0, tmp;
+		long pages = 0;
+		char *p = "-\\|/";
+
+		printk("Freeing memory...  ");
+		while ((tmp = shrink_all_memory(10000))) {
+			pages += tmp;
+			printk("\b%c", p[i]);
+			i++;
+			if (i > 3)
+				i = 0;
+		}
+		printk("\bdone (%li pages freed)\n", pages);
+		msleep_interruptible(200);
 	}
-	printk("\bdone (%li pages freed)\n", pages);
 }
 
-
 static inline void platform_finish(void)
 {
 	if (pm_disk_mode == PM_DISK_PLATFORM) {

[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux