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

Re: 2.1.91pre2 death by swapping.




> 
> Hi,
>  Well, shortly after I wrote my previous message, 2.1.91pre2 died a nasty
>  death. This system has 64mb RAM and was lightly loaded, the main thing
>  it was doing was playing a MOD. It started to swap out of the blue, the
>  mod started skipping more and more, and eventually stopped playing
>  entiredly while the machine thrashed. It continued thrashing for 10-15
>  minutes, every program totally stopped while this was happening. Using
>  the magic sysrq show memory option, I could see that the free pages
>  number was fluctuating between 10200 and 10250 or so. Eventually I rebooted
>  back to 2.1.90 with the magic sysrq.
> -Myrdraal


I've found the following piece of code in the 2.1.91pre2:

--------------------------------------------------------------------------
--- v2.1.90/linux/mm/filemap.c	Tue Mar 10 10:03:36 1998
+++ linux/mm/filemap.c	Wed Mar 25 13:13:36 1998
@@ -150,6 +150,10 @@
 				}
 				tmp = tmp->b_this_page;
 			} while (tmp != bh);
+
+			/* Refuse to swap out all buffer pages */
+			if ((buffermem >> PAGE_SHIFT) * 100 > (buffer_mem.min_percent * num_physpages))
+				goto next;
 		}
 
 		/* We can't throw away shared pages, but we do mark
--------------------------------------------------------------------------

IMHO the `>' should be a `<', shouldn't it?

... and the better place fur such a statement is IMHO
linux/mm/vmscan.c:do_try_to_free_page() which would avoid the shrink_mmap()
and its do-while-loop.


          Werner