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

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

 



Hi!

> > > > > > 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
> > > 
> > > Thanks Pavel, this hack works.
> > > ..
> > > Freeing memory...  ^Hdone (0 pages freed)
> > > Freeing memory...  ^H-^Hdone (4636 pages freed)
> > > Freeing memory...  ^Hdone (0 pages freed)
> > > Freeing memory...  ^H-^Hdone (914 pages freed)
> > > Freeing memory...  ^Hdone (0 pages freed)
> > > Freezing CPUs (at 0)...ok
> > > 
> > > Any mm guru know how to fix this?
> > 
> > Andrew, can you help? It seems free_some_memory does not really free
> > all reclaimable memory in recent kernels. In fact, it likes to free
> > nothing on first invocations....
> 
> Actually, on (my) x86-64 it seems to work.  It frees even more memory than
> I'd like it to (there's 80-90% of RAM free after it's finished). ;-)
> 
> If I had to guess, I'd say the problem is related to PAGE_SIZE !=
>4096.

No, I see it on i386, too. Try patch below; if it frees some after
first pass, you have that problem, too.

								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) {
> > > 
> > 
> > > _______________________________________________
> > > linux-pm mailing list
> > > [email protected]
> > > http://lists.osdl.org/mailman/listinfo/linux-pm
> > 
> > 
> > -- 
> > 
> 

-- 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux